r/programiranje • u/Pretend_Gate3441 • 1d ago
Diskusija 🗣️ Ima li Scala developera ovde?
Tipizirani, funkcionalni jezik na Java platformi, cini se da je vrhunac popularnosti bio pre dosta godina kada ga je Tviter stavio u svoj stack i dok je Java jos uve bila jaka.
A kako stvari stoje danas, koliko ima potraznje i posla, jeste niche tehnologija, jel to prednost ili mana? Kako vidite perspektivu i buducnost ovog jezika, da li biste ga preporucili nekome za ucenje ili u ovom trenutku ima daleko boljih opcija?
5
u/skrbic_a 1d ago
Ako nemas nikakvog iskustva, ne bih se previse nadao poslu samo zato sto si naucio Scalu. Trziste je malo, a oglasi su cesto bas specificni: Cats Effect, ZIO, Akka/Pekko, Spark, Kafka, odredjeni FP stack i slicno.
Nema bas mnogo prostora za fazon "znam drugi backend jezik pa cu Scalu nauciti usput". Firme uglavnom vec traze ljude koji znaju tehnologije koje oni koriste i mogu brzo da budu produktivni.
A ni Scala, Cats Effect, ZIO i ceo FP ekosistem nisu stvari koje realno naucis za mesec-dva.
Ako vec imas ozbiljno iskustvo i stvarno si dobar u tom stacku, verovatno ce posla biti. Ali kao jezik koji danas ucis od nule samo zbog zaposlenja, tesko bih ga preporucio.
3
u/SimulaFin 1d ago
Ја се тога не бих хватао. Одакле ти идеја уопште? Зашто? То можеш учити чисто из знатижеље.
Држи се онога са врха TIOBE листе и срећно!
1
u/Outrageous-Bison5650 1d ago edited 1d ago
Koristio sam je (uz Kotlin) za mobile dev, odlična zamena ja Java-u.
Sad je moot point, Claude mi radi bolji posao u Java-i, verovatno jer jer imao mnogo veći training set.
1
u/DevWizardX 1d ago
Zlatno doba Scale je definitivno iza nas. Ja je nisam radio vec nekih 4,5 godina i firma u kojoj sam tad radio je obustavila pisanje koda u scali, tamo negde 2019. godine.
0
u/narrow-adventure 1d ago
Jezik bez ikakve prednosti i poente.
Nekada davno je bio interesantan, tada si imao Akka ekosistem i play framework gde je scala bila dominantna, jezici poput kotlina nisu postojali a java nije još imala ni lambda funkcije.
Lično mislim da je trenutno elixir mnogo zabavniji izbor od scale, podjednako ne mainstream kao scala sa funkcionalnim pristupom ali kao diferencijaciju ima svoj VM.
Sa strane zaposlenja, pojma nemam, ovo je samo moje mišljenje za tehničke aspekte jezika. Ne bih nikad započeo novi projekat u njemu.
2
u/marko-lazic 1d ago
Meni Gleam jako vičan.
1
u/narrow-adventure 1d ago
Jao skroz sam zaboravio na njega :D sećam se kad je bio najavljen baš sam hteo da ga probam i nikako da stignem. Kako ti se činio u odnosu na elixir ako si imao prilike da ga koristiš? Kapiram da im je sigurno sličan sistem za niti jer su na BEAM-u, ali ono podeli bilo kakvo iskustvo.
1
u/skrbic_a 1d ago
Na osnovu cega si zakljucio da je Scala jezik bez prednosti i poente? Ako tako gledamo, onda nista posle C-a nema neku posebnu poentu.
Slazem se da je Scala danas u losem stanju sto se tice popularnosti i trzista i da joj buducnost ne izgleda sjajno. Mislim da su za to dobrim delom krivi i kreatori jezika, koji su cesto vise fokusirani na research nego na potrebe ljudi koji Scalu koriste u industriji.
Ali Akka nije kljucna stvar kod Scale. Bila je veoma popularna pre 10+ godina, dok je moderna Scala mnogo vise vezana za typed FP, effect sisteme, Cats Effect, ZIO, fs2 i slican ekosistem.
A poredjenje sa Elixirom mi tek nema mnogo smisla. To su jezici sa prilicno razlicitim ciljevima, type sistemima i runtime modelima, pa ne znam kako je Elixir uopste dosao kao alternativa Scali u tom kontekstu. I pritom Elixir nema svoj VM, vec radi na BEAM-u, Erlang VM-u.
2
u/narrow-adventure 1d ago
Ne razumem. Mislim da sam jako jasno naveo kad je skala imala (po meni) poentu: pre nego što su drugi jvm jezici dodali slatkiše za programere, sada je jednostavno nema. Kreatori scale su bili izuzetno kreativni i napravili su jako fleksibilan jezik, na žalost Java i Kotlin su uzeli minimum koji je bio potreban da naprave korišćenje skale bez poente. Ne verujem da bi uspeli da je spasu i da nisu bili fokusirani na istrazivački rad.
Elem, C ima dovoljno diferencijacije i ekosistema u odnosu na druge jezike da je našao masovnu primenu, ovo je ono što fali scali.
Akka je bila jedna od najboljih stvari kod skale, ceo lightbend line up projekata je bio neverovatan. Na žalost ni to nije bilo dovoljno da učini scalu dovoljno popularnom. Brzina razvoja moderne jave i springa je kompletno obrisala sve prednosti scale. Znam jer sam prošao kroz to u realtime-u kao jedan od contributora na play framework-u…
Elixir sam naveo kao FP jezik, koji je uspeo da ima dovoljno razlike i prednosti u odnosu na druge i da nadje neki nivo adaptacije. Mislim da nisi razumeo moju rečenicu za elixir-ov VM, doduše jesam je konfuzno napisao, poenta nije bila da je VM elixirov nego da VM na kome je ima prednosti u odnosu na JVM (ili bar velike razlike) konkretno po pitanju multi threadinga.
Ono, sve ovo je moje mišljenje bazirano na mom iskustvu i tome što sam gledao radjanje i propast scale u realnom vremenu :’)
3
u/skrbic_a 1d ago
Ja Scalu pisem profesionalno od 2019. do danas, tako da je nisam bas samo posmatrao sa strane :) Verovatno zato i imamo malo drugaciju perspektivu na to sta je Scala bila, a sta je danas.
Mislim da se zapravo slazemo oko stanja trzista, ali ne i sa prvom recenicom da je Scala "jezik bez ikakve prednosti i poente".
Java i Kotlin su postali dovoljno dobri da vecini firmi prednosti Scale vise nisu vredne dodatne kompleksnosti, ali to ne znaci da su te prednosti nestale. Scala i dalje ima dosta mocniji type system i ceo typed FP/effect systems ekosistem oko Cats Effecta, ZIO-a, fs2 itd. Java i Kotlin nisu to zamenili, samo vecini ljudi to nije potrebno.
Mislim da se razlika u perspektivi vidi i po tome sto Scalu i dalje dosta vezujes za period Akke, Play-a i Lightbenda. To jeste bio ogroman deo njenog ekosistema pre 10+ godina, ali moderna Scala se vec dugo ne vrti prvenstveno oko toga. Spring je pojeo Play i slicne frameworke u mainstream JVM backendu, ali Spring i Akka nisu bas direktni konkurenti.
Za research se skoro potpuno ne slazem. Po meni je upravo konstantan focus na language research jedan od razloga zasto je Scala izgubila deo industrije. Scala 3 postoji godinama, a Spark je i dalje na 2.13. Databricks i dalje ozbiljno investira u Scala 2.13 tooling. Scali po meni nikad nije falilo novih ideja, mnogo vise su joj falili stabilnost, tooling, compatibility i fokus na ljude koji je koriste profesionalno.
U sustini, potpuno se slazem da je Scala izgubila mainstream JVM bitku. Samo je velika razlika izmedju "vecini firmi prednosti vise nisu vredne tradeoffa" i "jezik nema nikakvu prednost i poentu".
2
u/narrow-adventure 1d ago
Iskreno, ja posle 2019 nisam koristio scalu, tako da mislim da je tvoje mišljenje o modernoj scali relevantnije. Priznaću i da sam malo preterao da nema poentu. Kapiram šta sad kažeš za ovaj fokus na istraživanjima radije nego na stabilnosti, nisam o tome razmišljao na taj način. Mislim da se u potpunosti slažemo o trenutnom stanju.
E sad zabavniji deo, Akka je meni bila neverovatan pristup dovodjenja actor sistema kao ključnog mehanizma za pravljenje distribuiranih sistema. U Play-u konkretno Akka je bila ključ svega, uključujući i same socket-e (svaka konekcija je bila aktor). Spring je po meni bio direktan konkurent ne samo Play-a već i za Akke jer je obezbedio primitive za sve stvari za koje su aktori već bili rešenje. U smislu da ti anotacije za async taskove, primitivu za sockete, njihov scheduler, njihov sistem za IOC i DI bez aktora. Nije pomoglo što je lightbend najsporija firma na svetu (jedan PR i issue koji sam otvorio tipa 2015 su odlučili da mergeuju/rade na njemu prošle nedelje).
Bacicu pogled na ove stvari koje si napisao i na to gde je scala trenutno, ali najveći deo pada je (po meni) bio taj period 2017-2018 godina kad je java 8-9 postala mainstream sa spring boot-em. Jak ekosistem, lako za podešavanje i relativno moderna sintaksa, FP kompletno moguć.
3
u/skrbic_a 1d ago
Da, Akka jeste elegantno resenje za concurrency i distributed systems, ali te tera da kompletno promenis nacin razmisljanja i da modelujes sistem kroz njene dosta rigidne obrasce. Nekome to legne, nekome ne, a po meni je za 99% aplikacija jednostavno nepotrebno.
Njena velika prednost je bila sto si relativno lako dobijao concurrency plus dosta resilience/self-healing patterna kroz supervision, isolation itd. A kad dodas Akka Cluster i Cluster Sharding, dobijes i vrlo mocne primitive za distribuirane sisteme. Koliko znam, Spring ni danas nema direktan ekvivalent tome, samo sto ogromnoj vecini Spring developera to realno ni ne treba.
Typesafe, kasnije Lightbend, je pokusao da izgradi ceo stack oko toga kroz Play i Lagom, ali rekao bih prilicno neuspesno :)
A posto vidim da radis Go, mozda je najbolja analogija za modernu FP Scalu da je concurrency u Cats Effect/ZIO mentalno mnogo blizi gorutinama nego Akki. Ne u smislu implementacije, nego nacina razmisljanja: lightweight taskovi/fiberi, structured concurrency, cancellation, resource safety itd, umesto da ceo sistem modelujes kao aktore koji salju poruke.
I iskreno, Scala mi je kao jezik dosta prijatnija od Go-a za rad, pogotovo kad imas kompleksniji data modeling i hoces da dosta stvari izrazis kroz type system. Ali i ja, posle godina rada u Scali, da danas moram da biram jezik za novi projekat, verovatno bih pre izabrao Go. Ne zato sto je bolji jezik, nego zato sto mi je sve teze da opravdam dugorocni rizik i buducnost Scala ekosistema.
•
u/rom_romeo 4h ago
Typesafe/Lightbend/Akka i Typelevel - dva grobara Scala ekosistema. Kad skontaš, ova prva firma ne može da se odluči ni za ime, a kamoli za licence. Svojevremeno su okupljali jako ozbiljan talenat (lično sam poznavao neke od njih), ali poslovna politika im je totalna katastrofa. Typelevel ne treba ni da komentarišem. Kad si delulu i bezobrazan u isto vreme.
0
u/CodesInTheDark 1d ago
Počela je propast kada je Java počela da uvodi stvari koje ima Scala. A sada ni Akka nema poente jer je mnogo lakse koristiti Virtual threads (fibers) i structured concurrency (znam da nije isto kao Akka) da dobiješ iste performanse. Retko ko ima toliku kompleksnost da mu treba Akka, mada i to može u Javi.
2
u/skrbic_a 1d ago
Da, lambde i records u Javi su definitivno sahranili Scalu, hvala na istorijskoj analizi :)
Java je postala prijatnija za prosecan backend, ali ono sto Scalu razlikuje nikad nisu bile lambde nego type system, typed FP, effect systems itd.
A ovo za Akku i "iste performanse" je jos bolje. Iste performanse cega tacno? Virtual threads resavaju jeftin concurrency, Akka je davala supervision, clustering, sharding i distributed systems primitive. Nisu isti problem.
I "moze i u Javi" je vrh argument, pogotovo sto Akka bukvalno ima Java API :)
1
u/narrow-adventure 1d ago
Pazi, bacicu predikciju, Java ce da prodje kao Skala. Akka je bila poslednja sansa Jave (kao i skale) da se izvuku i prezive, umesto toga Java je krenula da gura sve moguce jezicke funkcionalnosti u jezik. Trenutna popularnost spring boot-a ce da pocne da opada sa rastom Go ekosistema i jezici poput Go-a ce poceti da uzimaju sve veci i veci deo market-a od Jave... Licno mislim da je akkin pristup, slican elixiru, bio nacin da nadmasi Go pristup paralelizmu.
Sta ti mislis? u/skrbic_a
1
u/skrbic_a 22h ago
Tu se ne bih bas slozio da je Akka bila neka sansa da Java/Scala "nadmase Go pristup paralelizmu". Actor model nije specifican za JVM, imas sasvim dobre actor implementacije i u Go, Rust znaci nije to neki game-changer...
Akkin pravi selling point po meni nije bio "bolji concurrency od Go-a", nego kompletan distributed/resiliency stack oko actora: supervision, remoting, clustering, sharding, persistence itd.
A Scala je dosta industrijske popularnosti dobila i zato sto su veliki sistemi poput Kafka-e i Spark-a pisani u Scali. Ni jedan ni drugi nisu zasnovani na Akki, tako da mi je tesko da Akku vidim kao neku poslednju sansu za Scalu.
Za Go se slazem da ce nastaviti da uzima deo backend/infrastructure(ovo posebno) trzista i ja bih danas verovatno i sam pre izabrao Go za novi projekat.
Ali ako pricamo o bas velikim codebaseovima, meni je iskreno mnogo lakse da se navigiram kroz dobro napisan Java/Scala sistem nego kroz veliki Go codebase. Bogatiji type system, ADT-ovi, jasniji domen modeli i vise informacija u samim tipovima dosta pomazu kada projekat naraste. Go je fantastican dok je sistem relativno jednostavan, ali njegova namerna jednostavnost ume da postane ogranicenje kada data model i domen krenu ozbiljno da se komplikuju.
2
u/narrow-adventure 22h ago
Iako se ne slazemo uvek bih sa tobom pivo/kafu popio.
Kad sam rekao "nadmase Go pristup paralelizmu" mislio sam iskljucivo na mogucnost Akka cluster vs csp, u smislu csp je samo u jednom procesu. Mozda, ali ja verujem da virtualne niti iako jako slicne go rutinama nisu dovoljno da zaustave Go, dok mogucnost izolacije aktora u procese jeste bila.
Ovo je stvar licnog pristupa, meni je drasticno lakse da citam idiomatican Go kod nego idiomatican scala/java kod zbog cistog manjka indirekcija. Dve stvari dovode do ovoga u vecina moderne jave:
1 - DI je baziran na runtime ponasanju (ne mozes da garantujes da kod koji citas je kod koji se ustvari izvrsio jer konkretna implementacija servisa u produkciji je mogla da bude drugacija od one koju ti verujes da je bila povezana)
2 - Svaki get/set/abstrakcija moze da krije ponasanje (nemoguce je da procitas 10 linija koda i da znas sta rade jer je skoro svaka linija koda poziv funkcije ciji kod moras takodje da procitas)U sustini slazemo se oko buducnosti samo iz razlicitih razloga haha
1
u/skrbic_a 21h ago
Eto, negde se slazemo, negde ne :) Da je bar vise ovakvih diskusija na ovom subu.
1
u/rom_romeo 15h ago
Taj jezik je apsolutni tata kad je u pitanju konkurentno i asinhrono programiranje. Akka je mahom bila beskorisna. Čak i kad bi joj se našla korisna primena, zahtevala bi specijalizovanu infrastrukturu, tipa DC/OS i sopstvene servere da bi uopšte sve došlo do izražaja. Velika farsa je što dosta ljudi misli da je Akka bila o "performansama". Akka je bila samo toolkit za tzv. reaktivne aplikacije. Apstrakcija.
S druge strane, jedna od najboljih stvari koje su uradili je prihvatanje idiomatskog FP stila. Scala je jako brzo odbacila ideju "bolje Jave" i krenula svojim stopama. Zato je i preživela, a npr. Groovy je praktično na izumiranju. Ceylonu je pop davno opevao opelo.
0
u/MrDilbert 1d ago
Jezik kao jezik mi se jako sviđa.
Njegovo "svećenstvo", baš i ne pretjerano.
Mislim da je Kotlin preuzeo mjesto koje je prije držala Scala.
4
u/mgalexray 1d ago
Ima… ali sve manje i manje. Nije jezik popularan koliko je bio pre 10-ak godina. Manje više je Kotlin preuzeo tamo gde tim želi nešto ekspresivnije od Jave, a ni Java sad uopšte nije toliko loš izbor ako želiš JVM.
Mi smo manje više odustali od Scale jer je nemoguće naći inženjere koji je znaju a ujedno imaju dosta iskustva da znaju šta ne treba raditi.
Source: me (koji je koristio Scalu 8+ godina)