Rust vs. C++ (funkcionální vs. OOP)

Re:Rust vs. C++ (funkcionální vs. OOP)
« Odpověď #75 kdy: 15. 03. 2016, 03:08:31 »
aby člověk programoval na nějaké profi úrovni FP, tak musí umět nejspíš category theory, jinak je to patlal. Přičemž ale IMO na 90% kódu knihoven, které člověk v haskellu používá, nepotřebuje znát v podstatě žádnou category theory (resp. potřebuje znát, jak to funguje prakticky, nikoliv tu teorii za tím).
To si jenom zboj opět honí triko, můžeš to s klidem ignorovat :)


patlal

Re:Rust vs. C++ (funkcionální vs. OOP)
« Odpověď #76 kdy: 15. 03. 2016, 12:43:25 »
aby člověk programoval na nějaké profi úrovni FP, tak musí umět nejspíš category theory, jinak je to patlal. Přičemž ale IMO na 90% kódu knihoven, které člověk v haskellu používá, nepotřebuje znát v podstatě žádnou category theory (resp. potřebuje znát, jak to funguje prakticky, nikoliv tu teorii za tím).
To si jenom zboj opět honí triko, můžeš to s klidem ignorovat :)

Hlavně neexistuje ani nějaká studie na podobné věci. Učte se matiku, budete lépe programovat.

Ale z pozorování a hloupého českého školství se dá poměrně dobře usuzovat, že znalosti jsou u nás pořád docela ceněné. Takže kdo neumí Babičku nazpaměť, ten nikdy nebude umět programovat. A nebo cokoli dalšího, co se jen někdo naučil nazpaměť a pak to cpe na fórech jako jedinou možnou cestu. Nesouvisející věci ale prostě souviset nemůžou, tak ani létání s letadlem moc nevylepší styl architektury člověka programujícího v Haskell.

Chápu, že pro některé je patlal prostě ten, co neumí nazpaměť to stejné co on. Říká to ale docela dost o autorovi, pokud si samozřejmě nedělá jen srandu.

zboj

  • *****
  • 1 507
    • Zobrazit profil
    • E-mail
Re:Rust vs. C++ (funkcionální vs. OOP)
« Odpověď #77 kdy: 15. 03. 2016, 13:35:20 »
aby člověk programoval na nějaké profi úrovni FP, tak musí umět nejspíš category theory, jinak je to patlal. Přičemž ale IMO na 90% kódu knihoven, které člověk v haskellu používá, nepotřebuje znát v podstatě žádnou category theory (resp. potřebuje znát, jak to funguje prakticky, nikoliv tu teorii za tím).
To si jenom zboj opět honí triko, můžeš to s klidem ignorovat :)

Hlavně neexistuje ani nějaká studie na podobné věci. Učte se matiku, budete lépe programovat.

Ale z pozorování a hloupého českého školství se dá poměrně dobře usuzovat, že znalosti jsou u nás pořád docela ceněné. Takže kdo neumí Babičku nazpaměť, ten nikdy nebude umět programovat. A nebo cokoli dalšího, co se jen někdo naučil nazpaměť a pak to cpe na fórech jako jedinou možnou cestu. Nesouvisející věci ale prostě souviset nemůžou, tak ani létání s letadlem moc nevylepší styl architektury člověka programujícího v Haskell.

Chápu, že pro některé je patlal prostě ten, co neumí nazpaměť to stejné co on. Říká to ale docela dost o autorovi, pokud si samozřejmě nedělá jen srandu.
Rozlišuj mezi "učit se nazpaměť" a "pochopit do hloubky". Pak třeba přijde osvícení ;) Jinak sranda patří k životu ;)

patlal

Re:Rust vs. C++ (funkcionální vs. OOP)
« Odpověď #78 kdy: 15. 03. 2016, 13:38:49 »
Matika je typicky o učení nazpaměť. Reálné projekty v IT jsou typicky o hlubokém pochopení. Ty preferuješ to první a píšeš jako kdybys opravdu preferoval to první. Podle mě je to docela jasné a Mirek to několikrát naznačoval. Ale s trollením souhlasím, jen je problém, že ty se pak na něj vždy můžeš vymluvit. Že jsi vlastně tak nemyslel a tak. Kdo ví, jak to vlastně je...

zboj

  • *****
  • 1 507
    • Zobrazit profil
    • E-mail
Re:Rust vs. C++ (funkcionální vs. OOP)
« Odpověď #79 kdy: 15. 03. 2016, 13:45:11 »
Matika je typicky o učení nazpaměť. Reálné projekty v IT jsou typicky o hlubokém pochopení. Ty preferuješ to první a píšeš jako kdybys opravdu preferoval to první. Podle mě je to docela jasné a Mirek to několikrát naznačoval. Ale s trollením souhlasím, jen je problém, že ty se pak na něj vždy můžeš vymluvit. Že jsi vlastně tak nemyslel a tak. Kdo ví, jak to vlastně je...
Matika je o abstraktních strukturách a vztazích mezi nimi. Zkus se ponořit třeba do té zmíněné teorie kategorií, je to docela zajímavé a otvírá to nové obzory ;)


Re:Rust vs. C++ (funkcionální vs. OOP)
« Odpověď #80 kdy: 15. 03. 2016, 13:51:48 »
Matika je typicky o učení nazpaměť.
WTF?

hu

Re:Rust vs. C++ (funkcionální vs. OOP)
« Odpověď #81 kdy: 15. 03. 2016, 13:59:07 »
Matika je typicky o učení nazpaměť.
WTF?
No jo, když ona má spousta lidí pouze školskou zkušenost s matikou, kde je to opravdu často o memorování goniometrickejch identit a k abstrakci to má asi tak stejně blízko jako dějepis. Pak jsou schopni tvrdit podobný nesmysly, ale v zásadě to není chyba jejich, ale vzdělávacího systému.

Re:Rust vs. C++ (funkcionální vs. OOP)
« Odpověď #82 kdy: 15. 03. 2016, 14:01:40 »
Nesouvisející věci ale prostě souviset nemůžou, tak ani létání s letadlem moc nevylepší styl architektury člověka programujícího v Haskell.
Teorie kategorií ale s Haskellem souvisí docela úzce. Ale je obecnější a těžší. K běžnému programování v Haskellu stačí pochopit běžné programování v Haskellu. TK k tomu potřeba není. Že člověk uvidí různé haskelloviny v novém světle a s širšími souvislostmi je pravda, ale nutné to není. Ani není pravda, že kdo TK nezná, je patlal. To je krávovina.

zboj

  • *****
  • 1 507
    • Zobrazit profil
    • E-mail
Re:Rust vs. C++ (funkcionální vs. OOP)
« Odpověď #83 kdy: 15. 03. 2016, 14:10:24 »
Matika je typicky o učení nazpaměť.
WTF?
No jo, když ona má spousta lidí pouze školskou zkušenost s matikou, kde je to opravdu často o memorování goniometrickejch identit a k abstrakci to má asi tak stejně blízko jako dějepis. Pak jsou schopni tvrdit podobný nesmysly, ale v zásadě to není chyba jejich, ale vzdělávacího systému.
No jo, ale tady se snad nebavíme o matice na úrovni základní školy...

uetoyo

Re:Rust vs. C++ (funkcionální vs. OOP)
« Odpověď #84 kdy: 15. 03. 2016, 15:11:21 »
On autor dotazu dělá nějakou GUI knihovnu a jak sem procházel odkazy (R. Miček) často jsou to hodně košaté vztahy (OOP dedičnost) -- takže asi kopíruje OOP model, který viděl jinde... Tedy co byla původní otázka? Jestli Rust bez dědičnosti, jak ji nabízí C++ je méně flexibilní pro návrh GUI knihovny než C++?

https://lwn.net/Articles/548560/

Viky

Re:Rust vs. C++ (funkcionální vs. OOP)
« Odpověď #85 kdy: 15. 03. 2016, 15:41:17 »
Matika je typicky o učení nazpaměť.

Pokud jsi schopen napsat takovouto kravinu, tak je zřejmé, že jsi hluboce nepochopil, o čem je matematika. Jak chceš teď někoho přesvědčit o tom, že jsi schopen pochopit složitější věci, když tvé intelektuální schopnosti jsou natolik omezené, že ti neumožňují ani pochopení takto jednoduché věci?

Takže jsi jen sám na sobě demonstroval, že na implikaci nechápe matematiku => nebude schopen pochopit ani reálný IT projekt opravdu něco je.

Re:Rust vs. C++ (funkcionální vs. OOP)
« Odpověď #86 kdy: 15. 03. 2016, 16:06:50 »
Pokud jsi schopen napsat takovouto kravinu, tak je zřejmé, že jsi hluboce nepochopil, o čem je matematika.
Což může být (a často je) chyba učitele.

Ale fakt bych nerozjížděl další nekonečné vlákno na tohle téma...

JSH

Re:Rust vs. C++ (funkcionální vs. OOP)
« Odpověď #87 kdy: 15. 03. 2016, 16:41:43 »
On autor dotazu dělá nějakou GUI knihovnu a jak sem procházel odkazy (R. Miček) často jsou to hodně košaté vztahy (OOP dedičnost) -- takže asi kopíruje OOP model, který viděl jinde... Tedy co byla původní otázka? Jestli Rust bez dědičnosti, jak ji nabízí C++ je méně flexibilní pro návrh GUI knihovny než C++?
Pravda. Třeba ten vztah "je", který se dědičnosti často připisuje, odpovídá spíš podtypům než potomkům. Dědičnost moc neumí přidávat omezení a z toho lezou problémy jako že elipsa je kružnice, ale dědí se to blbě. A rozhraní (nebo třeba Haskellovské classy) na to pasujou daleko líp.

Jako příklad, kdy dědičnost těžce kulhá, bych dal visitor. Ve chvíli kdy člověk uvažuje o visitoru opravdu stojí za zvážení, jestli nepoužít nějaký jazyk který umí součtové typy.

Dědičnost je prostředek jazyka. Ne něco, čeho chci dosáhnout. Otázka "jak nahradit dědičnost" je principielně blbě. Správná otázka je něco jako "jak udělat abc, které se často dělá pomocí dědění". Dědičnost dělá trochu rozhraní, trochu kompozici a ani jedno pořádně.

Re:Rust vs. C++ (funkcionální vs. OOP)
« Odpověď #88 kdy: 15. 03. 2016, 17:39:17 »
Dědičnost je prostředek jazyka. Ne něco, čeho chci dosáhnout. Otázka "jak nahradit dědičnost" je principielně blbě. Správná otázka je něco jako "jak udělat abc, které se často dělá pomocí dědění". Dědičnost dělá trochu rozhraní, trochu kompozici a ani jedno pořádně.
Navíc se z dědičnosti stal strašný fetiš. Dědičnost se přefoukla a na posílání zpráv se zapomnělo. Když už, bylo by lepší, kdyby to bylo naopak. Dneska když se řekne OOP, každý pořád mele o dědičnosti. Úplně zbytečně.

BTW, podobně jako třídy v Haskellu fungují i protokoly v Elixiru: http://elixir-lang.org/getting-started/protocols.html Je to silný nástroj a pracuje se s tím krásně. Blbý je, že to jsou tak trochu "C++/C#/Java třídy naruby", takže pro většinu programátorů je to velkej mindtwist a musí se naučit, jak to vlastně využívat.

JSH

Re:Rust vs. C++ (funkcionální vs. OOP)
« Odpověď #89 kdy: 15. 03. 2016, 18:05:05 »
Navíc se z dědičnosti stal strašný fetiš. Dědičnost se přefoukla a na posílání zpráv se zapomnělo. Když už, bylo by lepší, kdyby to bylo naopak. Dneska když se řekne OOP, každý pořád mele o dědičnosti. Úplně zbytečně.
Ono se IMO přefouklo i to OOP. Už ten pojem samotný je strašně neurčitý.

K původní myšlence OOP mi ani ten název "objekt" nesedí. U většiny objektů z reálného světa mě ani nenapadne, abych po nich něco chtěl (a posílal jim nějakou zprávu, aby to udělaly). Daleko přesněji by to vystihoval třeba actor, nebo služba. Možná ta roztříštěnost dnešního OOP plyne trochu i z toho, že je těžké ten pojem nějak uchopit bez předchozího vysvětlení. Objekt je nějaká věc, o které toho nic moc dalšího nevíme.

Ale to je jenom takové bezvýznamné skuhrání a hra se slovy :)