Tutoriál pro Scalu pro programátora

Re:Tutoriál pro Scalu pro programátora
« Odpověď #15 kdy: 09. 10. 2021, 20:18:47 »
To je zajímavý úhel pohledu - monády. Proč se používají v Clojure a proč v Haskellu?

protoze v Haskellu je na nich postavene IO (coz je podle me spis nevyhoda). V Clojure a jinde se pouzivaji nektere konstrukce, treba vyse zminene Promisy, ktere lze napasovat na definici Monady, ale uzivatel to nemusi vedet.


Idris

  • *****
  • 2 286
    • Zobrazit profil
    • E-mail
Re:Tutoriál pro Scalu pro programátora
« Odpověď #16 kdy: 09. 10. 2021, 20:19:26 »
očekáváš, že ty typy přináší záruky. Těmi typy modeluješ. Funkce je typ. Vztahy jsou typ :)
Na to to chce ale hodně silný typový systém :)

BoneFlute

  • *****
  • 1 987
    • Zobrazit profil
Re:Tutoriál pro Scalu pro programátora
« Odpověď #17 kdy: 09. 10. 2021, 21:30:40 »
To je zajímavý úhel pohledu - monády. Proč se používají v Clojure a proč v Haskellu?

protoze v Haskellu je na nich postavene IO (coz je podle me spis nevyhoda). V Clojure a jinde se pouzivaji nektere konstrukce, treba vyse zminene Promisy, ktere lze napasovat na definici Monady, ale uzivatel to nemusi vedet.
Promise je monáda. Každopádně, souhlas - ale co tím chceš říct?

Ještě doplním, v Haskellu nejsou monády kvůli IO. Ony tam prostě jsou. Třeba jsem narazil na pár jiných staticky typovaných jazyků, a byly tam demonstrovány monády i když IO bylo řešeno úplně jinak.

očekáváš, že ty typy přináší záruky. Těmi typy modeluješ. Funkce je typ. Vztahy jsou typ :)
Na to to chce ale hodně silný typový systém :)
Tak jasně. Ale někteří jsou schopni tvrdit, že třeba takové C# je staticky typovaný jazyk (přitom je to paskvil). To bychom se nikam nedostali. Bavím se o Haskellu, pokukuji po Idris/Agdě.

Idris

  • *****
  • 2 286
    • Zobrazit profil
    • E-mail
Re:Tutoriál pro Scalu pro programátora
« Odpověď #18 kdy: 10. 10. 2021, 15:59:32 »
Třeba jsem narazil na pár jiných staticky typovaných jazyků, a byly tam demonstrovány monády i když IO bylo řešeno úplně jinak.
V jazyce bez HKT se ovšem demonstrují dost těžko, je to jen náhražka.

Idris

  • *****
  • 2 286
    • Zobrazit profil
    • E-mail
Re:Tutoriál pro Scalu pro programátora
« Odpověď #19 kdy: 10. 10. 2021, 16:01:51 »
Tak jasně. Ale někteří jsou schopni tvrdit, že třeba takové C# je staticky typovaný jazyk (přitom je to paskvil). To bychom se nikam nedostali. Bavím se o Haskellu, pokukuji po Idris/Agdě.
Podmnožina C# je staticky typovaná ;) Agda je fajn, ale ruku na srdce, kolik vývojářů je v ní schopno psát efektivně? Pokud tedy vůbec…


nula

  • ***
  • 100
    • Zobrazit profil
    • E-mail
Re:Tutorial pro Scalu pro programatora
« Odpověď #20 kdy: 27. 10. 2021, 07:46:56 »
Já byl v podobné situaci před několika lety. Jestli neznáš funkcionální jazyky, ten skok bude docela velký a nějaký tutorial na pár dní tě nezachrání. Doporučuju plnohodnotnou knížku, buď přímo https://www.artima.com/shop/programming_in_scala_5ed (ze staršího vydání jsem se učil já, a je super na vysvětlení co, jak a hlavně proč), nebo https://www.handsonscala.com/ - to tehdy ještě neexistovalo, ale bude to asi praktičtější, přístupnější, Li Haoyi umí velmi srozumitelně a prakticky vysvětlovat, za investované peníze to bude jednoznačně stát.

Další otázka je kterou scalu se učit - dvojku, nebo dotty? Je v nich dost rozdílů, dvojka je starší ale rozšířenější.

A možná taky důležitá otázka je jestli se vůbec scalu učit. Kdybych chtěl praktický managovaný jazyk, šel bych spíš do Kotlinu, je jednodušší a má podle mě větší budoucnost. Kdybych se chtěl funkcionálně vzdělat, šel bych do Haskellu nebo F#. A nebo bych šel prostě do Rustu :-)

Diky moc, nakonec jsem teda vybral Hands on Scala. Chtel jsem poreferovat az jak se mi ta knizka zda dobra, ale jelikoz uz na ni cekam 2 tydny a zatim stale v nedohlednu, tak aspon jsem chtel podekovat. :)

Scalu jsem chtel hlavne proto, ze u nas ve firme se celkem pouziva a ac jsem hlavne C++kar (a celkem obstojne myslim umim Python a Javu), tak bych rad obcas kouknul lidem pod ruku (a pripadne si byl sam schopen pomoct a necekat na scalisty).