Dědičnost dnes

gll

Re:Dědičnost dnes
« Odpověď #450 kdy: 27. 01. 2017, 12:05:11 »
Tak pokud monady povazujete za hazeni klacku pod nohy (monady jsou FP koncept), tak pak vam (se stejnou logikou) Java hazi klacky pod nohy tim, ze chce mit vsude ty proklate objekty ;D.

To je pravda. Bije to do očí, když se někdo snaží programovat v pythonu stejně jako v Javě a cpe vše do tříd. Některé problémy jsou z podstaty procedurální a OOP v nich k ničemu neposlouží.


SB

Re:Dědičnost dnes
« Odpověď #451 kdy: 27. 01. 2017, 12:07:15 »
...jak už bylo napsáno, v javě se musí používat objekty jenom protože OOP

Co je to za debilní logiku?! Java vznikla jako implementace (nebo alespoň snaha) OOP. Jestli vás sere OOP, je tu dost jiných jazyků.

javaman ()

Re:Dědičnost dnes
« Odpověď #452 kdy: 27. 01. 2017, 12:12:43 »
...Java hazi klacky pod nohy tim, ze chce mit vsude ty proklate objekty ;D.

Právě že nechce a právě že je to chybou, protože v okamžiku, kdy zavedete do jazyku nový koncept, počet interakcí s jinými koncepty násobně roste, takže např. v okamžiku, kdy necháte v rádobyobjektovém jazyku primitiva, musíte s nimi pracovat jinak než s objekty a ještě se vám objeví interakce primitivum-objekt a naopak!

Nikdo ti je nenutí. Ale až se podíváš na rychlost, tak je možná ještě rád někde použiješ. Taková low-level optimalizace.

Tak pokud monady povazujete za hazeni klacku pod nohy (monady jsou FP koncept), tak pak vam (se stejnou logikou) Java hazi klacky pod nohy tim, ze chce mit vsude ty proklate objekty ;D.

To je pravda. Bije to do očí, když se někdo snaží programovat v pythonu stejně jako v Javě a cpe vše do tříd. Některé problémy jsou z podstaty procedurální a OOP v nich k ničemu neposlouží.

Ne, vyšší abstrakce rozhodně nic nezhorší.

gll

Re:Dědičnost dnes
« Odpověď #453 kdy: 27. 01. 2017, 12:25:05 »
Ne, vyšší abstrakce rozhodně nic nezhorší.

zbytečná abstrakce škodí.

v

Re:Dědičnost dnes
« Odpověď #454 kdy: 27. 01. 2017, 12:26:13 »
...jak už bylo napsáno, v javě se musí používat objekty jenom protože OOP

Co je to za debilní logiku?! Java vznikla jako implementace (nebo alespoň snaha) OOP. Jestli vás sere OOP, je tu dost jiných jazyků.
to byla reakce na gll


gll

Re:Dědičnost dnes
« Odpověď #455 kdy: 27. 01. 2017, 12:34:32 »
jak už bylo napsáno, v javě se musí používat objekty jenom protože OOP

Ano musí, protože se ten jazyk snaží vnutit jeden styl. Programy jsou z podstaty procedurální. Všechna další omezení a abstrakce se hodí jen někde.

Doc9

Re:Dědičnost dnes
« Odpověď #456 kdy: 27. 01. 2017, 12:48:29 »
Dědičnost/OOP je jen nástroj. Pokud někdo neumí nástroj používat nebo ho používá na něco, k čemu není určen, není to chyba nástroje. Takový soustruh, se kterým jdou dělat kouzla, taky neumí použít každý a ani s ním nejde vykopat díra v zemi. Ale ani jedno z toho není chyba soustruhu.

javaman ()

Re:Dědičnost dnes
« Odpověď #457 kdy: 27. 01. 2017, 12:51:06 »
Dědičnost/OOP je jen nástroj. Pokud někdo neumí nástroj používat nebo ho používá na něco, k čemu není určen, není to chyba nástroje. Takový soustruh, se kterým jdou dělat kouzla, taky neumí použít každý a ani s ním nejde vykopat díra v zemi. Ale ani jedno z toho není chyba soustruhu.

Na co se teda OOP vůbec nehodí a použil bys něco jiného?

zboj

  • *****
  • 1 507
    • Zobrazit profil
    • E-mail
Re:Dědičnost dnes
« Odpověď #458 kdy: 27. 01. 2017, 12:53:59 »
Tak zase abychom nekřivdili FP, každý, kdo používá seznam (v jakémkoliv jazyce), používá monády (i když to většina netuší). Jsou to prostě potvory všudypřítomné a myslím, že většinu lidí děsí jen ten termín, jinak je vesele používají všude možně. Navíc i v "čistém" FP se většinou používá syntaktický cukr, díky němuž kód vypadá celkem procedurálně.

A o tom to je: Problém nemusí vůbec být v monádách, ale ve vystižení jejich myšlenky. Měl jsem s tím problém na všech školách - jestliže přesně nevystihnul podstatu myšlenky (a to je přece smyslem), nefungovalo to.
Takže (nejen pro mě) by se hodilo uvést nějaký zdroj, který přesně vystihuje podstatu (jako neznalý jej nerozpoznám). Upozorňuju, že právě na Wikipedii jsou uvedeny příklady bez jakéhokoliv úvodu do syntaxe, takže jsou nečitelné. I na ten elixírový příklad jsem musel docela čumět, než jsem odhadnul, co by to asi tak mohlo dělat.
U (různých typů) monád je problém, že krom pár abstraktních pravidel je nic na první pohled nespojuje, např. seznamy vs. kontinuace vs. maybe. Proto v nich asi tolik lidí plave a uniká jim sjednocující myšlenka. Ostatně já sám jsem znal monády dávno z matematiky, ale v kódu jsem je používal intuitivně. Až když mě rozmach FP donutil podívat se na něj blíže, došly mi všechny souvislosti. Možná je prostě lepší naučit se používat konkrétní typy monád a na abstraktní aparát za nimi se vykašlat, protože většina kodérů jej stejně nikdy v té abstraktní rovině nevyužije.

JS

Re:Dědičnost dnes
« Odpověď #459 kdy: 27. 01. 2017, 12:56:15 »
Takže (nejen pro mě) by se hodilo uvést nějaký zdroj, který přesně vystihuje podstatu (jako neznalý jej nerozpoznám).

Myslim, ze by ti asi prospelo se to FP trochu naucit (treba Haskell), pak by jsi asi pochopil, odkud pan Armstrong prichazi (ja s nim celkem souhlasim). A take asi zjistil, jak jsou tve rychle usudky naivni. ;-)

Haskell neni tak tezky, ale je potreba trochu zapomenout, co vis o programovani a pristoupit k tomu s otevrenou hlavou. A je pravda, ze hodne tutorialu a tak vyzaduje trochu matematickeho mysleni, coz znamena trpelivost, pro nekoho, kdo v tom neni kovany treba ze skoly.

noef

  • *****
  • 897
    • Zobrazit profil
    • E-mail
Re:Dědičnost dnes
« Odpověď #460 kdy: 27. 01. 2017, 12:59:42 »
Ale s monadami vas Haskell jako jazyk nenuti pracovat a rozhodne vam nehaze klacky pod nohy (spise naopak - do notace). Akorat pokud je  nepouzijete, tak je to vas problem - kod bude zbytecne neprehledny a napr. IO bude stejne nebezpecne jako OOP/imperativnich jazycich, takze z Haskellu neziskate zadnou vyhodu - mohli jste rovnou zustat u OOP a vyslo by vas to lepe, kdyz se snazite Haskell pouzivat jako Javu :D.

Haskell je dost prakticky zamereny (to me velmi prekvapilo, jsem ho vzdy ze skoly a clanku vnimal jako nejakou nepouzitelnou hracku) - umoznuje kvuli debugovani a optimalizacim hodne unsafe veci. Kdo chce prasit (=nepouzivat pri FP pristupu monady), ani Haskell mu nepomuze.

FP je o pristupu, ne jen o jazyku. Viz spory o tom, co je OOP - psat v Jave != praktikovat OOP. Neznam Elixir, ale myslim, ze nebyl ciste FP, takze bych se nedivil, kdyby tam byly mutable veci podobne jako ve Scale. Pokud vim, tak mutable veci jsou i v Haskellu a ten je casto oznacovan jako pure FP jazyk. Napr. v te Scale sam tvurce nezavrhuje mutable (at promenne nebo datove struktury), ale pouze za urcitych podminek (pouze lokalni, neprosakuji nikam ven).

... Možná je prostě lepší naučit se používat konkrétní typy monád a na abstraktní aparát za nimi se vykašlat, protože většina kodérů jej stejně nikdy v té abstraktní rovině nevyužije.

Ja si sice teorii precet, ale mam pocit, ze spis spadam do tech koderu :D. Ale svete div se, na to abych monady pouzival (jsem zelenac, nedavno jsem poprve pracoval se State monad) nepotrebuji skvele ovladat teorii za tim.

javaman ()

Re:Dědičnost dnes
« Odpověď #461 kdy: 27. 01. 2017, 13:04:06 »
Ja si sice teorii precet, ale mam pocit, ze spis spadam do tech koderu :D. Ale svete div se, na to abych monady pouzival (jsem zelenac, nedavno jsem poprve pracoval se State monad) nepotrebuji skvele ovladat teorii za tim.

Jenomže ta teorie se hezky zkouší na našich hloupých školách. Takže sice máš asi pocit, že jsi na to šel špatně, ale je to přesně naopak. Teorie ti je sama o sobě na nic... na titul to ale stačí. Proto dnes tituly už nemají žádnou cenu a ani na vývojáře/architekta ho mít nemusíš v podstatě nikde. Tam, kde ho chtějí, sedí hloupí lidé, tak je otázkou, jestli s nimi chceš dělat.

gll

Re:Dědičnost dnes
« Odpověď #462 kdy: 27. 01. 2017, 13:04:44 »
Dědičnost/OOP je jen nástroj. Pokud někdo neumí nástroj používat nebo ho používá na něco, k čemu není určen, není to chyba nástroje. Takový soustruh, se kterým jdou dělat kouzla, taky neumí použít každý a ani s ním nejde vykopat díra v zemi. Ale ani jedno z toho není chyba soustruhu.

Na co se teda OOP vůbec nehodí a použil bys něco jiného?

XMLHttpRequest vs jQuery.get

noef

  • *****
  • 897
    • Zobrazit profil
    • E-mail
Re:Dědičnost dnes
« Odpověď #463 kdy: 27. 01. 2017, 13:32:03 »
...
Jenomže ta teorie se hezky zkouší na našich hloupých školách. Takže sice máš asi pocit, že jsi na to šel špatně, ale je to přesně naopak. Teorie ti je sama o sobě na nic... na titul to ale stačí. Proto dnes tituly už nemají žádnou cenu a ani na vývojáře/architekta ho mít nemusíš v podstatě nikde. Tam, kde ho chtějí, sedí hloupí lidé, tak je otázkou, jestli s nimi chceš dělat.

To me pripomina jednoho prednasejiciho na VUT FIT - rikaval nam, ze na bezne vyvijeni staci v pohode bakalar (na FITu je dost prakticky zamereny) a mel svatou pravdu. Ja si udelal i magistersky stupen a prestoze par predmetu se hodilo, tak bohuzel vetsina byla o tom se to naucit na zkousku a pak zapomenout. Nejhorsi a nejtezsi predmety byly ty, kde bylo hodne (nebo vyhradne) teorie a vyucujici se ani neobtezovali uvadet, kde (jestli vubec) se to v praxi pouziva. IMO to hodne lidi (vcetne me) dost demotivovalo. Pritom dost tech veci se opravdu v praxi pouziva, to jsem ale samozrejmne zjistil az mnohem pozdeji, kdyz jsem si ve volnem case procital wiki a ruzne novinky. Ta vyuka na nasich vysokych skolach me take neprijde optimalni.

SB

Re:Dědičnost dnes
« Odpověď #464 kdy: 27. 01. 2017, 13:33:34 »
Právě že nechce a právě že je to chybou, protože v okamžiku, kdy zavedete do jazyku nový koncept, počet interakcí s jinými koncepty násobně roste, takže např. v okamžiku, kdy necháte v rádobyobjektovém jazyku primitiva, musíte s nimi pracovat jinak než s objekty a ještě se vám objeví interakce primitivum-objekt a naopak!

Nikdo ti je nenutí. Ale až se podíváš na rychlost, tak je možná ještě rád někde použiješ. Taková low-level optimalizace.

Máte recht. Akorát to značně komplikuje návrh jazyku i jeho implementaci.