Kotlin nebo Scala pro backend?

tralala5

Re:Kotlin nebo Scala pro backend?
« Odpověď #45 kdy: 03. 11. 2020, 18:16:59 »
Zatial co Scalu povazujem za lepsi jazyk tak by som isiel v tomto pripade do Kotlinu. V Scale som napisal jeden netrivialny Spark job a nebol to projekt len o par triedach ... enterprise vec proste a venoval som sa tomu asi pol roka a udrzoval to, je to skvely jazyk a vsetko, ale mne sa zdalo, ze to je take C++ v Jave. Mas tam milion sposobov ako tam nieco napisat a musis si davat viac pozor co pises a ako to pises a drzat sa nejakeho standardu inak to zacne byt gulas. Druha vec co mi na Scale vadila bolo to, no, nie ze vadilo, ale proste mal som dojem ze Scala je trocha tazkopadna - zatial co ta vyjadrovacia schopnost je brutalna, tak do toho musis dat strasne vela vedomosti aby to robilo to ci co atd, Kotlin mi pride ako Java na steroidoch, nemas tam zakernosti ako implicity (ktore same o sebe nie su zle) atd, v Scale som mal dojem ze nebojujem len s tym co napisat ale este aj s tym ze ako, vracal som sa k tomu kodu a ako som sa v scale zlepsoval tak som aj ten kod stale prepisoval a piloval aby to bolo idiomaticky atd a stravil som nad tym kopec casu ktory bol vlastne vyhodeny von oknom. Aby som to zhrnul, do Scaly ked mas na to nervy a nie je to projekt na jedno popoludnie. Pre vacsiu flexibilitu a rychlejsi vyvoj by som zvolil Kotlin.


Ink

  • *****
  • 654
    • Zobrazit profil
    • E-mail
Re:Kotlin nebo Scala pro backend?
« Odpověď #46 kdy: 03. 11. 2020, 18:44:34 »
Ma staticke typovani nejakou dalsi vyhodu pred dynamickym krome toho, ze ta kontrola typu probehne pred nasazenim?

Že kontrola probíhá před nasazením je vlastnost, ne konkrétní výhoda. Výhody jsou třeba takové, že:

1. Kompilátor nedovolí překlad, pokud má protichůdné či nedostatečné informace o typu. To jsi měl asi na mysli.
2. Vývojový nástroj (který s kompilátorem může sdílet některé komponenty) člověku ještě před samotnou kompilací v reálném čase ty nedostatky může hlásit (nevím, co v tomto může navíc nabídnout Tvůj REPL driven development).
3. Vývojový nástroj ukazuje typ proměnné/hodnoty/parametru apod. díky inferenci. Při vývoji neustále vím, co za data tam leze, jakou mají vnitřní strukturu (zde už může docházet i k našeptávání atributů ve strukturovaných datech apod.).

Re:Kotlin nebo Scala pro backend?
« Odpověď #47 kdy: 03. 11. 2020, 20:55:48 »
Ma staticke typovani nejakou dalsi vyhodu pred dynamickym krome toho, ze ta kontrola typu probehne pred nasazenim?

Že kontrola probíhá před nasazením je vlastnost, ne konkrétní výhoda. Výhody jsou třeba takové, že:

1. Kompilátor nedovolí překlad, pokud má protichůdné či nedostatečné informace o typu. To jsi měl asi na mysli.
2. Vývojový nástroj (který s kompilátorem může sdílet některé komponenty) člověku ještě před samotnou kompilací v reálném čase ty nedostatky může hlásit (nevím, co v tomto může navíc nabídnout Tvůj REPL driven development).
3. Vývojový nástroj ukazuje typ proměnné/hodnoty/parametru apod. díky inferenci. Při vývoji neustále vím, co za data tam leze, jakou mají vnitřní strukturu (zde už může docházet i k našeptávání atributů ve strukturovaných datech apod.).

Tak mam dojem ze uz se tu kdysi resilo, ze 2 a 3 umi jetbrains resit i u pythonu.
Co umi RDD navic?
Proste si muzu pri vyvoji uprostred psani funkce provolat nejakej vyraz a videt co se mi vrati.
Cela funkce muze bejt i nezkompilovatelna ... ja si poustim jen ten jeden vyraz.
Vim ze jinde mi dokaze treba ide rict, jestli se to zkompiluje.. ale REPL mi rovnou rekne vysledky.

Mam bezici runtime a do nej si evaluaci propaguju definice funkci. A muzu si je volat.
V priloze sem cervenym obdelnickem vyznacil jak se mi ukaze navratova hodnota po "C+x e"

Kdyz si zkusim spustit (hello "Paul") tak na me vybehne to co je v druhe priloze.

Ano nepouzil sem ten spectum takze je to dynamicky vyhodnocovane tim, ze si to spoustim. A tady v tom pripade dokonce s konkretni hodnoutou takze to neni uplne vypovidajici pripad.
Nicmene to melo ukazat to ze zkouset konformitu vuci specifikovanemu typu muzu jeste "pred kompilaci" takze mam driv feedback. Samozrejme, ze tam ta kompilace je, ale vyvojar se o ni nezajima... neni to takovy ten meznik tak a ted si to zbuilduju a nasadim.... je to proste jen tuknuti do klavesnice a vysledek je hned.

Tezko se to vysvetluje... lip se to ukazuje.


Re:Kotlin nebo Scala pro backend?
« Odpověď #48 kdy: 03. 11. 2020, 22:04:40 »
Tak mam dojem ze uz se tu kdysi resilo, ze 2 a 3 umi jetbrains resit i u pythonu.

Bez důsledných type hintů, příp. jedinečně pojmenovaných metod (jak často tu zaznívá propagace stručných jednoslovných názvů...) si ani pycharm moc neškrtne. A nelze se mu divit, že neumí věštit...

Ink

  • *****
  • 654
    • Zobrazit profil
    • E-mail
Re:Kotlin nebo Scala pro backend?
« Odpověď #49 kdy: 03. 11. 2020, 22:58:02 »
Tak mam dojem ze uz se tu kdysi resilo, ze 2 a 3 umi jetbrains resit i u pythonu.

Bez důsledných type hintů, příp. jedinečně pojmenovaných metod (jak často tu zaznívá propagace stručných jednoslovných názvů...) si ani pycharm moc neškrtne. A nelze se mu divit, že neumí věštit...

No a když se přidají hovadiny typu **kwargs, ani křišťálová koule nepomůže.


Re:Kotlin nebo Scala pro backend?
« Odpověď #50 kdy: 03. 11. 2020, 23:42:45 »
Uff, moje odpoved asi nenadchne ale presto si ji neodpustim. Proc se chce nekdo poustet do vyvoje v nejakem "pseudo" jazyce ? Chci tim rict ze jedna vec je smysluplny pokrok ale ta "turbulence" vzniku novych jazyku mi pripada az usmevna. Nekdo vytvori novy jazyk, protoze je super-cuper a ma features xy ktery tech 30 jazyku predtim nemelo.  Nez se ten jazyk dostane alespon do prvni stable verze uz je vlastne zastaraly protoze nejaci frikulini vymysleli novy jazyk xy'. Pochopim to na urvoni skolni ci osobniho rozovje ale z hlediska komercniho vyuziti mi to prijde ulitle. Nerikam ze nikdo v kotlinu/scale nepise ale  ... Mainstream je dneska asi Java,C#,Python ? Ja byt majitel nejake firmy a prijit ke mne clovek ze mi chce neco bastlit v Kotlinu protoze mu to prijde cool & sexy tak ho zenu svinskym krokem. Uz vidim jak mi za 2 roky rekne ze ho to neba, ze jde jinam protoze jazyk XY'' a ja zacinam schanet na trhu nekoho kdo zna Kotlin, Scala. Priznavam jsem starej pes co pise 20let v Ccku, ale to nenavidene Ccko, ma proad zivy ekosystem, spoustu podpurnejch toolu pres profilovani, debug, valgrind atd. Existuji vubec takove tooly pro Kotlin, Scalu budou existovat za 2 roky ? A pokud jsem v nem (C/C++) napsali projekt puvodne pro HP-UX na PARISCU, postupem casu se portoval na HP-UX itanium az skoncil na Linuxu/x86_64 porad to bude udrzitelne. Me proste prijde ze lidi kvuli svemu egu, hrozne tristi sily a pokroku to spis skodi nez prospiva. Je sice fajn ze si muzu vybrat ze 100 programovacich jazyku ale dava to smysl ?  Jeste bych dodal ze to neni o moji lenosti, naucit se neco noveho, kdyz si clovek prosel Cobol,Pascal,C/C++,Java,Pro*C,PL/SQL neni az zas tak slozite se naucit novy jazyk alespon syntakticky, toze ze za vikend pochopite Javu z vas nedela samozrejme programatora v Jave, protoze ta dzungle classu a interface je proste usmevna.

BoneFlute

  • *****
  • 1 981
    • Zobrazit profil
Re:Kotlin nebo Scala pro backend?
« Odpověď #51 kdy: 04. 11. 2020, 00:58:34 »
hrozne tristi sily a pokroku to spis skodi nez prospiva

A v čem by sis teda představoval ten pokrok? Aby to dle tvého nebylo plejtvání?

Scala, Kotlin, Rust jsou následovníci Java, Python.
Java, Python jsou následovníci C, C++, Basic, Pascal
C je následovník Assembleru.

Můj děda programoval u IBM v kolíčcích, a nad Assemblerem ohrnoval nos.

Re:Kotlin nebo Scala pro backend?
« Odpověď #52 kdy: 04. 11. 2020, 08:59:33 »
Ja byt majitel nejake firmy a prijit ke mne clovek ze mi chce neco bastlit v Kotlinu protoze mu to prijde cool & sexy tak ho zenu svinskym krokem. Uz vidim jak mi za 2 roky rekne ze ho to neba, ze jde jinam protoze jazyk XY'' a ja zacinam schanet na trhu nekoho kdo zna Kotlin, Scala.

Asi chápu myšlenku, ale s Kotlinem bych zrovna nikoho ze dveří nevyhazoval, nebál bych se toho.

Píše Roman Pichlík (Dagi) na svém blogu o jednom projektu:

"Jedno z důležitých a správných rozhodnutí bylo vsadit na Kotlin. Dost nám to pomohlo s hiringem, protože komunita Java vývojářů na to dost slyšela."

Kotlin není úplně cool hype, má za sebou ca 10 let aktivního vývoje. Je to jazyk nad JVM (tj máte celý java ekosystém nástrojů, knihoven...) Pro dobrého javistu nebude sebemenší problém se ho naučit.  Pro začátečníky je to také ok, jazyk je díky některým věcem v návrhu bezpečnější než java. Jinak na té javě je znát, že některé věci z kotlinu/scaly přebírá...



Ink

  • *****
  • 654
    • Zobrazit profil
    • E-mail
Re:Kotlin nebo Scala pro backend?
« Odpověď #53 kdy: 04. 11. 2020, 09:25:11 »
Uff, moje odpoved asi nenadchne ale presto si ji neodpustim. Proc se chce nekdo poustet do vyvoje v nejakem "pseudo" jazyce ? Chci tim rict ze jedna vec je smysluplny pokrok ale ta "turbulence" vzniku novych jazyku mi pripada az usmevna. Nekdo vytvori novy jazyk, protoze je super-cuper a ma features xy ktery tech 30 jazyku predtim nemelo.  Nez se ten jazyk dostane alespon do prvni stable verze uz je vlastne zastaraly protoze nejaci frikulini vymysleli novy jazyk xy'. Pochopim to na urvoni skolni ci osobniho rozovje ale z hlediska komercniho vyuziti mi to prijde ulitle. Nerikam ze nikdo v kotlinu/scale nepise ale  ... Mainstream je dneska asi Java,C#,Python ? Ja byt majitel nejake firmy a prijit ke mne clovek ze mi chce neco bastlit v Kotlinu protoze mu to prijde cool & sexy tak ho zenu svinskym krokem. Uz vidim jak mi za 2 roky rekne ze ho to neba, ze jde jinam protoze jazyk XY'' a ja zacinam schanet na trhu nekoho kdo zna Kotlin, Scala. Priznavam jsem starej pes co pise 20let v Ccku, ale to nenavidene Ccko, ma proad zivy ekosystem, spoustu podpurnejch toolu pres profilovani, debug, valgrind atd. Existuji vubec takove tooly pro Kotlin, Scalu budou existovat za 2 roky ? A pokud jsem v nem (C/C++) napsali projekt puvodne pro HP-UX na PARISCU, postupem casu se portoval na HP-UX itanium az skoncil na Linuxu/x86_64 porad to bude udrzitelne. Me proste prijde ze lidi kvuli svemu egu, hrozne tristi sily a pokroku to spis skodi nez prospiva. Je sice fajn ze si muzu vybrat ze 100 programovacich jazyku ale dava to smysl ?  Jeste bych dodal ze to neni o moji lenosti, naucit se neco noveho, kdyz si clovek prosel Cobol,Pascal,C/C++,Java,Pro*C,PL/SQL neni az zas tak slozite se naucit novy jazyk alespon syntakticky, toze ze za vikend pochopite Javu z vas nedela samozrejme programatora v Jave, protoze ta dzungle classu a interface je proste usmevna.

Smysl to dává, pokud ten jazyk má přidanou hodnotu. Vem si, že optimalizuješ na rychlost vývoje, udržovatelnost kódu, rychlost běhu, bezpečnost apod. Kdyby za Tebou přišel někdo, že psát v Kotlinu je cool a zatrhnul bys to, asi bys udělal dobře.  Co ale když má dobré důvody? A co když, díky tomu že se mu v něčem vyvíjí lépe, udělá aplikaci, jakou by v "mainstreamu" prostě neudělal z nedostatku motivace?

Proč si myslíš, že Google, Microsoft, Apple, Amazon a další laborují s různými novými jazyky? No protože doufají, že se jim povede něco zlepšit. A často tomu tak je. Go je v něčem lepší než Python nebo C, Rust v něčem přerostl C++. A ekosystém? Kolikrát v mnohém lepší!

Re:Kotlin nebo Scala pro backend?
« Odpověď #54 kdy: 04. 11. 2020, 09:31:56 »
A pak Oracle koupí IntelliJ a Kotlin samozřejmě pro nepotřebnost zařízne...

Jedna věc je malý jednorázový projekt, druhá věc je firemní systém s výhledem na desítky let. Opravdu si nemyslím, že je best practice projekty po pěti letech přepisovat od nuly. Naopak u takových projektů byly počáteční rozhodnutí a průběžné řízení projektu špatně, když projekt nebylo možno dlouhodobě rozvíjet a přetvářet na nové požadavky.

Re:Kotlin nebo Scala pro backend?
« Odpověď #55 kdy: 04. 11. 2020, 09:51:56 »
A pak Oracle koupí IntelliJ a Kotlin samozřejmě pro nepotřebnost zařízne...

No jasně. Zařízne primární (Googlem podporovaný) programovací jazyk pro nejrozšířenější spotřební platformu (Android). Ten by si na Kotlinu raději namastil kapsu.

A IntelliJ dělá spoustu IDE která nejsou pro Javu, nevím jestli by to bylo pro Oracle zase tak užitečné.

Re:Kotlin nebo Scala pro backend?
« Odpověď #56 kdy: 04. 11. 2020, 10:27:10 »
Kotlin není úplně cool hype, má za sebou ca 10 let aktivního vývoje.
Ono nemusí záležet na době vývoje. Řekl bych, že to „cool hype“ má Kotlin v genech. Je na něm hrozně vidět, že to není jazyk navržený architektem, ale je poskládaný zespoda programátory – jako když pejsek a kočička vařili dort. Když tam přilepíme všechno, co je dobré, musí být přece výsledek úžasný. Jenže tam chybí nějaký cíl, něco, co by to zastřešilo, dalo to jazyku nějaký smysl. U Javy, Scaly, Go, C++, Rustu, C, JavaScriptu, TypeScriptu, Pythonu, Perlu nebo PHP dokážu ten jazyk charakterizovat jednou větou. V případě Kotlinu to nedokážu – resp. jedna věta by byla o tom, jak Kotlin vznikl, ne k čemu je určen.

Jinak na té javě je znát, že některé věci z kotlinu/scaly přebírá...
Je fajn, že úlohu pokusných králíků na sebe vzaly jiné jazyky a Java může přebírat až to, co se osvědčí :-)

Re:Kotlin nebo Scala pro backend?
« Odpověď #57 kdy: 04. 11. 2020, 10:35:27 »
Zrovna u Oraclu si dovedu představit, že by chtěli uškodit googlu, se kterým jsou v permanentním sporu.

U mobilní aplikace neočekávám mnoholetou životnost, tam je naopak důležitý co nejkratší čas vývoje. A příští verze může být napsaná klidně v něčem, co aktuálně nejvíc frčí, nikdo ji nebude udržovat spoustu let. Mluvil jsem o firemních systémech. Píšou banky nebo operátoři své systémy v Kotlinu? Možná nějaké pluginy a doplňky jo.

Re:Kotlin nebo Scala pro backend?
« Odpověď #58 kdy: 04. 11. 2020, 10:39:55 »
Mě spíše přijde že C++ je dort pejska a kočičky. Začalo to jako dort a poté tam začali dávat to nejlepší odevšad. Ale on je to takový efekt C++, to se stává i Javě, C# a nakonec všem jazykům.

Kotlin je jazyk navržený Javisty, tak, jak by se jim Java líbila.

Re:Kotlin nebo Scala pro backend?
« Odpověď #59 kdy: 04. 11. 2020, 10:50:55 »
Zrovna u Oraclu si dovedu představit, že by chtěli uškodit googlu, se kterým jsou v permanentním sporu.

U mobilní aplikace neočekávám mnoholetou životnost, tam je naopak důležitý co nejkratší čas vývoje. A příští verze může být napsaná klidně v něčem, co aktuálně nejvíc frčí, nikdo ji nebude udržovat spoustu let. Mluvil jsem o firemních systémech. Píšou banky nebo operátoři své systémy v Kotlinu? Možná nějaké pluginy a doplňky jo.

Nektere to pisou v clojure a mysli to dost vazne :-) https://www.finextra.com/newsarticle/36297/nubank-buys-firm-behind-clojure-programming-language