Co si myslíte o OOP?

BoneFlute

  • *****
  • 1 737
    • Zobrazit profil
Re:Co si myslíte o OOP?
« Odpověď #210 kdy: 31. 12. 2018, 00:04:23 »
V OOP je dynamické typování opravdu výhodnější - kvůli polymorfismu a velmi pozdní vazbě.
Nenašel jsem situaci, kdy by pozdní vazba bránila typům. Můžeš uvést příklad?

Jinými slovy, zatímco v klasickém přístupu chci pole integerů a případ, kdy bych chtěl pole nějakých obecných prvků, je více či méně krkolomný, u objektového přístupu chci primárně pole nějakých obecných prvků a když budu chtít, aby tam byly jen integery, budu si to muset nějak (více či méně krkolomně) pohlídat.
Nevidím důvod, proč by ty obecné prvky neměli mít patřičný typ. Mám komponentu, do které chci vkládat různé widgety. Tak bude dozajisté užitečné, když mi to tam pustí jen widgety (input, textarea, datepicker, timepicker, calendar, grid, form, ...), a integer nikoliv.


Kit

Re:Co si myslíte o OOP?
« Odpověď #211 kdy: 31. 12. 2018, 00:07:02 »
Statické typování se hodí pro strukturované programování, ale já raději používám OOP, ve kterém je lepší typovat dynamicky.
V čem je dynamické typování, či případně netypování, užitečné?

Zeptám se opačně: V čem je užitečné statické typování? Že je typ ověřen už při překladu? To přece testy dovedou také a to mnohem lépe. Kromě toho jazyků s kvalitním staticky typováním je poměrně málo, například Java mezi ně nepatří. Vždyť u ní si ani nemohu odvodit vlastní typ!

Nepleť si dynamické typování s netypováním. Je v tom docela zásadní rozdíl. U dynamického typování si ten typ každá proměnná nese s sebou a normálně se s ním pracuje. Reflexe je u dynamického typování naprosto běžným nástrojem. Odpadají také problémy s používáním přetěžování.

Kit

Re:Co si myslíte o OOP?
« Odpověď #212 kdy: 31. 12. 2018, 00:11:32 »
V OOP je dynamické typování opravdu výhodnější - kvůli polymorfismu a velmi pozdní vazbě.
Nenašel jsem situaci, kdy by pozdní vazba bránila typům. Můžeš uvést příklad?

Řeč je o velmi pozdní vazbě, kterou staticky typované jazyky prakticky neznají.

Kit

Re:Co si myslíte o OOP?
« Odpověď #213 kdy: 31. 12. 2018, 00:17:06 »
Nevidím důvod, proč by ty obecné prvky neměli mít patřičný typ. Mám komponentu, do které chci vkládat různé widgety. Tak bude dozajisté užitečné, když mi to tam pustí jen widgety (input, textarea, datepicker, timepicker, calendar, grid, form, ...), a integer nikoliv.

Však ty obecné prvky mají patřičný dynamický typ. Proč bych měl mezi widgety strkat integer?

anonym

Re:Co si myslíte o OOP?
« Odpověď #214 kdy: 31. 12. 2018, 00:25:16 »
Ajeje, uz tu zacina akademicka debata. Jeste ze to nemusim resit, asi se budu drzet Javy a jestli mi nekdo bude tvrdit, ze to neni tak vhodne na OOP, tak se budu smat, protoze kdo rikal, ze na tom zalezi, hlavne, ze se prace odvede dobre.

Ja jsem vlastne docela rad, ze jak Java, tak C# nejsou Kit-compliant OOP programovaci jazyky :D

Hosi, reknu vam to takhle a usetrim vam praci a dohadovani. Nevymyslejte bejkarny s OOP a podivejte se, jak to vypada v Jave a C# a jak se to pouziva v praxi, a toho se drzte, protoze nic lepsiho vymysleneho nebylo 8) A jestli to je Kit-compliant OOP je vec uplne druhorada, protoze bavime se o tom, co je lepsi a co horsi, o to jde predevsim  8)


Kit

Re:Co si myslíte o OOP?
« Odpověď #215 kdy: 31. 12. 2018, 00:32:34 »
A jestli to je Kit-compliant OOP je vec uplne druhorada, protoze bavime se o tom, co je lepsi a co horsi, o to jde predevsim  8)

Za kvalitní objektový jazyk považuji Python a kousek za ním PHP. Java ani C# nevede programátory k OOP, ale ke strukturovanému programování. O pár stránek zpět bylo propagováno oddělení funkcí od datových struktur, což je přesně proti myšlence OOP, tedy že metody jsou co nejblíž k datům, se kterými pracují.

BoneFlute

  • *****
  • 1 737
    • Zobrazit profil
Re:Co si myslíte o OOP?
« Odpověď #216 kdy: 31. 12. 2018, 00:37:16 »
O pár stránek zpět bylo propagováno oddělení funkcí od datových struktur, což je přesně proti myšlence OOP, tedy že metody jsou co nejblíž k datům, se kterými pracují.

OOP je o umístění stavu do objektu a o polymorfismu. To co popisuješ není dobrá definice. Vejdou se do toho snad všechny funkcionální jazyky. A možná i mnoho dalších neOOP.

BoneFlute

  • *****
  • 1 737
    • Zobrazit profil
Re:Co si myslíte o OOP?
« Odpověď #217 kdy: 31. 12. 2018, 00:40:35 »
Ajeje, uz tu zacina akademicka debata. Jeste ze to nemusim resit, asi se budu drzet Javy a jestli mi nekdo bude tvrdit, ze to neni tak vhodne na OOP, tak se budu smat, protoze kdo rikal, ze na tom zalezi, hlavne, ze se prace odvede dobre.

Ja jsem vlastne docela rad, ze jak Java, tak C# nejsou Kit-compliant OOP programovaci jazyky :D

Hosi, reknu vam to takhle a usetrim vam praci a dohadovani. Nevymyslejte bejkarny s OOP a podivejte se, jak to vypada v Jave a C# a jak se to pouziva v praxi, a toho se drzte, protoze nic lepsiho vymysleneho nebylo 8) A jestli to je Kit-compliant OOP je vec uplne druhorada, protoze bavime se o tom, co je lepsi a co horsi, o to jde predevsim  8)

Tak snad nemusí být hned tak zle. Mě to jen připomělo, že občas narážím na hlasy, které obhajují dynamické typování. A já bych si někdy opravdu docela rád vyslechl v čem je to užitečné. (Čímž díky @Kiwi-mu za pokus o vysvětlení, ačkoliv to zatím nestačilo :-) )

BaldSlattery

Re:Co si myslíte o OOP?
« Odpověď #218 kdy: 31. 12. 2018, 00:45:52 »
Takže většina toho, čemu říkáme citáty, zvláště ty latinské, vlastně podle tebe vůbec citáty nejsou. Prosím, držme se obecně přijímaného významu slov a nevymýšlej si pro ně své vlastní definice. Ale nešť - tak jsem přeparafrázoval Kayovy názory
Souhlas, tak si nevymýšlej nesmysly. Definice: “Citát je doslovné znění z díla spisovatele, anebo doslovně zopakovaný výrok. [...] Při citování se uvádí jak autor, tak i dílo v kterém se výrok objevil.” Tohle jsi měl mít na ZŠ (předpokládám, žes ji úspěšně ukončil), asi to fakt jde s naším školstvím od 5 k 0.

BaldSlattery

Re:Co si myslíte o OOP?
« Odpověď #219 kdy: 31. 12. 2018, 00:50:29 »
Ajeje, uz tu zacina akademicka debata.
  Begun the language wars have  ;D

Kadet

Re:Co si myslíte o OOP?
« Odpověď #220 kdy: 31. 12. 2018, 00:50:55 »
k statickymu typovani.

Jediny, kdy jsem ho pouzil, bylo na vytvoreni nejaky vysoce optimalizovany funkce, nejakyho tight loopu, kterej jsem pak stejne volal z Pythonu.

Dobrej priklad kde staticky typovani naprosto selhava jsou silne variabilni datovy struktury. Proste prace s json daty. To co mi posilaji nektery backend apj jsou jsony o deseti urovnich a skutecne nemam silu na to mapovat tohlr monstrum na nejakej muj class nebo haskell type.

Pokud by mi nekdo doporucil pouzit dynamickej typ Node (string -> string|int|list|Node), tak je to akorat pouziti dynamickyho typovani, akorat v jazyce, kterej na to bude daleko hur stavenej, nez jazyk vytvorenej pro praci s dicts.

anonym

Re:Co si myslíte o OOP?
« Odpověď #221 kdy: 31. 12. 2018, 00:53:21 »
A jestli to je Kit-compliant OOP je vec uplne druhorada, protoze bavime se o tom, co je lepsi a co horsi, o to jde predevsim  8)

Za kvalitní objektový jazyk považuji Python a kousek za ním PHP. Java ani C# nevede programátory k OOP, ale ke strukturovanému programování. O pár stránek zpět bylo propagováno oddělení funkcí od datových struktur, což je přesně proti myšlence OOP, tedy že metody jsou co nejblíž k datům, se kterými pracují.

Dochazi ti vubec ta vec, ze dpc co ma jako byt, ze to vede ke strukturovanemu programovani a ne k OOP? Protoze ja dam ruku do ohne, ze tohle je PRAVZE UMYSL a ze je to SAKRA LEPSI. Chapes ty vubec, ze mas nejakou svou zarytou premisu, ze kdyz to neni ciste OOP, tak je to spatne? A kde jsu tu premisu jako vzal? Protoze me prijde, ze je tady jasny trend, ze od OOP, a myslim tim ted to puritanske paradigma, se ustupuje uz nekolik let jak v Jave, tak v C#. Tomu se rika stredni cesta, jestlis o tom nekdy neslysel. A dam vsadil bych se ze proto, ze se lidi sw inzenyri napric celou industry vic a vic shodli, ze to proste je takhle LEPSI. A kdyz je to takhle LEPSI, tak je to proste LEPSI.

BoneFlute

  • *****
  • 1 737
    • Zobrazit profil
Re:Co si myslíte o OOP?
« Odpověď #222 kdy: 31. 12. 2018, 01:24:32 »
Dobrej priklad kde staticky typovani naprosto selhava jsou silne variabilni datovy struktury. Proste prace s json daty. To co mi posilaji nektery backend apj jsou jsony o deseti urovnich a skutecne nemam silu na to mapovat tohlr monstrum na nejakej muj class nebo haskell type.
No a co pak s tím děláš? Máš strukturu struktury struktur. A to by mělo mít nějaký význam, ne? Třeba a.b.c je klíč pro nějakou konkrétní konkfiguraci (třeba). Takže to potom čekuješ ručně?

Můžeš prosím rozvést to "naprosto selhává"? Tak trochu v tom čuchám "nechce se mi to definovat, tak to nechám vágní, a řešit to budu potom...".

Kadet

Re:Co si myslíte o OOP?
« Odpověď #223 kdy: 31. 12. 2018, 01:31:56 »
Dobrej priklad kde staticky typovani naprosto selhava jsou silne variabilni datovy struktury. Proste prace s json daty. To co mi posilaji nektery backend apj jsou jsony o deseti urovnich a skutecne nemam silu na to mapovat tohlr monstrum na nejakej muj class nebo haskell type.
No a co pak s tím děláš? Máš strukturu struktury struktur. A to by mělo mít nějaký význam, ne? Třeba a.b.c je klíč pro nějakou konkrétní konkfiguraci (třeba). Takže to potom čekuješ ručně?

Můžeš prosím rozvést to "naprosto selhává"? Tak trochu v tom čuchám "nechce se mi to definovat, tak to nechám vágní, a řešit to budu potom...".

Chci z jsonu ziskat a.b.c

1. nechapu proc bych mel definovat typ nekolika urovnovyho jsonu
2. pokud to nebudu typovat ale budu s tim pracovat jako s dynamickym typem, pak mi statickej jazyk nijak nepomoh. naopak mi to zneprijemnil hloupyma hlaska a pri kompilaci

BoneFlute

  • *****
  • 1 737
    • Zobrazit profil
Re:Co si myslíte o OOP?
« Odpověď #224 kdy: 31. 12. 2018, 01:51:55 »
Dobrej priklad kde staticky typovani naprosto selhava jsou silne variabilni datovy struktury. Proste prace s json daty. To co mi posilaji nektery backend apj jsou jsony o deseti urovnich a skutecne nemam silu na to mapovat tohlr monstrum na nejakej muj class nebo haskell type.
No a co pak s tím děláš? Máš strukturu struktury struktur. A to by mělo mít nějaký význam, ne? Třeba a.b.c je klíč pro nějakou konkrétní konkfiguraci (třeba). Takže to potom čekuješ ručně?

Můžeš prosím rozvést to "naprosto selhává"? Tak trochu v tom čuchám "nechce se mi to definovat, tak to nechám vágní, a řešit to budu potom...".

Chci z jsonu ziskat a.b.c

1. nechapu proc bych mel definovat typ nekolika urovnovyho jsonu
2. pokud to nebudu typovat ale budu s tim pracovat jako s dynamickym typem, pak mi statickej jazyk nijak nepomoh. naopak mi to zneprijemnil hloupyma hlaska a pri kompilaci

1. protože aby si dostal a.b.c a ne třeba a.b.x
2. to je tautologie. Já znám jen dvě možnosti: statickej typ= vím, že je tam a.b.c, dynamický typ: nevím nic. Tudíž, aby si to mohl zpracovat musíš tu informaci dodat dodatečně ručně. V čem ti dynamický typ pomohl?

Připomenu, já samozřejmě můžu ve statickém jazyce veškeré informace ignorovat, a pracovat jen s tuplem. (Sám si to zmiňoval "Node (string -> string|int|list|Node)"). Ale to pak znamená, jestli to chápu dobře, že jen a pouze chcetš si tu kontrolu dělat sám. To je veškerá výhoda dynamického typování? Možnost dělat si všechno ručně?

--
edit: jak si to po sobě čtu, možná by byl lepší výraz "záruka" na místo "vím". Protože já samozřejmě o té hodnotě můžu evidovat co je to za typ. Ale stroj s tím víc nepracuje.
« Poslední změna: 31. 12. 2018, 01:55:53 od BoneFlute »