Co si myslíte o OOP?

Kit

Re:Co si myslíte o OOP?
« Odpověď #1140 kdy: 21. 01. 2019, 17:03:28 »
již před válkou jsem poukazoval na to, že část lidí tu debatuje o pascalu (nebo i C ...) a část o teorii typů (haskell apod.)
No a to je prave ten problem. Staticky typ je staticky typ v kazdem z techto jazyku. A pokud to neni upresneno, nelze ignorovat mainstramove jazyky se statickymi typy, tedy C, C++, Java a C#.
Ne. Problém je v tom, že C a Pascal z pohledu typů dneska už nikoho nezajímají. Takže snaha používat to jako argument je buď snaha o matení, nebo neznalost. Vyber si.

Máš snad něco proti typům v Pascalu? Co třeba typy ve Fortranu? Lepší?


v

Re:Co si myslíte o OOP?
« Odpověď #1141 kdy: 21. 01. 2019, 17:04:13 »
Myslim ze jsem tu presvedcive dokazal, ze vetsinu veci, prisuzovanych statickym typum, lze dosahnout i jinak, bez statatickych typu.
IMHO ne

Kadet

Re:Co si myslíte o OOP?
« Odpověď #1142 kdy: 21. 01. 2019, 17:04:44 »
již před válkou jsem poukazoval na to, že část lidí tu debatuje o pascalu (nebo i C ...) a část o teorii typů (haskell apod.)
Tak tak. Těšil jsem se na debaty o polymorfismu a zapouzdřování, které by mohly vyústit v debaty o OO návrhu. Tešil jsem se jak tady budou lítat pojmy jako factory design pattern, dependency injection. Těšil jsem se na poučky o SRP a vůbec o celém SOLID. A místo toho se tu řeší datové typy. :(

To by mohla byt pekna debata.

Napr. zapouzdreni je vlastnost modulovyho systemu. Ktery si lidi casto pletou s objektovym. Nebo je to treba taky totez.

Polymorfismus je zalezitost typovyho systemu. V dynamickym jazyku me tohle netrapi, ve statickym musim mit po ruce interfacy nebo abstraktni tridy.

OO navrh je staticky pohled na relace mezi objekty. Taky znamo jako ER diagram.

Design patterny tohohle typu jsou take znamy jako 'chybejici vlastnost jazyka'. Tj. napr. namisto factory patternu muzu pouzit proste obycejnou funkci.

Viz http://wiki.c2.com/?AreDesignPatternsMissingLanguageFeatures

Dependency injection znamena 'posli mi objekt jako parametr, at si ho nemusim vytvaret sam'.

Popravde benefit pouzivani principu SOLID jsem nikdy moc nepochopi, treba mi to nekdo vysvetli na prikladu. Stejne tak jsem nikdy neprisel na to, proc navrhovat aplikace timto komplexnim zpusobem co pouziva milion hierarchii a rozhrani. Podle me je takovych systemu poskrovnu, napr. operacni system nebo GUI.

Ocekavam konstruktivni debatu. Trolly ignoruju.

Dor

Re:Co si myslíte o OOP?
« Odpověď #1143 kdy: 21. 01. 2019, 17:04:50 »
již před válkou jsem poukazoval na to, že část lidí tu debatuje o pascalu (nebo i C ...) a část o teorii typů (haskell apod.)
Tak tak. Těšil jsem se na debaty o polymorfismu a zapouzdřování, které by mohly vyústit v debaty o OO návrhu. Tešil jsem se jak tady budou lítat pojmy jako factory design pattern, dependency injection. Těšil jsem se na poučky o SRP a vůbec o celém SOLID.
v tématu, které začíná slovy  "Je potreba to (OOP) vsade pretlacat?"?
Celé tohle vlákno mi připomnělo vyprávění mého učitele angličtiny (rodilý mluvčí s pedagogickým vzděláním), jak se s ním jeden jeho žák (taky programátor) hádal o gramatice. Učitel vůbec nechápal a řečnicky se mě tázal, kde ten člověk bere to sebevědomí. Tak jsem jen pokrčil rameny a řekl: "programmer" :D Obor, kdy si člověk tak 5x až 20x za kariéru řekne: "Před tím jsem nevěděl nic, ale teď už jsem konečně programátor."

operator

Re:Co si myslíte o OOP?
« Odpověď #1144 kdy: 21. 01. 2019, 17:05:58 »
již před válkou jsem poukazoval na to, že část lidí tu debatuje o pascalu (nebo i C ...) a část o teorii typů (haskell apod.)
No a to je prave ten problem. Staticky typ je staticky typ v kazdem z techto jazyku. A pokud to neni upresneno, nelze ignorovat mainstramove jazyky se statickymi typy, tedy C, C++, Java a C#.

Ne. Problém je v tom, že C a Pascal z pohledu typů dneska už nikoho nezajímají. Takže snaha používat to jako argument je buď snaha o matení, nebo neznalost. Vyber si.
Pascal uz asi nikoho nezajima, proto ho ani neuvadim. Jazyk C je ale siroce pouzivany, nenahraditelny a nenahrazeny. Programatori, kteri ho pouzivaji, se o jeho statickemu typovemu systemu nevyhnou. Neni to ani mateni, ani neznalost, ne z me strany.


operator

Re:Co si myslíte o OOP?
« Odpověď #1145 kdy: 21. 01. 2019, 17:07:34 »
Myslim ze jsem tu presvedcive dokazal, ze vetsinu veci, prisuzovanych statickym typum, lze dosahnout i jinak, bez statatickych typu.
IMHO ne
Imho jo, vcetne typove kontroly pred spustenim.

v

Re:Co si myslíte o OOP?
« Odpověď #1146 kdy: 21. 01. 2019, 17:08:47 »
Myslim ze jsem tu presvedcive dokazal, ze vetsinu veci, prisuzovanych statickym typum, lze dosahnout i jinak, bez statatickych typu.
IMHO ne
Imho jo, vcetne typove kontroly pred spustenim.
typová kontrola před spuštěním je statická typová kontrola

operator

Re:Co si myslíte o OOP?
« Odpověď #1147 kdy: 21. 01. 2019, 17:10:59 »
Myslim ze jsem tu presvedcive dokazal, ze vetsinu veci, prisuzovanych statickym typum, lze dosahnout i jinak, bez statatickych typu.
Myslím si, že pokud člověk tématu nerozumí, měl by k příspěvkům přistupovat velmi, velmi opatrně.
Tak se toho drz.

Kit

Re:Co si myslíte o OOP?
« Odpověď #1148 kdy: 21. 01. 2019, 17:12:03 »
Ja vedel ze to najdu, zajimalo me, kdo s touto vtipnou tezi prisel. A citoval jsem spatne, nebylo to v podstate, ale obecne.

... největší rozdíl vidím v dokumentaci.
Mě teda oslovilo compile time. Když konečně přesvědčím kompilátor, aby to přeložil, tak mám obecně hotovo. Zbejvaj sémantické chyby. Zatímco u dynamického jazyka furt něco padá.

Tam patřilo spíš "Zatímco u dynamického jazyka mi furt něco padá." Už jsem psal, že dynamické typování není pro každého. Je nutné si nejen držet určitou kázeň, ale i pokrýt jednotku testy.

BoneFlute nám zatím nevysvětlil, co mu v dynamicky typovaných jazycích neustále padá. Zřejmě dělá dobře, že se drží staticky typovaných jazyků.

operator

Re:Co si myslíte o OOP?
« Odpověď #1149 kdy: 21. 01. 2019, 17:14:35 »
Myslim ze jsem tu presvedcive dokazal, ze vetsinu veci, prisuzovanych statickym typum, lze dosahnout i jinak, bez statatickych typu.
IMHO ne
Imho jo, vcetne typove kontroly pred spustenim.
typová kontrola před spuštěním je statická typová kontrola
To nerozporuji, ale nepotrebuji k ni staticke typy.

v

Re:Co si myslíte o OOP?
« Odpověď #1150 kdy: 21. 01. 2019, 17:15:17 »
Ja vedel ze to najdu, zajimalo me, kdo s touto vtipnou tezi prisel. A citoval jsem spatne, nebylo to v podstate, ale obecne.

... největší rozdíl vidím v dokumentaci.
Mě teda oslovilo compile time. Když konečně přesvědčím kompilátor, aby to přeložil, tak mám obecně hotovo. Zbejvaj sémantické chyby. Zatímco u dynamického jazyka furt něco padá.

Tam patřilo spíš "Zatímco u dynamického jazyka mi furt něco padá." Už jsem psal, že dynamické typování není pro každého. Je nutné si nejen držet určitou kázeň, ale i pokrýt jednotku testy.
řekl byste tedy, že programování v dynamických jazycích (python, js) je náročnější než ve statických (haskell, pascal)?

BoneFlute

  • *****
  • 1 726
    • Zobrazit profil
Re:Co si myslíte o OOP?
« Odpověď #1151 kdy: 21. 01. 2019, 17:16:03 »
Dependency injection znamena 'posli mi objekt jako parametr, at si ho nemusim vytvaret sam'.

Rozlišil bych DI jako princip, který klade důraz na popisnost. Tedy
1/ objekt se veřejně hlásí ke svým závislostem
2/ nic si pokoutně nevytváří, to znamená méně nečekaných side-effektů
3/ IMHO to dost pomáhá tomu, aby se udržoval rozumný počet závislostí. Nevzdory obavám začátečníků, málokdy se stane, že by objekt měl "nepříjemně" mnoho závislostí.
4/ Hodně to pomáhá refactoringu. Vzhledem k tomu, že konstruktor obvykle není součástí žádného rozhraní, tak přidat nebo odebrat nějakou závislost je velice levné (občas to trochu komplikují testy).

Na druhou stranu tu máme DI kontainer, který je zase něco úplně jiného. Ten bejvá naopak plnej magie, ale je to velice pohodlná a návyková záležitost. A krom situace, kdy jsem potřeboval kombinovat dva kontainery dohromady jsem zatím nijak zvlášť nenarazil (zkušenosti v tomto vítány).
Taky mám zkušenost, že DIC v typovaném jazyce je subjektivně příjemnější, než v netypovaném (python, javascript).

v

Re:Co si myslíte o OOP?
« Odpověď #1152 kdy: 21. 01. 2019, 17:16:25 »
typová kontrola před spuštěním je statická typová kontrola
To nerozporuji, ale nepotrebuji k ni staticke typy.
to mi vůbec nedává smysl, asi radší půjdu programovat

operator

Re:Co si myslíte o OOP?
« Odpověď #1153 kdy: 21. 01. 2019, 17:18:05 »
Ja vedel ze to najdu, zajimalo me, kdo s touto vtipnou tezi prisel. A citoval jsem spatne, nebylo to v podstate, ale obecne.

... největší rozdíl vidím v dokumentaci.
Mě teda oslovilo compile time. Když konečně přesvědčím kompilátor, aby to přeložil, tak mám obecně hotovo. Zbejvaj sémantické chyby. Zatímco u dynamického jazyka furt něco padá.

Tam patřilo spíš "Zatímco u dynamického jazyka mi furt něco padá." Už jsem psal, že dynamické typování není pro každého. Je nutné si nejen držet určitou kázeň, ale i pokrýt jednotku testy.

BoneFlute nám zatím nevysvětlil, co mu v dynamicky typovaných jazycích neustále padá. Zřejmě dělá dobře, že se drží staticky typovaných jazyků.
A hlavne, i kdyz pada, tak jen na semanticke chyby, a ty BoneFlute obecne nepocita :-).

Tudiz tvrdim, ze je tu sorta lidi verici ve staticke typy a to, ze kdyz se jim podari prelozit kod se statickymi typy, maji obecne hotovo.

Kit

Re:Co si myslíte o OOP?
« Odpověď #1154 kdy: 21. 01. 2019, 17:19:57 »
Popravde benefit pouzivani principu SOLID jsem nikdy moc nepochopi, treba mi to nekdo vysvetli na prikladu. Stejne tak jsem nikdy neprisel na to, proc navrhovat aplikace timto komplexnim zpusobem co pouziva milion hierarchii a rozhrani. Podle me je takovych systemu poskrovnu, napr. operacni system nebo GUI.

SOLID obsahuje návody, jak zjednodušit aplikaci. Pokud ho někdo chybně pochopí, tak si naopak tu aplikaci zkomplikuje.