Co si myslíte o OOP?

BoneFlute

  • *****
  • 1 983
    • Zobrazit profil
Re:Co si myslíte o OOP?
« Odpověď #435 kdy: 04. 01. 2019, 19:16:27 »
Jako starý Pythonista...
Mohu tě požádat o odpověď na mou otázku?

Důvody pro použití dynamických typů:
1. za běhu měnitelný systém (znám jen Erlang)
2. prototypování (takové to, když potřebuješ jen něco zkusit, a upřesňovat to budeš pozdějc)
3. neumím, nebo jazyk neumí typy

Doplníš další? (Kromě těchto scénářů nevím o ničem, kdy by netypování (př. dynamické typování) bylo užitečné.)

4. pripady, kdy staticky typovy system je prilis prisny a nepovoli preklad programu, ktery by dynamicky jazyk v pohode zvladnul a navic je takovy program lidsky intuitivni
Jediné co se mi vybavilo jsou IO monády v Haskellu. Jinak mě nenapadá, kdy by měl být typový systém příliš přísný. A i u těch IO monádách je to vlastně lepší, než bez toho.

Přijde mi to jako kombinace 2ky a neznalosti.


Re:Co si myslíte o OOP?
« Odpověď #436 kdy: 04. 01. 2019, 19:17:10 »
Jako starý Pythonista...
Mohu tě požádat o odpověď na mou otázku?

Důvody pro použití dynamických typů:
1. za běhu měnitelný systém (znám jen Erlang)
2. prototypování (takové to, když potřebuješ jen něco zkusit, a upřesňovat to budeš pozdějc)
3. neumím, nebo jazyk neumí typy

Doplníš další? (Kromě těchto scénářů nevím o ničem, kdy by netypování (př. dynamické typování) bylo užitečné.)
4. genericke programovani
5. flexibilita
6. jednodussi (prehlednejsi) kod
7. introspekce
8. interaktivita

Hele viděl jsi někdy nějaký moderní statický typovaný jazyk?

operator

Re:Co si myslíte o OOP?
« Odpověď #437 kdy: 04. 01. 2019, 19:20:08 »
8. interaktivita
to není výsada dynamických jazyků, viz např https://www.youtube.com/watch?v=mOtKD7ml0NU
To je tvrzeni do pranice. Je jazyk staticky, pokud struktury oznacovane za staticke vytvari dynamicky? Muzu v takovem interpretu definovat funkci, ktera bude pracovat s datovym typem, ktery zatim jeste neni definovan?

Inkvizitor

Re:Co si myslíte o OOP?
« Odpověď #438 kdy: 04. 01. 2019, 19:23:43 »
Jako starý Pythonista...
Mohu tě požádat o odpověď na mou otázku?

Důvody pro použití dynamických typů:
1. za běhu měnitelný systém (znám jen Erlang)
2. prototypování (takové to, když potřebuješ jen něco zkusit, a upřesňovat to budeš pozdějc)
3. neumím, nebo jazyk neumí typy

Doplníš další? (Kromě těchto scénářů nevím o ničem, kdy by netypování (př. dynamické typování) bylo užitečné.)

No já Ti raději povím svoji historii; když nepočítám Basic a Pascal a úkroky stranou typu FoxPro, vyšel jsem programátorsky z C a C++. V C byla perfektní široká škála funkcí, které oproti Pascalu umělo (práce s řetězci atd.) Jenže celou dobu mě trápilo dřevácké strukturování programů, explicitní alokace atd. C++ bylo podstatně hezčí, v té době ještě takové to staré s klasickými pointery atd., ale už to umělo aspoň reference a spousta věcí tam byla příčetnější než v C. Pak jsem koketoval s Javou - v době šílených nestabilních IDE typu Xelfi a microsoftí snahy ukrást celou platformu pomocí J++. Šílené obstrukce okolo načtení kousku souboru, to API bylo neskutečně hnusné.

V Linuxu byly dva jazyky, které mě zaujaly - Perl, který mi vždycky přišel trhlý a Python, který měl jenom "trhlou" syntaxi. Měl ale vizi, programy v něm psané byly celkem elegantní a čitelné a člověk se nemusel mazat s nějakým hloupým mallocem a callocem atd. Nějaká ideologie kolem mě trochu oslovila, ale to bylo spíš mladické poblouznění.

Takže zpátky k výhodám Pythonu - čitelnost, dobrá komunita, batteries included, v jazyku se cítím docela přirozeně. Pro prototypy je celkem super a i větší věci se v něm dají dělat, ne že ne. Dobré je, že můžeš mít kolekce s různorodými prvky, prostě se s tím hezky pracuje a zároveň se vždycky můžeš vyptat, co je ten prvek zač a podle toho s ním naložit. Prostě hezká hračka, lego, které se dá použít i na praktické věci. Mám ty výhody zobecňovat? Perl nesnáším, Ruby nemusím, Smalltalk je úplně jiný svět, PHP beru jako praktický nástroj, ale jinak mi taky nejde moc od ruky.

Co se mi líbí:

1. Neukecaná syntaxe - to ale řeší i typová inference apod.
2. Vysokoúrovňové idiomy a datové struktury - to je ale obecný trend a není to statická ani dynamická věc
3. Automatická správa paměti (ať už jde o RC, GC nebo paměťový model a la Rust)
4. Kvalitní knihovny
5. Dobré nástroje pro organizaci kódu - moduly, balíčky apod.

Python mnohé z toho splňuje, jiné jazyky taky. Dynamické typování nepovažuju za takovou výhodu. Python to dělá takhle a docela mu to jde. Jiné jazyky to umí jinak. Kdybych si mohl svobodně zvolit jazyk, šel bych spíš cestou Rustu/Scaly/Haskellu/F#. Python mě živí, umím ho nejlíp a často je to pragmaticky správná volba. Ale z dynamických vlastností nedělám fetiš, na těch to nestojí. Spousta věcí se díky nim dá spíchnout skoro "zadarmo", jenže má to samozřejmě dlouhodobé náklady. Důležitý je proces a produkt. A svět programovacích jazyků se vyvíjí k lepšímu - i Python.

operator

Re:Co si myslíte o OOP?
« Odpověď #439 kdy: 04. 01. 2019, 19:27:55 »
Jako starý Pythonista...
Mohu tě požádat o odpověď na mou otázku?

Důvody pro použití dynamických typů:
1. za běhu měnitelný systém (znám jen Erlang)
2. prototypování (takové to, když potřebuješ jen něco zkusit, a upřesňovat to budeš pozdějc)
3. neumím, nebo jazyk neumí typy

Doplníš další? (Kromě těchto scénářů nevím o ničem, kdy by netypování (př. dynamické typování) bylo užitečné.)
4. genericke programovani
5. flexibilita
6. jednodussi (prehlednejsi) kod
7. introspekce
8. interaktivita

Hele viděl jsi někdy nějaký moderní statický typovaný jazyk?
Nevim co povazujes za moderni. Znam ty, ktere se se pouzivaji a je potreba je znat. C, C#, Java. Na akademicke jako je Haskell neplytvam casem.


Re:Co si myslíte o OOP?
« Odpověď #440 kdy: 04. 01. 2019, 19:28:42 »
Jako starý Pythonista...
Mohu tě požádat o odpověď na mou otázku?

Důvody pro použití dynamických typů:
1. za běhu měnitelný systém (znám jen Erlang)
2. prototypování (takové to, když potřebuješ jen něco zkusit, a upřesňovat to budeš pozdějc)
3. neumím, nebo jazyk neumí typy

Doplníš další? (Kromě těchto scénářů nevím o ničem, kdy by netypování (př. dynamické typování) bylo užitečné.)
4. genericke programovani
5. flexibilita
6. jednodussi (prehlednejsi) kod
7. introspekce
8. interaktivita

Hele viděl jsi někdy nějaký moderní statický typovaný jazyk?
Nevim co povazujes za moderni. Znam ty, ktere se se pouzivaji a je potreba je znat. C, C#, Java. Na akademicke jako je Haskell neplytvam casem.

Aha. Takže houby víš, ale názor se ti už udělal.

BoneFlute

  • *****
  • 1 983
    • Zobrazit profil
Re:Co si myslíte o OOP?
« Odpověď #441 kdy: 04. 01. 2019, 19:32:06 »
Takže zpátky k výhodám Pythonu - čitelnost, dobrá komunita, batteries included, v jazyku se cítím docela přirozeně. Pro prototypy je celkem super a i větší věci se v něm dají dělat, ne že ne. Dobré je, že můžeš mít kolekce s různorodými prvky, prostě se s tím hezky pracuje a zároveň se vždycky můžeš vyptat, co je ten prvek zač a podle toho s ním naložit. Prostě hezká hračka, lego, které se dá použít i na praktické věci. Mám ty výhody zobecňovat? Perl nesnáším, Ruby nemusím, Smalltalk je úplně jiný svět, PHP beru jako praktický nástroj, ale jinak mi taky nejde moc od ruky.

Co se mi líbí:

1. Neukecaná syntaxe - to ale řeší i typová inference apod.
2. Vysokoúrovňové idiomy a datové struktury - to je ale obecný trend a není to statická ani dynamická věc
3. Automatická správa paměti (ať už jde o RC, GC nebo paměťový model a la Rust)
4. Kvalitní knihovny
5. Dobré nástroje pro organizaci kódu - moduly, balíčky apod.

Python mnohé z toho splňuje, jiné jazyky taky. Dynamické typování nepovažuju za takovou výhodu. Python to dělá takhle a docela mu to jde. Jiné jazyky to umí jinak. Kdybych si mohl svobodně zvolit jazyk, šel bych spíš cestou Rustu/Scaly/Haskellu/F#. Python mě živí, umím ho nejlíp a často je to pragmaticky správná volba. Ale z dynamických vlastností nedělám fetiš, na těch to nestojí. Spousta věcí se díky nim dá spíchnout skoro "zadarmo", jenže má to samozřejmě dlouhodobé náklady. Důležitý je proces a produkt. A svět programovacích jazyků se vyvíjí k lepšímu - i Python.
Podepisuju se.

A díky!

Já tedy postupem času u dynamických jazycích přešel na Luu, protože mi přijde taková subtilnější a rychlejší. A stejně jsem vždycky narazil na to, že tam spousta věcí musím zase dělat ručně. V porovnání s Haskellem je to jako dláto verzus CNC soustruh. Dláto mohu použít hned, jednoduše, a nemusím nic řešit. Ale taky se udřu.

BoneFlute

  • *****
  • 1 983
    • Zobrazit profil
Re:Co si myslíte o OOP?
« Odpověď #442 kdy: 04. 01. 2019, 19:34:49 »
Hele viděl jsi někdy nějaký moderní statický typovaný jazyk?
Nevim co povazujes za moderni. Znam ty, ktere se se pouzivaji a je potreba je znat. C, C#, Java. Na akademicke jako je Haskell neplytvam casem.
S tou Javou a C# jsi si jist? ;-)

operator

Re:Co si myslíte o OOP?
« Odpověď #443 kdy: 04. 01. 2019, 19:49:13 »
Jako starý Pythonista...
Mohu tě požádat o odpověď na mou otázku?

Důvody pro použití dynamických typů:
1. za běhu měnitelný systém (znám jen Erlang)
2. prototypování (takové to, když potřebuješ jen něco zkusit, a upřesňovat to budeš pozdějc)
3. neumím, nebo jazyk neumí typy

Doplníš další? (Kromě těchto scénářů nevím o ničem, kdy by netypování (př. dynamické typování) bylo užitečné.)

No já Ti raději povím svoji historii; když nepočítám Basic a Pascal a úkroky stranou typu FoxPro, vyšel jsem programátorsky z C a C++. V C byla perfektní široká škála funkcí, které oproti Pascalu umělo (práce s řetězci atd.) Jenže celou dobu mě trápilo dřevácké strukturování programů, explicitní alokace atd. C++ bylo podstatně hezčí, v té době ještě takové to staré s klasickými pointery atd., ale už to umělo aspoň reference a spousta věcí tam byla příčetnější než v C. Pak jsem koketoval s Javou - v době šílených nestabilních IDE typu Xelfi a microsoftí snahy ukrást celou platformu pomocí J++. Šílené obstrukce okolo načtení kousku souboru, to API bylo neskutečně hnusné.

V Linuxu byly dva jazyky, které mě zaujaly - Perl, který mi vždycky přišel trhlý a Python, který měl jenom "trhlou" syntaxi. Měl ale vizi, programy v něm psané byly celkem elegantní a čitelné a člověk se nemusel mazat s nějakým hloupým mallocem a callocem atd. Nějaká ideologie kolem mě trochu oslovila, ale to bylo spíš mladické poblouznění.

Takže zpátky k výhodám Pythonu - čitelnost, dobrá komunita, batteries included, v jazyku se cítím docela přirozeně. Pro prototypy je celkem super a i větší věci se v něm dají dělat, ne že ne. Dobré je, že můžeš mít kolekce s různorodými prvky, prostě se s tím hezky pracuje a zároveň se vždycky můžeš vyptat, co je ten prvek zač a podle toho s ním naložit. Prostě hezká hračka, lego, které se dá použít i na praktické věci. Mám ty výhody zobecňovat? Perl nesnáším, Ruby nemusím, Smalltalk je úplně jiný svět, PHP beru jako praktický nástroj, ale jinak mi taky nejde moc od ruky.

Co se mi líbí:

1. Neukecaná syntaxe - to ale řeší i typová inference apod.
2. Vysokoúrovňové idiomy a datové struktury - to je ale obecný trend a není to statická ani dynamická věc
3. Automatická správa paměti (ať už jde o RC, GC nebo paměťový model a la Rust)
4. Kvalitní knihovny
5. Dobré nástroje pro organizaci kódu - moduly, balíčky apod.

Python mnohé z toho splňuje, jiné jazyky taky. Dynamické typování nepovažuju za takovou výhodu. Python to dělá takhle a docela mu to jde. Jiné jazyky to umí jinak. Kdybych si mohl svobodně zvolit jazyk, šel bych spíš cestou Rustu/Scaly/Haskellu/F#. Python mě živí, umím ho nejlíp a často je to pragmaticky správná volba. Ale z dynamických vlastností nedělám fetiš, na těch to nestojí. Spousta věcí se díky nim dá spíchnout skoro "zadarmo", jenže má to samozřejmě dlouhodobé náklady. Důležitý je proces a produkt. A svět programovacích jazyků se vyvíjí k lepšímu - i Python.
U me je to podobne, Python+C(ython) je prvni vychozi volba. Otazka nezni proc Python jo, ale proc Python ne. Takze Python ne, kdyz potrebuji skriptovat webove stranky, tam je nutny JS, Python ne, kdyz jde o produkt na verejny hosting, tam je to PHP, Python ne, kdyz jde o produkt, ktery ma byt integrovan do stavajici podnikove infrastruktury nebo se jedna o jeji modifikaci, tam je to casto Java nebo C#. Ale ve vetsine pripadu Python vyhovi. Je paradni treba na automation, kde se driv pouzivalo vba, je paradni na webove aplikace, ktere jedou na vlastnim serveru a dneska uz je skoro vsechno webova aplikace, o tradicni desktopove prestal byt zajem. Drive byl duvod k odmitnuti Pythonu pozadavek na vysoky vykon, Cython to ale zmenil a dnes se pozadavky na vykon neni potreba zabyvat.

operator

Re:Co si myslíte o OOP?
« Odpověď #444 kdy: 04. 01. 2019, 19:56:57 »
Jako starý Pythonista...
Mohu tě požádat o odpověď na mou otázku?

Důvody pro použití dynamických typů:
1. za běhu měnitelný systém (znám jen Erlang)
2. prototypování (takové to, když potřebuješ jen něco zkusit, a upřesňovat to budeš pozdějc)
3. neumím, nebo jazyk neumí typy

Doplníš další? (Kromě těchto scénářů nevím o ničem, kdy by netypování (př. dynamické typování) bylo užitečné.)
4. genericke programovani
5. flexibilita
6. jednodussi (prehlednejsi) kod
7. introspekce
8. interaktivita
Hele viděl jsi někdy nějaký moderní statický typovaný jazyk?
Nevim co povazujes za moderni. Znam ty, ktere se se pouzivaji a je potreba je znat. C, C#, Java. Na akademicke jako je Haskell neplytvam casem.
Aha. Takže houby víš, ale názor se ti už udělal.
To bych nerekl. Zabyvam se tim pragmaticky. I kdyby haskell nebyl tak tezkopadny, jako v praxi pouzivane staticke jazyky, tak je to bezvyznamna zajimavost, protoze v praxi je to nepouzitelny jazyk. Zajimaji me a posuzuji vlastnosti praktickych jazyku.

Re:Co si myslíte o OOP?
« Odpověď #445 kdy: 04. 01. 2019, 20:09:35 »
Jako starý Pythonista...
Mohu tě požádat o odpověď na mou otázku?

Důvody pro použití dynamických typů:
1. za běhu měnitelný systém (znám jen Erlang)
2. prototypování (takové to, když potřebuješ jen něco zkusit, a upřesňovat to budeš pozdějc)
3. neumím, nebo jazyk neumí typy

Doplníš další? (Kromě těchto scénářů nevím o ničem, kdy by netypování (př. dynamické typování) bylo užitečné.)
4. genericke programovani
5. flexibilita
6. jednodussi (prehlednejsi) kod
7. introspekce
8. interaktivita
Hele viděl jsi někdy nějaký moderní statický typovaný jazyk?
Nevim co povazujes za moderni. Znam ty, ktere se se pouzivaji a je potreba je znat. C, C#, Java. Na akademicke jako je Haskell neplytvam casem.
Aha. Takže houby víš, ale názor se ti už udělal.
To bych nerekl. Zabyvam se tim pragmaticky. I kdyby haskell nebyl tak tezkopadny, jako v praxi pouzivane staticke jazyky, tak je to bezvyznamna zajimavost, protoze v praxi je to nepouzitelny jazyk. Zajimaji me a posuzuji vlastnosti praktickych jazyku.

A že půlka těch věcí neplatí ani u Javy třebas o F# nebo Scale nemluvě...

BoneFlute

  • *****
  • 1 983
    • Zobrazit profil
Re:Co si myslíte o OOP?
« Odpověď #446 kdy: 04. 01. 2019, 20:20:58 »
Jako starý Pythonista...
Mohu tě požádat o odpověď na mou otázku?

Důvody pro použití dynamických typů:
1. za běhu měnitelný systém (znám jen Erlang)
2. prototypování (takové to, když potřebuješ jen něco zkusit, a upřesňovat to budeš pozdějc)
3. neumím, nebo jazyk neumí typy

Doplníš další? (Kromě těchto scénářů nevím o ničem, kdy by netypování (př. dynamické typování) bylo užitečné.)
4. genericke programovani
5. flexibilita
6. jednodussi (prehlednejsi) kod
7. introspekce
8. interaktivita
Hele viděl jsi někdy nějaký moderní statický typovaný jazyk?
Nevim co povazujes za moderni. Znam ty, ktere se se pouzivaji a je potreba je znat. C, C#, Java. Na akademicke jako je Haskell neplytvam casem.
Aha. Takže houby víš, ale názor se ti už udělal.
To bych nerekl. Zabyvam se tim pragmaticky. I kdyby haskell nebyl tak tezkopadny, jako v praxi pouzivane staticke jazyky, tak je to bezvyznamna zajimavost, protoze v praxi je to nepouzitelny jazyk. Zajimaji me a posuzuji vlastnosti praktickych jazyku.

A že půlka těch věcí neplatí ani u Javy třebas o F# nebo Scale nemluvě...
Že i na takovou obludu jako je javascript se roubujou typy (Flow, google-closure, TypeScript), protože bez nich žádnou větší aplikaci prostě neudržíš.

v

Re:Co si myslíte o OOP?
« Odpověď #447 kdy: 04. 01. 2019, 20:22:20 »
8. interaktivita
to není výsada dynamických jazyků, viz např https://www.youtube.com/watch?v=mOtKD7ml0NU
To je tvrzeni do pranice. Je jazyk staticky, pokud struktury oznacovane za staticke vytvari dynamicky? Muzu v takovem interpretu definovat funkci, ktera bude pracovat s datovym typem, ktery zatim jeste neni definovan?
první otázce nerozumím, na druhou je odpověď kladná (typeclasses, parametricity a tak)

JS

Re:Co si myslíte o OOP?
« Odpověď #448 kdy: 04. 01. 2019, 20:37:17 »
Python mnohé z toho splňuje, jiné jazyky taky. Dynamické typování nepovažuju za takovou výhodu. Python to dělá takhle a docela mu to jde. Jiné jazyky to umí jinak. Kdybych si mohl svobodně zvolit jazyk, šel bych spíš cestou Rustu/Scaly/Haskellu/F#. Python mě živí, umím ho nejlíp a často je to pragmaticky správná volba. Ale z dynamických vlastností nedělám fetiš, na těch to nestojí. Spousta věcí se díky nim dá spíchnout skoro "zadarmo", jenže má to samozřejmě dlouhodobé náklady. Důležitý je proces a produkt. A svět programovacích jazyků se vyvíjí k lepšímu - i Python.
Podepisuju se.

Ja to vidim podobne jako Inkvizitor - taky jsem Python zacal pouzival okolo roku 2001, a v te dobe to bylo prijemne jednodussi nez vsechno ostatni okolo. Pozdeji jsem si oblibil Common Lisp a Haskell, ale Python mi porad jde nejlepe.

Ale zacinat znovu, tak rovnou u Haskellu... jak uz jsem ti psal, s dobrou typovou inferenci se vyhoda dynamickeho typovani znacne snizuje. Takze pocitam, ze soucasny trend je (velmi pomaly) postupny navrat ke statickemu typovani diky rozsireni typove inference.

BoneFlute

  • *****
  • 1 983
    • Zobrazit profil
Re:Co si myslíte o OOP?
« Odpověď #449 kdy: 04. 01. 2019, 20:49:57 »
Ja to vidim podobne jako Inkvizitor - taky jsem Python zacal pouzival okolo roku 2001, a v te dobe to bylo prijemne jednodussi nez vsechno ostatni okolo. Pozdeji jsem si oblibil Common Lisp a Haskell, ale Python mi porad jde nejlepe.

Ale zacinat znovu, tak rovnou u Haskellu... jak uz jsem ti psal, s dobrou typovou inferenci se vyhoda dynamickeho typovani znacne snizuje. Takze pocitam, ze soucasny trend je (velmi pomaly) postupny navrat ke statickemu typovani diky rozsireni typove inference.
Takže když si to shrnu, dynamické typování nemá žádné principielní výhody. Jen je to zkrátka a dobře jednodužší na implementaci a naučení. Můžeme se bavit o tom, že je tu jakýsi historický balast, který si vývojáři nesou (například představa ukecanosti, představa pouze základních typů, nepochopení důsledků typové kontroly, etc) vytvářející mýtus výhod, ale jinak asi nic výraznějšího tam nebude. Souhlas?