Postřehy ohledně architektury JavaScriptu

balki

Re:Postřehy ohledně architektury JavaScriptu
« Odpověď #285 kdy: 30. 08. 2016, 14:19:34 »
Objekt ktory nie je inicializovany (tj nevalidny) by sa nemal pouzivat. Spajat instanciaciu s inicializaciou je zarabanie si na problemy.
Objekt který je nevalidní by neměl v prvé řadě vůbec existovat.

Naopak. Možnost něčeho takového, tedy oddělovat vytvoření a inicializace objektu je zadělávání si na problémy.

Objekty v nevalidnych stavoch existuju uplne bezne aj po inicializacii v konstruktore. (Nieco sa nepodari tak ako ma, kvoli vonkajsim vplyvom) Taky objekt je mozne zahodit a spustit znova drahy proces instanciacie, alebo je mozne ho znova nakonfigurovat a pustit init metodu.  Od smalltalku to tak funguje ze je oddelena instanciacia a inicializacia.

Zavrhov

Požádal bych o lepší argument.

Nekvalitní kód se také objevuje zcela běžně. A důvodem není to, že by to nešlo napsal lépe, ale pouze takové přízemní věci, jako nezkušenost, legaci, good-enought. Domníval jsem se, že se tu bavíme o tom, co je správně, ne o tom, jak se to dá zbastlit.

Pokud se konstruktoru nepodaří vytvořit validní objekt, tak chcípne. Volající má na starost sehnat všechno co konstruktor potřebuje/deklaruje (vnější vliv) aby byl spokojený.

Jestli budeš vytvářet drahý konstruktor, nebo drahou inicializaci, to máš fuk. Toto je obyčejný cargocult. Pokud narážíš na C++, nebo Javu a na alokaci paměti, když se nepovede inicializace, tak máš úplně jiné starosti, než honit bajtíky.

Pohledem do historie můžeme pozorovat, že konstruktor byl vymyšlen právě proto, aby se část alokace (malloc) sloučila s částí inicializací. Nevím, proč bych v moderních jazycích měl psát hůř než v plainC.

Ok, nesuhlasim, zrejme som narazil na "praktika". Radsej necham diskusiu tak, lebo s tymto sa uz neda ani polemizovat.


gamer

Re:Postřehy ohledně architektury JavaScriptu
« Odpověď #286 kdy: 30. 08. 2016, 14:21:42 »
Píší imperativně, protože mají představu, že jim to zvedne výkon toho enginu. Tak jim to necháme, ne?

Máš docela zmatek v pojmech, imperatní programování se s objektovým vůbec nevylučuje, naopak. Chtěl jsi napsat procedurální, místo imperativní, že? Ale i tak se mýlíš, procedurální kód to není.

gamer

Re:Postřehy ohledně architektury JavaScriptu
« Odpověď #287 kdy: 30. 08. 2016, 14:26:48 »
Autory hernych enginov nepisu objektovo, lebo je to pomale. Preto sa uz nejake to destrocie razi multiparadigmovy vyvoj ako "zlata stredna cesta".  Tym sa zaoberal Jim Coplien https://www.amazon.com/Multi-Paradigm-Design-C-James-Coplien/dp/0201824671 (teraz robi scrum.)

Ale prosímtě? Herní enginy samozřejmě objektové jsou, jak navenek, tak uvnitř. Nicméně pokud chceš řešit definici toho "jediného správného (TM) objektového programování" podle balkiho, Kita, já nevím koho... tak z toho mě prosím vynech, na nesmysly nemám čas.

Kit

Re:Postřehy ohledně architektury JavaScriptu
« Odpověď #288 kdy: 30. 08. 2016, 14:27:18 »
Píší imperativně, protože mají představu, že jim to zvedne výkon toho enginu. Tak jim to necháme, ne?

Máš docela zmatek v pojmech, imperatní programování se s objektovým vůbec nevylučuje, naopak. Chtěl jsi napsat procedurální, místo imperativní, že? Ale i tak se mýlíš, procedurální kód to není.

Pracují s objekty jako se strukturou, což je typické právě pro procedurální programování. Gettery a settery zde slouží pouze jako maska, aby to nebylo vidět na první pohled.

balki

Re:Postřehy ohledně architektury JavaScriptu
« Odpověď #289 kdy: 30. 08. 2016, 14:28:43 »
Autory hernych enginov nepisu objektovo, lebo je to pomale. Preto sa uz nejake to destrocie razi multiparadigmovy vyvoj ako "zlata stredna cesta".  Tym sa zaoberal Jim Coplien https://www.amazon.com/Multi-Paradigm-Design-C-James-Coplien/dp/0201824671 (teraz robi scrum.)

Ale prosímtě? Herní enginy samozřejmě objektové jsou, jak navenek, tak uvnitř. Nicméně pokud chceš řešit definici toho "jediného správného (TM) objektového programování" podle balkiho, Kita, já nevím koho... tak z toho mě prosím vynech, na nesmysly nemám čas.

Ide o to, ze byvaju multiparadigmove :) Ale ok, neberiem vam to, myslite si bars aj blbosti.


Kit

Re:Postřehy ohledně architektury JavaScriptu
« Odpověď #290 kdy: 30. 08. 2016, 14:31:58 »
Příště si raději vyber příklad, který je napsán objektově.

Aha, takže odtud vítr vane... Oni vlasně autoři herních enginů nepíšou objektově. Chybí jim Kit, který jim to správné "objektové" programování vysvětlí...

Autory hernych enginov nepisu objektovo, lebo je to pomale. Preto sa uz nejake to destrocie razi multiparadigmovy vyvoj ako "zlata stredna cesta".  Tym sa zaoberal Jim Coplien https://www.amazon.com/Multi-Paradigm-Design-C-James-Coplien/dp/0201824671 (teraz robi scrum.)

Objektové programování není pomalé. Spíš je pomalé nadužívání getterů a setterů. Pokud by byly privátní, tak by to překladač optimalizoval expanzí, ale veřejné se moc optimalizovat nedají.

gamer

Re:Postřehy ohledně architektury JavaScriptu
« Odpověď #291 kdy: 30. 08. 2016, 14:33:55 »
Pracují s objekty jako se strukturou, což je typické právě pro procedurální programování. Gettery a settery zde slouží pouze jako maska, aby to nebylo vidět na první pohled.

Ne nepracují s objekty jako se strukturou, máš tam dědičnost a pozdní vazbu logicky použité. K tomu navíc tam máš gettery a settery, proti kterým vedeš nějakou tvoji osobní válku a automaticky to řadíš do kolonky "procedurální podle Kita". Mysli si to dál, je to tvůj boj.

balki

Re:Postřehy ohledně architektury JavaScriptu
« Odpověď #292 kdy: 30. 08. 2016, 14:34:30 »
Píší imperativně, protože mají představu, že jim to zvedne výkon toho enginu. Tak jim to necháme, ne?

Máš docela zmatek v pojmech, imperatní programování se s objektovým vůbec nevylučuje, naopak. Chtěl jsi napsat procedurální, místo imperativní, že? Ale i tak se mýlíš, procedurální kód to není.

Pracují s objekty jako se strukturou, což je typické právě pro procedurální programování. Gettery a settery zde slouží pouze jako maska, aby to nebylo vidět na první pohled.


Su dva pristupy
- imperativne
- deklarativne

V imperativnom pises jednotlive kroky.

V deklarativnom skor pises, ako by mali data vyzerat pred a po operacii, bez toho aby si presne hovoril, co sa ma presne vykonat.

OOP napodiv byva vacsinou imperativne. Ale moze byt aj deklarativne.

balki

Re:Postřehy ohledně architektury JavaScriptu
« Odpověď #293 kdy: 30. 08. 2016, 14:35:52 »
Příště si raději vyber příklad, který je napsán objektově.

Aha, takže odtud vítr vane... Oni vlasně autoři herních enginů nepíšou objektově. Chybí jim Kit, který jim to správné "objektové" programování vysvětlí...

Autory hernych enginov nepisu objektovo, lebo je to pomale. Preto sa uz nejake to destrocie razi multiparadigmovy vyvoj ako "zlata stredna cesta".  Tym sa zaoberal Jim Coplien https://www.amazon.com/Multi-Paradigm-Design-C-James-Coplien/dp/0201824671 (teraz robi scrum.)

Objektové programování není pomalé. Spíš je pomalé nadužívání getterů a setterů. Pokud by byly privátní, tak by to překladač optimalizoval expanzí, ale veřejné se moc optimalizovat nedají.

Najpomalsia byva vzdy instanciacia. Volania metod byvaju prdy v hurikane.

Kit

Re:Postřehy ohledně architektury JavaScriptu
« Odpověď #294 kdy: 30. 08. 2016, 14:43:53 »
Najpomalsia byva vzdy instanciacia. Volania metod byvaju prdy v hurikane.

Instanciaci tady neřešíme a když je těch prdů příliš mnoho, tak dokáží i hurikán otočit...

gamer

Re:Postřehy ohledně architektury JavaScriptu
« Odpověď #295 kdy: 30. 08. 2016, 14:55:03 »
Instanciaci tady neřešíme a když je těch prdů příliš mnoho, tak dokáží i hurikán otočit...
Blbost, gettery bývají inlinované případně devirtualizované, dělá to překladač, přeloží se to typicky na jednu instrukci, nic rychlejšího nevymyslíš. I proto se to používá, je to prostě rychlé...

balki

Re:Postřehy ohledně architektury JavaScriptu
« Odpověď #296 kdy: 30. 08. 2016, 14:57:56 »
Najpomalsia byva vzdy instanciacia. Volania metod byvaju prdy v hurikane.

Instanciaci tady neřešíme a když je těch prdů příliš mnoho, tak dokáží i hurikán otočit...

Ked neriesime instanciaciu, dalsim problemom byvaju vstupno-vystupne operacie, tie brzdia najviac. Preto je dobre s nimi pracu co najviac optimalizovat.

Kit

Re:Postřehy ohledně architektury JavaScriptu
« Odpověď #297 kdy: 30. 08. 2016, 15:00:47 »
Instanciaci tady neřešíme a když je těch prdů příliš mnoho, tak dokáží i hurikán otočit...
Blbost, gettery bývají inlinované případně devirtualizované, dělá to překladač, přeloží se to typicky na jednu instrukci, nic rychlejšího nevymyslíš. I proto se to používá, je to prostě rychlé...

To platí jen pro privátní gettery/settery.

v

Re:Postřehy ohledně architektury JavaScriptu
« Odpověď #298 kdy: 30. 08. 2016, 15:04:26 »
Instanciaci tady neřešíme a když je těch prdů příliš mnoho, tak dokáží i hurikán otočit...
Blbost, gettery bývají inlinované případně devirtualizované, dělá to překladač, přeloží se to typicky na jednu instrukci, nic rychlejšího nevymyslíš. I proto se to používá, je to prostě rychlé...

To platí jen pro privátní gettery/settery.
o jakém jazyce mluvíte?

gamer

Re:Postřehy ohledně architektury JavaScriptu
« Odpověď #299 kdy: 30. 08. 2016, 15:09:44 »
To platí jen pro privátní gettery/settery.
Mýliš se, platí to i pro public gettery a settery. Po pravdě Kite, mě to už moc nebaví. Nemáš moc představu o časové složitosti, nevíš na jaký kód co vede, ale jedeš si svoji mantru každý gettery/setter je špatný. Pro mě za mě si to dělej jak chceš, ale necpi to prosím ostatním.