Co si myslíte o OOP?

operator

Re:Co si myslíte o OOP?
« Odpověď #840 kdy: 10. 01. 2019, 16:49:09 »
Tak jsem chtel overit tu haskell ukazku a zjistil, ze haskell je tak okrajovy jazyk, ze neni k dispozici v termuxu. Hledal jsem balicek s nazvem haskell nebo ghc. Seznam balicku: https://pastebin.com/kdfgUFRt To jen upevnuje me presvedceni, ze nema smysl ztracet cas okrajovymi nepodporovanymi jazyky.  Je schopen to nekdo predvest v jinem jazyku ktery je mezi balicky? (je tam kde co, rust, vala, erlang, java, ocaml, golang, clang, racket, ...)  Nebo se jedna ciste o schopnost haskellu, ktera je tu mylne prisuzovana jazykum se statickymi typy?
To je tak pitomá metrika (přítomnost v termuxu) a tak pitomý argument (když je to v Haskellu a opírá se to o statické typy, tak to nutně je demonstrace výhod statických typů)...
Neni to demonstrace vyhod statickych typu, pokud je haskell jediny jazyk, ktery to umi. V takovem pripade je to demonstrace vyhoda haskellu. Na tom zalozene tvrzeni o statickych typech je argumentacni klam, predcasna generalizace.
Ale houby, umi to s drobnymi rozdily kopec jazyku (o Scale a F# tu uz rec sla), ten Haskell se proste bere jako "zlaty standard", co ho navic pomalu kazdy zna.
Zatim to spis vypada na vlastnost funkcionalnich jazyku, porad cekam na nejaky normalni. :-)
Normální? Oba jsou to multiparadigmatické jazyky.
Normalni, to jest ty, ktere se bezne pouzivaji v komercni praxi.
Tak to jsou normální.
:-)) Ohledne moznosti zneuznaneho a neuspesneho haskellu mi muzes veset buliky na nos, ohledne bezne pouzivanych jazyku v komercni sfere nikoliv.

To je takovy problem se podivat do inzeratu? Scala neni zdaleka takova masovka jako trebas Java, ale misto se najde bez problemu. Pokud zuzis sve pozadavky na "zajimava prace", tak se ten pomer navic dost zlepsi...
Pro mě jsou zajímavé zakázky. Nikdo z našich klientů (podniková sféra) takové obskurnosti nepoptává.
Jinymi slovy - generalizujes sve zkusenosti s patlanim v jedne oblasti na cely obor.
Nejen sve. Jak uz jsem tu uvedl, pragmaticky me zajima jen to, co ma pro me prinos, ted a nebo v budoucnu.


Re:Co si myslíte o OOP?
« Odpověď #841 kdy: 10. 01. 2019, 17:04:43 »
Tak jsem chtel overit tu haskell ukazku a zjistil, ze haskell je tak okrajovy jazyk, ze neni k dispozici v termuxu. Hledal jsem balicek s nazvem haskell nebo ghc. Seznam balicku: https://pastebin.com/kdfgUFRt To jen upevnuje me presvedceni, ze nema smysl ztracet cas okrajovymi nepodporovanymi jazyky.  Je schopen to nekdo predvest v jinem jazyku ktery je mezi balicky? (je tam kde co, rust, vala, erlang, java, ocaml, golang, clang, racket, ...)  Nebo se jedna ciste o schopnost haskellu, ktera je tu mylne prisuzovana jazykum se statickymi typy?
To je tak pitomá metrika (přítomnost v termuxu) a tak pitomý argument (když je to v Haskellu a opírá se to o statické typy, tak to nutně je demonstrace výhod statických typů)...
Neni to demonstrace vyhod statickych typu, pokud je haskell jediny jazyk, ktery to umi. V takovem pripade je to demonstrace vyhoda haskellu. Na tom zalozene tvrzeni o statickych typech je argumentacni klam, predcasna generalizace.
Ale houby, umi to s drobnymi rozdily kopec jazyku (o Scale a F# tu uz rec sla), ten Haskell se proste bere jako "zlaty standard", co ho navic pomalu kazdy zna.
Zatim to spis vypada na vlastnost funkcionalnich jazyku, porad cekam na nejaky normalni. :-)
Normální? Oba jsou to multiparadigmatické jazyky.
Normalni, to jest ty, ktere se bezne pouzivaji v komercni praxi.
Tak to jsou normální.
:-)) Ohledne moznosti zneuznaneho a neuspesneho haskellu mi muzes veset buliky na nos, ohledne bezne pouzivanych jazyku v komercni sfere nikoliv.

To je takovy problem se podivat do inzeratu? Scala neni zdaleka takova masovka jako trebas Java, ale misto se najde bez problemu. Pokud zuzis sve pozadavky na "zajimava prace", tak se ten pomer navic dost zlepsi...
Pro mě jsou zajímavé zakázky. Nikdo z našich klientů (podniková sféra) takové obskurnosti nepoptává.
Jinymi slovy - generalizujes sve zkusenosti s patlanim v jedne oblasti na cely obor.
Nejen sve. Jak uz jsem tu uvedl, pragmaticky me zajima jen to, co ma pro me prinos, ted a nebo v budoucnu.

To asi zůstaneš hodně omezenej.

operator

Re:Co si myslíte o OOP?
« Odpověď #842 kdy: 10. 01. 2019, 17:41:39 »
Tak jsem chtel overit tu haskell ukazku a zjistil, ze haskell je tak okrajovy jazyk, ze neni k dispozici v termuxu. Hledal jsem balicek s nazvem haskell nebo ghc. Seznam balicku: https://pastebin.com/kdfgUFRt To jen upevnuje me presvedceni, ze nema smysl ztracet cas okrajovymi nepodporovanymi jazyky.  Je schopen to nekdo predvest v jinem jazyku ktery je mezi balicky? (je tam kde co, rust, vala, erlang, java, ocaml, golang, clang, racket, ...)  Nebo se jedna ciste o schopnost haskellu, ktera je tu mylne prisuzovana jazykum se statickymi typy?
To je tak pitomá metrika (přítomnost v termuxu) a tak pitomý argument (když je to v Haskellu a opírá se to o statické typy, tak to nutně je demonstrace výhod statických typů)...
Neni to demonstrace vyhod statickych typu, pokud je haskell jediny jazyk, ktery to umi. V takovem pripade je to demonstrace vyhoda haskellu. Na tom zalozene tvrzeni o statickych typech je argumentacni klam, predcasna generalizace.
Ale houby, umi to s drobnymi rozdily kopec jazyku (o Scale a F# tu uz rec sla), ten Haskell se proste bere jako "zlaty standard", co ho navic pomalu kazdy zna.
Zatim to spis vypada na vlastnost funkcionalnich jazyku, porad cekam na nejaky normalni. :-)
Normální? Oba jsou to multiparadigmatické jazyky.
Normalni, to jest ty, ktere se bezne pouzivaji v komercni praxi.
Tak to jsou normální.
:-)) Ohledne moznosti zneuznaneho a neuspesneho haskellu mi muzes veset buliky na nos, ohledne bezne pouzivanych jazyku v komercni sfere nikoliv.

To je takovy problem se podivat do inzeratu? Scala neni zdaleka takova masovka jako trebas Java, ale misto se najde bez problemu. Pokud zuzis sve pozadavky na "zajimava prace", tak se ten pomer navic dost zlepsi...
Pro mě jsou zajímavé zakázky. Nikdo z našich klientů (podniková sféra) takové obskurnosti nepoptává.
Jinymi slovy - generalizujes sve zkusenosti s patlanim v jedne oblasti na cely obor.
Nejen sve. Jak uz jsem tu uvedl, pragmaticky me zajima jen to, co ma pro me prinos, ted a nebo v budoucnu.
To asi zůstaneš hodně omezenej.
Prave naopak.

Re:Co si myslíte o OOP?
« Odpověď #843 kdy: 10. 01. 2019, 17:55:18 »
Tak jsem chtel overit tu haskell ukazku a zjistil, ze haskell je tak okrajovy jazyk, ze neni k dispozici v termuxu. Hledal jsem balicek s nazvem haskell nebo ghc. Seznam balicku: https://pastebin.com/kdfgUFRt To jen upevnuje me presvedceni, ze nema smysl ztracet cas okrajovymi nepodporovanymi jazyky.  Je schopen to nekdo predvest v jinem jazyku ktery je mezi balicky? (je tam kde co, rust, vala, erlang, java, ocaml, golang, clang, racket, ...)  Nebo se jedna ciste o schopnost haskellu, ktera je tu mylne prisuzovana jazykum se statickymi typy?
To je tak pitomá metrika (přítomnost v termuxu) a tak pitomý argument (když je to v Haskellu a opírá se to o statické typy, tak to nutně je demonstrace výhod statických typů)...
Neni to demonstrace vyhod statickych typu, pokud je haskell jediny jazyk, ktery to umi. V takovem pripade je to demonstrace vyhoda haskellu. Na tom zalozene tvrzeni o statickych typech je argumentacni klam, predcasna generalizace.
Ale houby, umi to s drobnymi rozdily kopec jazyku (o Scale a F# tu uz rec sla), ten Haskell se proste bere jako "zlaty standard", co ho navic pomalu kazdy zna.
Zatim to spis vypada na vlastnost funkcionalnich jazyku, porad cekam na nejaky normalni. :-)
Normální? Oba jsou to multiparadigmatické jazyky.
Normalni, to jest ty, ktere se bezne pouzivaji v komercni praxi.
Tak to jsou normální.
:-)) Ohledne moznosti zneuznaneho a neuspesneho haskellu mi muzes veset buliky na nos, ohledne bezne pouzivanych jazyku v komercni sfere nikoliv.

To je takovy problem se podivat do inzeratu? Scala neni zdaleka takova masovka jako trebas Java, ale misto se najde bez problemu. Pokud zuzis sve pozadavky na "zajimava prace", tak se ten pomer navic dost zlepsi...
Pro mě jsou zajímavé zakázky. Nikdo z našich klientů (podniková sféra) takové obskurnosti nepoptává.
Jinymi slovy - generalizujes sve zkusenosti s patlanim v jedne oblasti na cely obor.
Nejen sve. Jak uz jsem tu uvedl, pragmaticky me zajima jen to, co ma pro me prinos, ted a nebo v budoucnu.
To asi zůstaneš hodně omezenej.
Prave naopak.
Tak jak jinak chceš fachidiocii říkat?

operator

Re:Co si myslíte o OOP?
« Odpověď #844 kdy: 11. 01. 2019, 09:29:59 »
Tak jsem chtel overit tu haskell ukazku a zjistil, ze haskell je tak okrajovy jazyk, ze neni k dispozici v termuxu. Hledal jsem balicek s nazvem haskell nebo ghc. Seznam balicku: https://pastebin.com/kdfgUFRt To jen upevnuje me presvedceni, ze nema smysl ztracet cas okrajovymi nepodporovanymi jazyky.  Je schopen to nekdo predvest v jinem jazyku ktery je mezi balicky? (je tam kde co, rust, vala, erlang, java, ocaml, golang, clang, racket, ...)  Nebo se jedna ciste o schopnost haskellu, ktera je tu mylne prisuzovana jazykum se statickymi typy?
To je tak pitomá metrika (přítomnost v termuxu) a tak pitomý argument (když je to v Haskellu a opírá se to o statické typy, tak to nutně je demonstrace výhod statických typů)...
Neni to demonstrace vyhod statickych typu, pokud je haskell jediny jazyk, ktery to umi. V takovem pripade je to demonstrace vyhoda haskellu. Na tom zalozene tvrzeni o statickych typech je argumentacni klam, predcasna generalizace.
Ale houby, umi to s drobnymi rozdily kopec jazyku (o Scale a F# tu uz rec sla), ten Haskell se proste bere jako "zlaty standard", co ho navic pomalu kazdy zna.
Zatim to spis vypada na vlastnost funkcionalnich jazyku, porad cekam na nejaky normalni. :-)
Normální? Oba jsou to multiparadigmatické jazyky.
Normalni, to jest ty, ktere se bezne pouzivaji v komercni praxi.
Tak to jsou normální.
:-)) Ohledne moznosti zneuznaneho a neuspesneho haskellu mi muzes veset buliky na nos, ohledne bezne pouzivanych jazyku v komercni sfere nikoliv.

To je takovy problem se podivat do inzeratu? Scala neni zdaleka takova masovka jako trebas Java, ale misto se najde bez problemu. Pokud zuzis sve pozadavky na "zajimava prace", tak se ten pomer navic dost zlepsi...
Pro mě jsou zajímavé zakázky. Nikdo z našich klientů (podniková sféra) takové obskurnosti nepoptává.
Jinymi slovy - generalizujes sve zkusenosti s patlanim v jedne oblasti na cely obor.
Nejen sve. Jak uz jsem tu uvedl, pragmaticky me zajima jen to, co ma pro me prinos, ted a nebo v budoucnu.
To asi zůstaneš hodně omezenej.
Prave naopak.
Tak jak jinak chceš fachidiocii říkat?
Urážkami na tom nic nezměníš.

Pokud chceš něco dobrého a hodnotného tvořit, je lepší umět dva, tři praktické jazyky do hloubky (a i to je dnes moc, aby sis u všech udržoval expertní znalosti, včetně souvisejícího ekosystému), než se povrchně zabývat kdejakou obskurností, která má v praxi minimální využití. Rozdíl mezi mnou a tebou je jako rozdíl mezi praktickým hudebníkem a hudebním kritikem. Mě zajímá praktická stránka věci, to co mi pomůže reálně a dobře tvořit. A chceš-li to nazývat idiocií, prosím. Co ale říct o vás, co žijete v přesvědčení, že když se program podaří zkompilovat, tak je v podstatě hotovo. Vůbec netušíte, co obnáší praktická tvorba software, který není jen na hraní. To pochopíte, až se ze školy dostanete do praxe.


Inkvizitor

Re:Co si myslíte o OOP?
« Odpověď #845 kdy: 11. 01. 2019, 10:07:18 »
Urážkami na tom nic nezměníš.

Pokud chceš něco dobrého a hodnotného tvořit, je lepší umět dva, tři praktické jazyky do hloubky (a i to je dnes moc, aby sis u všech udržoval expertní znalosti, včetně souvisejícího ekosystému), než se povrchně zabývat kdejakou obskurností, která má v praxi minimální využití. Rozdíl mezi mnou a tebou je jako rozdíl mezi praktickým hudebníkem a hudebním kritikem. Mě zajímá praktická stránka věci, to co mi pomůže reálně a dobře tvořit. A chceš-li to nazývat idiocií, prosím. Co ale říct o vás, co žijete v přesvědčení, že když se program podaří zkompilovat, tak je v podstatě hotovo. Vůbec netušíte, co obnáší praktická tvorba software, který není jen na hraní. To pochopíte, až se ze školy dostanete do praxe.

Treba se naucite psat undo jako ja, operator. Sice to dela memory leaky a moc to nefunguje, ale zato mi to trvalo jenom pul dne.

Re:Co si myslíte o OOP?
« Odpověď #846 kdy: 11. 01. 2019, 10:24:14 »
Tak jsem chtel overit tu haskell ukazku a zjistil, ze haskell je tak okrajovy jazyk, ze neni k dispozici v termuxu. Hledal jsem balicek s nazvem haskell nebo ghc. Seznam balicku: https://pastebin.com/kdfgUFRt To jen upevnuje me presvedceni, ze nema smysl ztracet cas okrajovymi nepodporovanymi jazyky.  Je schopen to nekdo predvest v jinem jazyku ktery je mezi balicky? (je tam kde co, rust, vala, erlang, java, ocaml, golang, clang, racket, ...)  Nebo se jedna ciste o schopnost haskellu, ktera je tu mylne prisuzovana jazykum se statickymi typy?
To je tak pitomá metrika (přítomnost v termuxu) a tak pitomý argument (když je to v Haskellu a opírá se to o statické typy, tak to nutně je demonstrace výhod statických typů)...
Neni to demonstrace vyhod statickych typu, pokud je haskell jediny jazyk, ktery to umi. V takovem pripade je to demonstrace vyhoda haskellu. Na tom zalozene tvrzeni o statickych typech je argumentacni klam, predcasna generalizace.
Ale houby, umi to s drobnymi rozdily kopec jazyku (o Scale a F# tu uz rec sla), ten Haskell se proste bere jako "zlaty standard", co ho navic pomalu kazdy zna.
Zatim to spis vypada na vlastnost funkcionalnich jazyku, porad cekam na nejaky normalni. :-)
Normální? Oba jsou to multiparadigmatické jazyky.
Normalni, to jest ty, ktere se bezne pouzivaji v komercni praxi.
Tak to jsou normální.
:-)) Ohledne moznosti zneuznaneho a neuspesneho haskellu mi muzes veset buliky na nos, ohledne bezne pouzivanych jazyku v komercni sfere nikoliv.

To je takovy problem se podivat do inzeratu? Scala neni zdaleka takova masovka jako trebas Java, ale misto se najde bez problemu. Pokud zuzis sve pozadavky na "zajimava prace", tak se ten pomer navic dost zlepsi...
Pro mě jsou zajímavé zakázky. Nikdo z našich klientů (podniková sféra) takové obskurnosti nepoptává.
Jinymi slovy - generalizujes sve zkusenosti s patlanim v jedne oblasti na cely obor.
Nejen sve. Jak uz jsem tu uvedl, pragmaticky me zajima jen to, co ma pro me prinos, ted a nebo v budoucnu.
To asi zůstaneš hodně omezenej.
Prave naopak.
Tak jak jinak chceš fachidiocii říkat?
Urážkami na tom nic nezměníš.

Pokud chceš něco dobrého a hodnotného tvořit, je lepší umět dva, tři praktické jazyky do hloubky (a i to je dnes moc, aby sis u všech udržoval expertní znalosti, včetně souvisejícího ekosystému), než se povrchně zabývat kdejakou obskurností, která má v praxi minimální využití. Rozdíl mezi mnou a tebou je jako rozdíl mezi praktickým hudebníkem a hudebním kritikem. Mě zajímá praktická stránka věci, to co mi pomůže reálně a dobře tvořit. A chceš-li to nazývat idiocií, prosím. Co ale říct o vás, co žijete v přesvědčení, že když se program podaří zkompilovat, tak je v podstatě hotovo. Vůbec netušíte, co obnáší praktická tvorba software, který není jen na hraní. To pochopíte, až se ze školy dostanete do praxe.

A jeste si zjistit rozdil mezi idiocii a fachidiocii....

Re:Co si myslíte o OOP?
« Odpověď #847 kdy: 11. 01. 2019, 10:30:53 »
Co ale říct o vás, co žijete v přesvědčení, že když se program podaří zkompilovat, tak je v podstatě hotovo.

Dobrej hastros.

Vůbec netušíte, co obnáší praktická tvorba software, který není jen na hraní. To pochopíte, až se ze školy dostanete do praxe.

A na to jsi prisel jak?

Re:Co si myslíte o OOP?
« Odpověď #848 kdy: 11. 01. 2019, 10:52:22 »
Pokud chceš něco dobrého a hodnotného tvořit, je lepší umět dva, tři praktické jazyky do hloubky [...] než se povrchně zabývat kdejakou obskurností, která má v praxi minimální využití. [...] Mě zajímá praktická stránka věci, to co mi pomůže reálně a dobře tvořit.
Mě taky zajímá praktická stránka věci. A v praxi jsem zjistil, že je dobré znát ne dva až tři jazyky, ale především dvě až tři paradigmata. Protože znalost nového paradigmatu ti úplně změní perspektivu, pohled na věc. Zkušenost s jinými paradigmaty tě může výrazně inspirovat k lepším řešením nebo se vyvarovat chyb, které jsou způsobené tím, že máš klapky na očích (známé "když mám v ruce kladivo, všechno je hřebík").

Např. alespoň letmá znalost funkcionálního programování je afaik výborná proto, že se naučíš explicitně přemýšlet nad stavem - co s ním děláš, kam ho posíláš, kde se mění, kde se nemění atd. I v nefunkcionálním jazyce to může výrazně pomoct vyhnout se race conditions, zbytečným zámkům apod.

A právě proto je dobré třeba ten Haskell (nebo Elixir, Prolog, ...) alespoň párkrát zkusit, něco málo si v tom napsat. Pohrdat jím stylem "já jsem ten fachman, vy blbečcí akademičtí, mě vaše hračky nezajímají, protože vás musím živit" je hodně stupidní a omezený. Podobně stupidní jako "vy lopaty PHPkový si vykládejte co chcete, my jsme zasvěcenci páté úrovně haskellové gnóze!" Ne nadarmo byla po tisíciletí pýcha chápaná jako největší hřích...

PetrM

Re:co si myslite o oop?
« Odpověď #849 kdy: 11. 01. 2019, 11:01:57 »
Vrátil bych se trochu na začátek.

Ja pracujem na projekte kde oop je dost zastupene a tolko abstrakcie som este nikde nevidel a mam pocit, ze je to niekedy az prekomplikovane a uplne zbytocne.

Abstrakci můžeš mít i bez OOP, nebo snad v tomhle vidíš objekty?
Kód: [Vybrat]
typedef int delkaStrany_t;
typedef int obvod_t;

obvod_t obvodObdelniku( delkaStrany_t stranaA, delkaStrany_t stranaB) {
   return 2 * (obvod_t) soucetDelek( stranaA, stranaB );
}

...

delkaStrany_t SoucetDelek( delkaStrany_t stranaA, delkaStrany_t stranaB) {
  return (delkaStrany_t) soucetIntu( (int) stranaA, (int) stranaB );
}

...

int soucetIntu( int a, int b ) {
  return a + b;
}

Na druhou stranu, OOP ti dává plno možností. V komunikaci (zapouzdříš si socket + vlákno a jenom sekáš instance), v GUI (widgety a obrazovky), moduly (modul = třída implementující nějaký API), ...

A zmíněný čas? To je přece stavová proměnná a reaguje na podněty okolního systému. Takže každý objekt má svoje vlastní chápání času, který se může od ostatních objektů lišit (např. kontejner neví nic o tom, že zrovna jím vlastněný objekt něco dělá, v jeho kontextu čas "tikne" třeba vytvořením/zrušením objektu uvnitř) a čas objektu je z principu nespojitý (minimálně změna jednoho bitu, což je nelineární). Tož asi tak...

Navíc OOP princip se dá využít kdekoliv. Pamatuješ originál Transport Tycoon? Tam jsem tipoval, že je tam nějaká třída "vozidlo", od ní odvozný třídy jako "autobus", "vlak", "letadlo",... No a pak jsem se dočetl, že to je psaný v ASM. A já něco z toho používám i v C ( popis např. v https://www.root.cz/knihy/object-oriented-programming-in-ansi-c/ ) a i C++ původně vzniklo jako prekompiler pro C.

Holt je to jenom nástroj a záleží na nás, jak, k čemu a v čem ho použijem. Zbytek diskuse jsou debaty o víte čem...

Mě taky zajímá praktická stránka věci. A v praxi jsem zjistil, že je dobré znát ne dva až tři jazyky, ale především dvě až tři paradigmata. Protože znalost nového paradigmatu ti úplně změní perspektivu, pohled na věc. Zkušenost s jinými paradigmaty tě může výrazně inspirovat k lepším řešením nebo se vyvarovat chyb, které jsou způsobené tím, že máš klapky na očích (známé "když mám v ruce kladivo, všechno je hřebík").


Souhlas ;)

P.S. Kadete, k těm typům. Je lepší hodinu bojovat se statickými typy, než týden hledat, proč se to číslo chová divně. Schválně, mám SessionID 231479973001 a používám to jako číslo ve formátu UINT64. Co dostanu, pokud ho první knihovna interně konvertuje do UINT32 (protože na ni od dob 32b nikdo nesáhl), druhá do INT64 (protože signed považuje za nativní formát) a pak zpátky do UINT64? Jaký budeš mít SessionID na konci toho procesu? A uspokojí tě to? Ale co, hlavní je, že ani ty tři warningy při buildu nedostaneš... A to se počítá.
Takže na začátku parsování/verifikace dat na jednom místě, následná logika pak ví, že data jsou validní a jak jsou zabalený. A pokud jsou zabalený jinak, kompilátor to zatepla nabonzuje...

Re:Co si myslíte o OOP?
« Odpověď #850 kdy: 11. 01. 2019, 11:14:21 »
Pokud chceš něco dobrého a hodnotného tvořit, je lepší umět dva, tři praktické jazyky do hloubky [...] než se povrchně zabývat kdejakou obskurností, která má v praxi minimální využití. [...] Mě zajímá praktická stránka věci, to co mi pomůže reálně a dobře tvořit.
Mě taky zajímá praktická stránka věci. A v praxi jsem zjistil, že je dobré znát ne dva až tři jazyky, ale především dvě až tři paradigmata. Protože znalost nového paradigmatu ti úplně změní perspektivu, pohled na věc. Zkušenost s jinými paradigmaty tě může výrazně inspirovat k lepším řešením nebo se vyvarovat chyb, které jsou způsobené tím, že máš klapky na očích (známé "když mám v ruce kladivo, všechno je hřebík").

Např. alespoň letmá znalost funkcionálního programování je afaik výborná proto, že se naučíš explicitně přemýšlet nad stavem - co s ním děláš, kam ho posíláš, kde se mění, kde se nemění atd. I v nefunkcionálním jazyce to může výrazně pomoct vyhnout se race conditions, zbytečným zámkům apod.

A právě proto je dobré třeba ten Haskell (nebo Elixir, Prolog, ...) alespoň párkrát zkusit, něco málo si v tom napsat. Pohrdat jím stylem "já jsem ten fachman, vy blbečcí akademičtí, mě vaše hračky nezajímají, protože vás musím živit" je hodně stupidní a omezený. Podobně stupidní jako "vy lopaty PHPkový si vykládejte co chcete, my jsme zasvěcenci páté úrovně haskellové gnóze!" Ne nadarmo byla po tisíciletí pýcha chápaná jako největší hřích...

Ono jak se rika... neni nic praktictejsiho nez dobra teorie.

v

Re:co si myslite o oop?
« Odpověď #851 kdy: 11. 01. 2019, 11:17:22 »
Takže na začátku parsování/verifikace dat na jednom místě, následná logika pak ví, že data jsou validní a jak jsou zabalený. A pokud jsou zabalený jinak, kompilátor to zatepla nabonzuje...
tohle je asi ústřední filosofie silně typového funkcionálního programování "make invalid state unrepresentable"

PetrM

Re:co si myslite o oop?
« Odpověď #852 kdy: 11. 01. 2019, 12:09:37 »
tohle je asi ústřední filosofie silně typového funkcionálního programování "make invalid state unrepresentable"

Tak ono furt platí, že
1) Jak dostanu z vnějšku nějakou hodnot, musím ji validovat -> validátor / parser tam stejně bude
2) Chybu mám zachytit a ošetřit co nejdřív.
3) Věci by měly být řešeny na jednom místě (SRP)
4) Když vím, že tam bude UserID jako int16, nepotřebuju v hloubi aplikace řešit, co se stane, když tam náhodou bude string nebo float
5) Nemusím ukládat a zpracovávat, co nepotřebuju
6) Defenzivní programování - lepší nezkompilovat / dostat warning, než doufat, že je to OK a nic se nerozbije, pokud tam přijde nějaká "podivná" hodnota
7) Stejně dřív nebo pozděj finální typ potřebuju - při prvním výpočtu s daty (Error: Multiply is not defined with strings), při první operaci se stringem nad polem intů,...
8) Za sebe, pokud si mám vybrat mezi
Kód: [Vybrat]

int fn( int a, str b) {
  assert(a > 0);
}
nebo
Kód: [Vybrat]
fn(a, b) {
  assert(isInt(a));
  assert(isString(b));
  assert(a > 0);
}
,
volím první možnost - nejenom že je s tím míň práce, ale 2/3 testů tam zůstanou a po vypnutí asserce v release.
9) Implicitní typy můžou člověku pěkně zavařit.
10) Pokud jde o specifický data, je tady typedef. Pokud ho (zase to SRP) na jednom místě změním, kompilátor vybleje dobrý checklist, co je nekompatibilní a mám to změnit.
11) Pokud člověk potřebuje, netypovaný data protáhne vždycky. Jako string, jako variant, jako obecný pointer, zabalený do třídy, jako union,...
12) Nějak furt nevidím smysl v preferenci stavu, když mám data a nevím, v jakým formátu

Kit

Re:Co si myslíte o OOP?
« Odpověď #853 kdy: 11. 01. 2019, 12:15:58 »
Mě taky zajímá praktická stránka věci. A v praxi jsem zjistil, že je dobré znát ne dva až tři jazyky, ale především dvě až tři paradigmata. Protože znalost nového paradigmatu ti úplně změní perspektivu, pohled na věc. Zkušenost s jinými paradigmaty tě může výrazně inspirovat k lepším řešením nebo se vyvarovat chyb, které jsou způsobené tím, že máš klapky na očích (známé "když mám v ruce kladivo, všechno je hřebík").

Je dobré ta paradigmata nejen znát, ale umět je i rozlišovat a vědět, pro které vrstvy a případy užití se hodí které. Píši nejen objektově v PHP, ale i strukturovaně v PL/SQL a funkcionálně v XSLT. Definování, co kam patří a kam ne, je poměrně strategickou úlohou. Sort se dá použít ve všech třech, ale pro každou vrstvu aplikace a každý typ dat je třeba rozhodnout, který z nich použít, protože univerzálně to vyřešit nelze. Pokud má být každý pátý řádek tabulky v prohlížeči zvýrazněný, tak se to dá udělat nejen zmíněnými nástroji, ale i v CSS. Pokud použijeme vhodný nástroj, usnadní nám do budoucí údržbu aplikace a sníží v ní počet WTF.

Kit

Re:co si myslite o oop?
« Odpověď #854 kdy: 11. 01. 2019, 12:49:05 »
Tak ono furt platí, že
1) Jak dostanu z vnějšku nějakou hodnot, musím ji validovat -> validátor / parser tam stejně bude
2) Chybu mám zachytit a ošetřit co nejdřív.
3) Věci by měly být řešeny na jednom místě (SRP)

Ty první dva body jsou poněkud v rozporu s bodem třetím. Data z vnějšku klidně nechám probublat až do objektu, který je v zvaliduje až ve chvíli, kdy s těmi daty potřebuje pracovat. Tedy naopak je validuji co nejpozději. Pokud ta data proudí z více zdrojů, tak jsou validována právě v tom jednom objektu, který se stará právě jen o tento typ dat. O data jiného typu se stará jiný objekt, i když jsou součástí toho jednoho požadavku.

Tento přístup mi umožňují dělat poměrně jednoduché kontrolery, které se o validaci nestarají, ale pouze se rozhodují, které komponenty modelu použijí a jak je zkombinují.