Nový objev ve funkcionálním programování

BoneFlute

  • *****
  • 1 981
    • Zobrazit profil
Re:Nový objev ve funkcionálním programování
« Odpověď #285 kdy: 23. 04. 2018, 13:46:06 »
Ono třeba s objektovým programováním to není o moc lepší...
oh, přehlédl jsem...


Re:Nový objev ve funkcionálním programování
« Odpověď #286 kdy: 23. 04. 2018, 14:04:23 »
Nejlepší je OOP tak, jak ho má Go. Tam se nikdo nehádá.
Já jsem si celkově myslel, že Go je super, dokud jsem v něm teď nedělal jednu věc, která vyžaduje nějaké abstrakce a myslel jsem že rozkoušu klávesnici a vyhodím kompl z okna. Go mě dost zklamalo. Když člověk dělá nějakou jasnou konkrétní věc, tak je super - přímočaré jasné, s nízkou kognitivní zátěží. Ale jakmile potřebuje psát trochu abstraktněji, tak se bez generik a algebraických typů cítí jak bezrukej :(

Kdyby tam minimálně tyhle dvě věci přidali (generika by bohatě stačila prvního řádu), byl by to imho super jazyk.

Ale zase má závislostní typy (typové konstruktory nad hodnotami)
Co tím máš namysli? Teď si tohle vůbec nemůžu vybavit.

Taky ten striktně nominální type system je trochu kotroverzní volba :)

Re:Nový objev ve funkcionálním programování
« Odpověď #287 kdy: 23. 04. 2018, 14:12:09 »
I když s vámi více méně souhlasím, velmi se bráním slovnímu spojení "to musí pochopit každý".
Souhlas, to byla příliš velká zkratka. Myslel jsem každý člověk, který je schopný trochu rozumně programovat.

Lama

Re:Nový objev ve funkcionálním programování
« Odpověď #288 kdy: 23. 04. 2018, 14:14:30 »
Ono třeba s objektovým programováním to není o moc lepší - jsou o tom tlusté knihy a stejně se tady vedou nekonečný debaty, jestli čtverec má dědit z obdélníka nebo opačně.

Mi připadá, že to už je implementační detail. IMHO neznamená, že když se dva hádají o tomto, že nechápou aspoň obecně OOP.

BoneFlute

  • *****
  • 1 981
    • Zobrazit profil
Re:Nový objev ve funkcionálním programování
« Odpověď #289 kdy: 23. 04. 2018, 14:16:33 »
Ono třeba s objektovým programováním to není o moc lepší - jsou o tom tlusté knihy a stejně se tady vedou nekonečný debaty, jestli čtverec má dědit z obdélníka nebo opačně.

Mi připadá, že to už je implementační detail. IMHO neznamená, že když se dva hádají o tomto, že nechápou aspoň obecně OOP.
Mám s nimi své zkušenosti :-)


Re:Nový objev ve funkcionálním programování
« Odpověď #290 kdy: 23. 04. 2018, 14:24:29 »
Ono třeba s objektovým programováním to není o moc lepší - jsou o tom tlusté knihy a stejně se tady vedou nekonečný debaty, jestli čtverec má dědit z obdélníka nebo opačně.

Mi připadá, že to už je implementační detail. IMHO neznamená, že když se dva hádají o tomto, že nechápou aspoň obecně OOP.

Spis naopak - kdo se o tomhle musi hadat a nema v tom jasno (nekdy muze ctverec dedit z obdelnika, nekdy neni mozna ani jedna hierarchie) nepochopil ani zaklady.

Idris

  • *****
  • 2 286
    • Zobrazit profil
    • E-mail
Re:Nový objev ve funkcionálním programování
« Odpověď #291 kdy: 23. 04. 2018, 14:27:41 »
Nejlepší je OOP tak, jak ho má Go. Tam se nikdo nehádá.
Já jsem si celkově myslel, že Go je super, dokud jsem v něm teď nedělal jednu věc, která vyžaduje nějaké abstrakce a myslel jsem že rozkoušu klávesnici a vyhodím kompl z okna
Jakou?

Re:Nový objev ve funkcionálním programování
« Odpověď #292 kdy: 23. 04. 2018, 15:22:17 »
Jakou?
Právě že ani nic světobornýho a i tak jsem narazil. Asi to nemá smysl vysvětlovat, princip toho programu je celkem jednoduchej, ale bylo by na dlouho vysvětlit, v čem přesně byl problém.

Idris

  • *****
  • 2 286
    • Zobrazit profil
    • E-mail
Re:Nový objev ve funkcionálním programování
« Odpověď #293 kdy: 23. 04. 2018, 15:35:46 »
Jakou?
Právě že ani nic světobornýho a i tak jsem narazil. Asi to nemá smysl vysvětlovat, princip toho programu je celkem jednoduchej, ale bylo by na dlouho vysvětlit, v čem přesně byl problém.
Zajímavé. Některé typy tam generické jsou a nevybavuju si, že by mi někde jinde chyběly, a to jsem v tom napsal hodně kódu. Jediná WTF věc je kontrola chyb, ale i to je vlastně tvůrčí záměr. Člověk se prostě musí oprostit od OO myšlení à la Java.

Re:Nový objev ve funkcionálním programování
« Odpověď #294 kdy: 23. 04. 2018, 16:45:59 »
Zajímavé. Některé typy tam generické jsou a nevybavuju si, že by mi někde jinde chyběly, a to jsem v tom napsal hodně kódu.
Jestli myslíš ty zabudované, tak ty jsou iiirc jenom dva - array a map.

Jediná WTF věc je kontrola chyb, ale i to je vlastně tvůrčí záměr. Člověk se prostě musí oprostit od OO myšlení à la Java.
No to každopádně, ta kontrola chyb je po chvilce děsně otravná. Ale jinak spíš záleží, co vnímáš jako WTF a co jenom jako něco, co je prostě jinak, než bys čekal, nevyhovuje ti to, ale bereš to prostě že to tak je. To je subjektivní.

Třeba docela překvapivý může být:
Citace
There's an important way in which embedding differs from subclassing. When we embed a type, the methods of that type become methods of the outer type, but when they are invoked the receiver of the method is the inner type, not the outer one.
https://golang.org/doc/effective_go.html

Ilustrace:
https://play.golang.org/p/446pcKpJRop

Nebo jinej problém, co jsem měl, spočíval v tom, že jsem měl modul, kterej definoval obecnej graf s obecným uzlem
Kód: [Vybrat]
type Node interface {...}
a pak několik modulů definujících konkrétní implementaci:
Kód: [Vybrat]
type SuperDuperNode struct {...}
...no a pak když jsem chtěl v tom "obecným" modulu deserializovat z JSONu strukturu
Kód: [Vybrat]
Nodes map[NodeID]Node
...tak se začaly dít věci... (TL;DR: nijak rozumně to nejde napsat, každý řešení je příšerný)

Kiwi

Re:Nový objev ve funkcionálním programování
« Odpověď #295 kdy: 23. 04. 2018, 16:57:38 »
Aniž bych chtěl nějak snižovat význam monád, tak programovací technika

- kterou nikdo neumí vysvětlit
- k jejímu pochopení je potřeba diplom z matfyzu
- když někdo myslí, že jí pochopil, tak mu ostatní začnou říkat, že jí nechápe

je poněkud nepraktická. Tím neříkám, že je nepoužitelná, když ale v praxi ke svému kódu posadíte nového člověka, tak by měl být schopný daný kód pochopit. Takhle to působí, že když kód napíšete pomocí monád, tak můžete spolupracovníky vybírat ze všech dvaceti lidí, kteří je v republice chápou - pokud se zrovna nehádají s Prýmkem, jestli je vlastně chápou.
To máš jako s vektory ve fyzice - můžeš to vysvětlit tak, jako se to vysvětluje dětem na základní škole pomocí šipek, nebo tak, jako někdy v 5. semestru na VŠ, pomocí duálních prostorů a tenzorů. Pokud chápeš ten druhý popis, je ti jasné, že ty šipky byly dost značné zjednodušení za cenu definičních nepřesnotí a nejasností a daly se s nimi dělat a/nebo představovat jen určité operace. Ale pokud zrovna neřešíš problémy obecné teorie relativity, tak si zřejmě vystačíš s tím "šipkovým modelem", ať už ten "tenzorový model" znáš, nebo ne.
Tak či tak, začínat tím druhým způsobem by mi připadalo krajně nevhodné v jakémkoli případě.

Jinak se přiznám, že mě FP taky zatím nijak zvlášť nechytlo. Ani OOP. To druhé ale musím, to první zatím naštěstí ne. :)

Idris

  • *****
  • 2 286
    • Zobrazit profil
    • E-mail
Re:Nový objev ve funkcionálním programování
« Odpověď #296 kdy: 23. 04. 2018, 17:13:44 »
Zajímavé. Některé typy tam generické jsou a nevybavuju si, že by mi někde jinde chyběly, a to jsem v tom napsal hodně kódu.
Jestli myslíš ty zabudované, tak ty jsou iiirc jenom dva - array a map.
chan taky. Právě channels (a příslušný runtime) jsou dle mého skromného názoru na Go to nejlepší, jinak ten jazyk ničím nevyniká.

Re:Nový objev ve funkcionálním programování
« Odpověď #297 kdy: 23. 04. 2018, 17:19:50 »
chan taky. Právě channels (a příslušný runtime) jsou dle mého skromného názoru na Go to nejlepší, jinak ten jazyk ničím nevyniká.
No to každopádně. To, že dostali CSP-like záležitosti do mainstreamu je na Nobelovku* :) Však to jim podle mě získalo ten drajv. Škoda, že tím předběhli Rust, kterej už ten závod asi nedá, tomu bych fandil víc :)

* nevím ovšem na jakou. Asi za mír [v duši všech, kdo píšou něco konkurentního] :)

Idris

  • *****
  • 2 286
    • Zobrazit profil
    • E-mail
Re:Nový objev ve funkcionálním programování
« Odpověď #298 kdy: 23. 04. 2018, 17:30:09 »
* nevím ovšem na jakou. Asi za mír [v duši všech, kdo píšou něco konkurentního] :)
Nějakou cenu za civil engineering.

Ghhh

Re:Nový objev ve funkcionálním programování
« Odpověď #299 kdy: 23. 04. 2018, 17:36:05 »
Prymku, mas neco na githubu? Udelam ti codereview  8)