Základy programování

Idris

  • *****
  • 1 910
    • Zobrazit profil
    • E-mail
Re:Základy programování
« Odpověď #75 kdy: 01. 06. 2020, 10:22:41 »
Ad haskell: asi bych taky rád viděl kontrolovaný experiment... těžko říct.

Včera jsem dostal dotaz od začínající programátorky ohledně počítání fibonacciho posloupnosti. V Pythonu. No... a nějak jsem skončil s tím, že jsem to vysvětloval jak v Haskellu, tak v Pythonu. A ve výsledku to prostě v Haskellu pořád vypadalo jako "popis řešení problému", zatímco v pythonu to zůstávala "posloupnost instrukcí", byť značně učesanější než na začátku a zkušený Python programátor v tom ten popis řešení je asi "schopen uvidět". FP řešení v pythonu nevypadá dobře už vůbec. Ale připadá mi, že přechod od "popisu řešení" k "posloupnosti instrukcí" je výrazně jednodušší, než postup opačným směrem. Ona pak spousta lidí programuje systémem "pokus-omyl" - což v haskellu tak trochu nejde. Zase, nevím nakolik je to špatně, když je člověk začátečník, tak to možná potřebuje....

Jinak ad výhoda Haskellu: vzhledem k tomu, že vyvíjím mimo jiné jednu aplikaci pro Android a google přišel s Kotlinem, tak v tom můžu prakticky okamžitě programovat a akorát řeším, "jak se tahle věc v Haskellu syntakticky zapíše v kotlinu". A podobně to pravděpodobně bude vypadat i s Rustem. Takže pokud jde o praktické využití, tak je mnohem větší, než to na první pohled vypadá.
Jednou jsem si zkousel delat tutorial Haskellu a docela me zarazila vysoka uroven abstrakce. Nejake monoidy a monady. Prislo mi to dost slozite. Podle me to moc pro zacatecniky neni.
Existují i kvalitní tutoriály pro začátečníky. Slova na mon- by měla být v textech pro normální lidi zakázána  >:(


Re:Základy programování
« Odpověď #76 kdy: 01. 06. 2020, 11:08:52 »
Slova na mon- by měla být v textech pro normální lidi zakázána  >:(
To nejde, protože se tak jmenují ty classes. Jasně, dalo by se to učit stylem "tady to použijte takhle a nemusíte moc pátrat po tom, proč to tak je", ale pak je otázka, proč v takovém případě vůbec učit Haskell...

Pokud by byl problém v tom, že má Haskell moc abstrakcí, dal by se použít Elm. Ten by byl pro začátečníka nejspíš daleko stravitelnější a skoro všechny ty (domnělé) pozitivní efekty by u něj byly taky. Výhoda je, že je hodně orientovaný na web, což je imho pro nováčka velký pozitivum (něco píše a hned vidí v prohlížeči výsledek, ideálně i graficky zajímavý -> cenný quick win a wow efekt).

Idris

  • *****
  • 1 910
    • Zobrazit profil
    • E-mail
Re:Základy programování
« Odpověď #77 kdy: 01. 06. 2020, 11:25:54 »
Slova na mon- by měla být v textech pro normální lidi zakázána  >:(
To nejde, protože se tak jmenují ty classes. Jasně, dalo by se to učit stylem "tady to použijte takhle a nemusíte moc pátrat po tom, proč to tak je", ale pak je otázka, proč v takovém případě vůbec učit Haskell...
Tohles tady kdysi tvrdil (značně agresivně) ty, nějak moc si poslední dobou protiřečíš.

Idris

  • *****
  • 1 910
    • Zobrazit profil
    • E-mail
Re:Základy programování
« Odpověď #78 kdy: 01. 06. 2020, 11:28:36 »
Pokud by byl problém v tom, že má Haskell moc abstrakcí, dal by se použít Elm. Ten by byl pro začátečníka nejspíš daleko stravitelnější a skoro všechny ty (domnělé) pozitivní efekty by u něj byly taky. Výhoda je, že je hodně orientovaný na web, což je imho pro nováčka velký pozitivum (něco píše a hned vidí v prohlížeči výsledek, ideálně i graficky zajímavý -> cenný quick win a wow efekt).
Elm je naprosto zbytečný a nezajímavý. Možná pro učení dětí (taková tříkolka před kolem), ale těžko pro někoho na SŠ nebo VŠ.

Re:Základy programování
« Odpověď #79 kdy: 01. 06. 2020, 11:28:51 »
Tohles tady kdysi tvrdil (značně agresivně) ty, nějak moc si poslední dobou protiřečíš.
Neprotiřečím. Myslím si stejně jako ty, že ty M-words jsou na většinu lidí příliš abstraktní koncepty, ale právě proto, že to bez nich v Haskellu nejde, si myslím, že Haskell není pro většinu lidí vhodný jazyk :)

...a přesně proto si taky myslím, že Elm by byl vhodnější, protože tam se bez M-words obejít dá.

P.S. V čem jiným bych si měl protiřečit?


Re:Základy programování
« Odpověď #80 kdy: 01. 06. 2020, 11:29:55 »
Elm je naprosto zbytečný a nezajímavý. Možná pro učení dětí (taková tříkolka před kolem), ale těžko pro někoho na SŠ nebo VŠ.
No dyť právě. Připomeňme si, čím celý tohle téma začalo: "Dob­rý den jsem stu­dent střed­ní prů­mys­lo­vé ško­ly" :)

Idris

  • *****
  • 1 910
    • Zobrazit profil
    • E-mail
Re:Základy programování
« Odpověď #81 kdy: 01. 06. 2020, 11:33:39 »
Tohles tady kdysi tvrdil (značně agresivně) ty, nějak moc si poslední dobou protiřečíš.
Neprotiřečím. Myslím si stejně jako ty, že ty M-words jsou na většinu lidí příliš abstraktní koncepty, ale právě proto, že to bez nich v Haskellu nejde, si myslím, že Haskell není pro většinu lidí vhodný jazyk :)
Ono to bez nich jde. Nicméně i přes špatnou premisu je tvůj závěr správný :) většina lidí by se měla Haskellu vyhnout obloukem, pokud si nechtějí zamotat hlavu a snížit sebevědomí.

Idris

  • *****
  • 1 910
    • Zobrazit profil
    • E-mail
Re:Základy programování
« Odpověď #82 kdy: 01. 06. 2020, 11:34:28 »
Elm je naprosto zbytečný a nezajímavý. Možná pro učení dětí (taková tříkolka před kolem), ale těžko pro někoho na SŠ nebo VŠ.
No dyť právě. Připomeňme si, čím celý tohle téma začalo: "Dob­rý den jsem stu­dent střed­ní prů­mys­lo­vé ško­ly" :)
SPŠ ale není školka ;)

Idris

  • *****
  • 1 910
    • Zobrazit profil
    • E-mail
Re:Základy programování
« Odpověď #83 kdy: 01. 06. 2020, 11:45:26 »
příliš abstraktní koncepty
To mi připomnělo někdejší diskusi o výuce fyziky na úrovni BSc, kde na sebe pokřikovali zastánci a odpůrci výuky obecné TR. Odpůrci argumentovali — na první pohled celkem logicky — tím, že studenti nebudou mít pražádné znalosti dif. geometrie. Nakonec nějakým zázrakem zvítězili zastánci a povedlo se jim sepsat velmi dobrou učebnici TR bez složitých matematických předpokladů. Stejné to je i s FP, že to někomu (kdo se to s vypětím všech sil učil přes složitou algebru) přijde obtížné neznamená, že to nejde mnohem snáz a srozumitelněji. Ovšem tutoriály může psát jen někdo, pro koho je popisované téma brnkačka, ne někdo, kdo to právě pochopil (nebo si to myslí), to se pak jen kupí M-tutoriály s debilními obrázky kolejí a krabiček, které jsou k ničemu. Ale na tom se asi shodneme.

Re:Základy programování
« Odpověď #84 kdy: 01. 06. 2020, 12:20:56 »
...
P.S. V čem jiným bych si měl protiřečit?

 ;D :D ;) :)
Měl jsi tu těch "debat" s Idrisem málo?
(a s tlupou jeho alter eg?)

(no offence)

Re:Základy programování
« Odpověď #85 kdy: 01. 06. 2020, 13:09:41 »
... to se pak jen kupí M-tutoriály s debilními obrázky kolejí a krabiček, které jsou k ničemu.

Znám poměrně dost lidí, kterým ty "debilní obrázky" pomohly.

Existují i kvalitní tutoriály pro začátečníky. Slova na mon- by měla být v textech pro normální lidi zakázána  >:(

Kdo jsou ti "normální lidé"? A také bych rozlišoval ta slova na mon-. Takový monoid jde vysvětlit i lidem bez znalostí algebry během chviličky. S monádou už by to bylo poněkud komplikovanější...

Navíc mi přijde, že se nějak pomíjí, že základy programování (v Haskellu) nutně nemusí ta slova na mon- obsahovat. Tam se spíš narazí na jiné abstrakce, např. Foldable. Asi si každý pod základy programování představujeme něco jiného. :)

Re:Základy programování
« Odpověď #86 kdy: 01. 06. 2020, 13:12:02 »
právě proto, že to bez nich v Haskellu nejde
Ono to bez nich jde.
Nemám s Haskellem praktickou zkušenost, takže se nebudu vyloženě hádat, ale mám za to, že bez Monoid a Monad nenapíšeš v Haskellu nic (ledaže bys to obešel vlastní - míň abstraktní implementací, ale to by pak postrádalo smysl používat Haskell). Bez Applicative se asi obejít dá.

SPŠ ale není školka ;)
No, trochu sis zapřeháněl, že jo :) Imho by Elm byl srozumitelností tak akorát pro tu horší polovinu studentů v prvním ročníku... (EDIT: míněno VŠ) Když se koukneš na ten seznam (domnělých) výhod výuky Haskellu, většina z nich by se naplnila i s Elmem. Nejspíš ne pro všechny studenty, ale jsem docela pevně přesvědčenej, že alespoň pro polovinu z nich by rozdíl v konečném výsledku nebyl žádný (protože prostě k těm partiím, kde by se superiorita Haskellu projevila, by se vůbec neprokousali).

Nevím, jestli jsem úplně dobrý vzorek, protože jsem měl školu tak trochu jako bokovku, zvlášť v bakaláři, ale mně Haskell na škole nedal vůbec nic. Říkal jsem si jenom "hm, takový nějaký divný jazyk, kde se i ty nejjednodušší věci dělají strašlivě komplikovaně, jenom aby měli matematici radost". Naučil jsem se to dostatečně na to, abych zkoušku dal a vůbec nic jsem z toho neměl. Teprve později, když jsem objevil Erlang, jsem se k Haskellu obloukem vrátil a uměl ho trochu docenit. Kdybych se ale s Erlangem nepotkal, nedal by mi ten kurz vůbec nic, protože bych to prostě všechno zapomněl, páč bych to (jako většina lidí v praxi) nikdy nepoužil, byla by to pro mě jenom vzpomínka na jednu z mnoha bizarností z VŠ...

Měl jsi tu těch "debat" s Idrisem málo?
Psal "poslední dobou", proto jsem se na to ptal.
« Poslední změna: 01. 06. 2020, 13:15:55 od Mirek Prýmek »

Re:Základy programování
« Odpověď #87 kdy: 01. 06. 2020, 13:14:55 »
... to se pak jen kupí M-tutoriály s debilními obrázky kolejí a krabiček, které jsou k ničemu.

Znám poměrně dost lidí, kterým ty "debilní obrázky" pomohly.
Já se bez uzardění přiznám, že jsem jeden z nich. Byl to takový první přískok: pochopil jsem jednu instanci, řekl jsem si "aha, takže na tohle je to dobré" a teprve později pochopil, že to byla jenom instance a že ve skutečnosti je to daleko obecnější koncept, který kromě té jedné instance zahrnuje i spoustu dalších.

Bez toho úspěchu s prvním přískokem bych možná hodil flintu do žita a dál se tím už nikdy nezabýval :)

Idris

  • *****
  • 1 910
    • Zobrazit profil
    • E-mail
Re:Základy programování
« Odpověď #88 kdy: 01. 06. 2020, 13:21:57 »
... to se pak jen kupí M-tutoriály s debilními obrázky kolejí a krabiček, které jsou k ničemu.

Znám poměrně dost lidí, kterým ty "debilní obrázky" pomohly.
Ale k čemu?

Idris

  • *****
  • 1 910
    • Zobrazit profil
    • E-mail
Re:Základy programování
« Odpověď #89 kdy: 01. 06. 2020, 13:24:28 »
A také bych rozlišoval ta slova na mon-. Takový monoid jde vysvětlit i lidem bez znalostí algebry během chviličky. S monádou už by to bylo poněkud komplikovanější...
To jako tohle: https://cs.m.wikipedia.org/wiki/Monoid#Teorie_kategori%C3%AD ? To se mi nějak nezdá, že by to šlo během chviličky.