Kotlin nebo Scala pro backend?

Re:Kotlin nebo Scala pro backend?
« Odpověď #15 kdy: 30. 10. 2020, 10:22:46 »
tomas88 mi odpoved vzal primo z ust, naprosto s nim souhlasim  :)
Jinak ja jsem v Kotlinu napsal i netrivialni veci (okolo 40000 LOC) a mohu potvrdit ze i v teto velikosti je to stale pouzitelne a dobre se mi v tom dela... u Scaly bych si nebyl tak jisty...

Projekt co jsem dělal ve Scale má shodou okolností taky okolo 40000 LOC, a spolupracoval jsem i na větším. Pracuje se v tom taky dobře i na takovýchto projektech, ostatně Scala má jako jeden z hlavních cílů být a Scalable language. Potíž je spíš ta učicí křivka.

Jo, ta učící křivka to je právě problém. Nepochybuju o tom, že se v tom nechají psát velké projekty. Ale každý větší projekt potřebuje tým lidí a pochybuju, že se dobře skládá Scala tým co by se o to dlouhodobě staral.


Re:Kotlin nebo Scala pro backend?
« Odpověď #16 kdy: 30. 10. 2020, 22:16:10 »
Máte někdo zkušenosti s obojím? Mám zkušenosti z rustu, takže traity a FP mi není cizí. Tady záleží co nejlépe zúročím a samozřejmě v jakém jazyce se nejlépe píše.
« Poslední změna: 30. 10. 2020, 22:17:45 od okalousek »

Re:Kotlin nebo Scala pro backend?
« Odpověď #17 kdy: 31. 10. 2020, 02:13:38 »
Kotlin je pragmatická Scala.

Kotlin využijete na backende, lebo napr. Spring má už dnes pomerne dobrú podporu pre finty z Kotlinu. Gradle viete písať v Kotline miesto Groovy. Kotlin viete rovno využiť na Androide miesto Javy. Do Kotlinu sa pragmaticky pridávajú vlastnosti, ktoré vývojári využívajú.

Kotlin má super tooling - veď ho robia tí istí ľudia, čo IntelliJ IDEA (IntelliJ je už spolovice napísaná v Kotline). Dokonca sa vôbec nehanbia vykrádať zľava-sprava, veď data classes.

Scala je dobrá ak máte konkrétny use-case a konkrétny framework. V Scale viete písať aktorov v Akke, resp. celý aktorový stack okolo toho (Play, Akka HTTP, Lagom).

Scala má tiež rozumný FP prístup, a viete to ťahať ešte ďalej do scalaz/cats a to ste už skoro v kráse Haskellu. Otázka je, či zoženiete na reálny projekt podobne zmýšľajúcich ľudi. Ak ste FP a neviete sa rozhodnúť, pozrite si Vavr.io ako biedny protipól FP pre Java svet. V Scale samozrejme užitočné premakané veci: traity, sealed traity, data classes, silný pattern matching.

Inak strašiakom v Scale je sbt: ten je fakt aj po rokoch dosť biedny a pomalý. IntelliJ však má super plugin, v ňom sa Scala klepe krásne.

Reálny projekt v Scale stále záleží na tom kto ho založil a ako ho maintainuje. Tam je totiž veľká šírka toho, ako sa filozoficky projekt pojme, teda koľko FP a koľko OOP sa tam naprasí. Náš produkčný projekt bol pekný s rozumnou dávkou FP, ale tam to držal pohromade Lagom. Na iných projektoch sa stalo, že senior sa odpútal z reťaze a nabúchal FP, čo syntax zvládla, len sa to veľmi ťažko maintainovalo, nebodaj čítalo.

Re:Kotlin nebo Scala pro backend?
« Odpověď #18 kdy: 01. 11. 2020, 00:28:36 »
Je vidět že Kotlin dělali lidé kteří znají problémy vývoje aplikací a snaží se je moderním způsobem řešit. Díky tomu "vypůjčování" z jiných jazyků má Kotlin spoustu zajímavých věcí jako například konkurenci, datové třídy apod. Přibývají nové funkce. Řekl bych že je to i docela slušně funkcionální jazyk (tzn. nepřehání to), jen mi chybí pattern-matching na vyšší úrovni (ale dá se bez něj žít).

---

Scala na druhou stranu je jazyk o kterém si při studiu "Průvodce Scalou" pomyslím: "Nikdy mě nenapadlo že by něco takového mohlo existovat". Samozřejmě že je více funkcionální než Kotlin a někdo by ve scale mohl psát Haskell stylem. Je to hodně zajímavý jazyk, ale když vidím že verze 3.0 nikde (zatím) a vypadá to že zájem o jazyk jede na setrvačnosti.

Re:Kotlin nebo Scala pro backend?
« Odpověď #19 kdy: 01. 11. 2020, 12:57:05 »
S prominutím, ale jazyk bez pattern matchingu, bez algebraickych datovych typu, a optimalizovany na to aby se operace provadely skrz efekty neni funkcionalni jazyk. Kotlin ma o nekolik radu slabsi typovy system a vpodstate nepouzitelnou generiku. Zkratka je to funkcionalne **vypadajici** hromadka syntaktickeho cukru nad javou.

Zajem o scalu by byl, bohuzel s nabidkou pozic je to bida :-(.

« Poslední změna: 01. 11. 2020, 13:01:38 od waldir »


Re:Kotlin nebo Scala pro backend?
« Odpověď #20 kdy: 01. 11. 2020, 13:13:45 »
Zkratka je to funkcionalne **vypadajici** hromadka syntaktickeho cukru nad javou.

myslim, ze se ani nesnazi vypadat funkcionalne. Nejdulezitejsi neni ten pridany syntakticky cukr, ale odstraneni nesmyslnych limitaci Javy. Dost toho prevzali z Groovy a Ruby, adaptovali na staticky typovany jazyk. Treba tohle se jim podle me hodne povedlo https://kotlinlang.org/docs/reference/type-safe-builders.html

« Poslední změna: 01. 11. 2020, 13:18:19 od A.P.Hacker »

Re:Kotlin nebo Scala pro backend?
« Odpověď #21 kdy: 01. 11. 2020, 13:19:06 »
S prominutím, ale jazyk bez pattern matchingu, bez algebraickych datovych typu, a optimalizovany na to aby se operace provadely skrz efekty neni funkcionalni jazyk. Kotlin ma o nekolik radu slabsi typovy system a vpodstate nepouzitelnou generiku. Zkratka je to funkcionalne **vypadajici** hromadka syntaktickeho cukru nad javou.

Zajem o scalu by byl, bohuzel s nabidkou pozic je to bida :-(.
V dnešní době bych ani nemluvil o tom jestli je jazyk funkcionální či imperativní, pokud to není čistě to a to (C je čistě procedurální, SmallTalk objektový, Haskell funkcionální, ...) ale co si z každého paradigmatu "vyzobal". Spousta jazyků si bere co chce (například z funkcionálních mapy, filtry což mi šetří cykly).

jano6

Re:Kotlin nebo Scala pro backend?
« Odpověď #22 kdy: 01. 11. 2020, 18:56:58 »
Kotlin ale nesúťaží priamo s jazykmi Scala, Clojure, Haskell či OCalm. Kotlin je pragmatický jazyk
pre Java programátorov, pre ktorých je tento jazyk zjavením. Opravuje množstvo chýb, opomenutí
a nezmyslov napr: infantilný názov ArrayList pre zoznamy, neexistencia bežných funkcií, neexistencia literálovej
syntaxe pre kolekcie, vynucované výnimky, dodrbané Futures, práca s kolekciami z praveku, bienda podpora základného FP
programovania a mnoho ďalšieho.  V Kotline je všetko logickejšie, premyslenejšie a omnoho viac expresívne.
Rovnaká úloha v  Kotline si vyžaduje je zlomok kódu, oproti Jave. Okrem toho je zaujímavá možnosť kompilácie
do JS alebo natívneho kódu. Spolu s DSL abstrakciami sú to naozaj brutal zaujímavé veci.

Jednou z priorít jazyka Kotlin bola spätná kompatibilita s Javou a jej knižnicami a čo najjednoduchší
prechod. IntelliJ má zabudovaný pomerne mocný refaktoring Java kódu na Kotlin. Java postupne morálne
starne a prechod na tento jazyk je najviac priamočiarí.

Java programátor, ktorý prejde na Kotlin, získa strašne veľa. Skúseného FP programátora nemusí Kotlin vôbec ohúriť;
ale to jeho dizajnéri ani memali za cieľ.


S prominutím, ale jazyk bez pattern matchingu, bez algebraickych datovych typu, a optimalizovany na to aby se operace provadely skrz efekty neni funkcionalni jazyk. Kotlin ma o nekolik radu slabsi typovy system a vpodstate nepouzitelnou generiku. Zkratka je to funkcionalne **vypadajici** hromadka syntaktickeho cukru nad javou.

Zajem o scalu by byl, bohuzel s nabidkou pozic je to bida :-(.

Re:Kotlin nebo Scala pro backend?
« Odpověď #23 kdy: 01. 11. 2020, 21:13:42 »
Kotlin ale nesúťaží priamo s jazykmi Scala, Clojure, Haskell či OCalm. Kotlin je pragmatický jazyk ...

Právě na Kotlinu se mi líbí ten pragmatismus. Také mám rád FP (zkušenosti z Rustu), ale na Haskell (alespoň zatím) nemám a dále mi vyhovuje OOP, takže se Scala ukazovala za dobrou volbu, ale Kotlin a jeho pragmatismus (HTML dsl například) je také velice pěkná volba. A to mě dostalo sem. Kotlin má také funkcionální prvky.

Re:Kotlin nebo Scala pro backend?
« Odpověď #24 kdy: 01. 11. 2020, 21:35:11 »
Kotlin ale nesúťaží priamo s jazykmi Scala, Clojure, Haskell či OCalm. Kotlin je pragmatický jazyk ...

Právě na Kotlinu se mi líbí ten pragmatismus. Také mám rád FP (zkušenosti z Rustu), ale na Haskell (alespoň zatím) nemám a dále mi vyhovuje OOP, takže se Scala ukazovala za dobrou volbu, ale Kotlin a jeho pragmatismus (HTML dsl například) je také velice pěkná volba. A to mě dostalo sem. Kotlin má také funkcionální prvky.

No tak pak se nabizi Clojure. Z toho pragmatismus strika do vsech smeru.

Re:Kotlin nebo Scala pro backend?
« Odpověď #25 kdy: 01. 11. 2020, 21:38:17 »
Kotlin ale nesúťaží priamo s jazykmi Scala, Clojure, Haskell či OCalm. Kotlin je pragmatický jazyk ...

Právě na Kotlinu se mi líbí ten pragmatismus. Také mám rád FP (zkušenosti z Rustu), ale na Haskell (alespoň zatím) nemám a dále mi vyhovuje OOP, takže se Scala ukazovala za dobrou volbu, ale Kotlin a jeho pragmatismus (HTML dsl například) je také velice pěkná volba. A to mě dostalo sem. Kotlin má také funkcionální prvky.

No tak pak se nabizi Clojure. Z toho pragmatismus strika do vsech smeru.
. Někde v oblasti práce s velkými daty či AI(?) je to asi užitečný jazyk, ale pro mě je to spíše taková kuriozita.

Re:Kotlin nebo Scala pro backend?
« Odpověď #26 kdy: 02. 11. 2020, 10:28:07 »
Bylo tu zmíněno že něco je na něco. Ale co je na co?

Re:Kotlin nebo Scala pro backend?
« Odpověď #27 kdy: 02. 11. 2020, 14:11:15 »
Kotlin ale nesúťaží priamo s jazykmi Scala, Clojure, Haskell či OCalm. Kotlin je pragmatický jazyk ...

Právě na Kotlinu se mi líbí ten pragmatismus. Také mám rád FP (zkušenosti z Rustu), ale na Haskell (alespoň zatím) nemám a dále mi vyhovuje OOP, takže se Scala ukazovala za dobrou volbu, ale Kotlin a jeho pragmatismus (HTML dsl například) je také velice pěkná volba. A to mě dostalo sem. Kotlin má také funkcionální prvky.

No tak pak se nabizi Clojure. Z toho pragmatismus strika do vsech smeru.
. Někde v oblasti práce s velkými daty či AI(?) je to asi užitečný jazyk, ale pro mě je to spíše taková kuriozita.

Ani velky data ani AI nedelam.
Pouzivam vsude kde muzu a nemuzu si to vynachvalit.
Ale nechci ti to nutit.
Jen sem zachytil slovo pragmatismus tak jsem reagoval, protoze clojure je podle me "no nonsense" jazyk.
Vzdycky kdyz pisu v clojure tak proste vidim a pisu business logiku a vubec nemusim resit zadny technikalie okolo.

Re:Kotlin nebo Scala pro backend?
« Odpověď #28 kdy: 02. 11. 2020, 16:00:45 »
Věřím že Clojure je moc pěkný jazyk ale (to (je (pro ( mě (extrém)))) a myslím že i pro mnoho lidí.

Re:Kotlin nebo Scala pro backend?
« Odpověď #29 kdy: 02. 11. 2020, 16:14:45 »
Věřím že Clojure je moc pěkný jazyk ale (to (je (pro ( mě (extrém)))) a myslím že i pro mnoho lidí.

:-) jako ze hodne zavorek?
To mi rikali kluci v tymu pred rokem taky. Tak sme si dali nejaky spolecny zadani a ja to psal v clojure a oni v jave.
A mel sem zavorek polovicku :-).

V clojure neni vic zavorek nez jinde (mozna s vyjimkou pythonu?) jen je tam min vseho ostatniho.
A kdyz pouzijes slusny editor kterej podporuje structured coding (a to jde prave nejlip u lispu protoze je homoiconic) tak ty zavorky vubec nevnimas.

Kód: [Vybrat]
System.out.println("ahoj");

vs.

(println "ahoj")

Navic kdyz vezmu ten tvuj pripad tak spravneji by to asi bylo (extrem (me (pro (je (to))))) protoze prvni se vyhodnoti to uvnitr ale diky threading makru to v clojure muzu napsat takhle:

Kód: [Vybrat]

(->> (to)
     (je)
     (pro)
     (me)
     (extrem))