de cand am schimbat C# cu Scala am tot avut ganduri ca ba vreau sa revin, ba nu C# (.Net core, devenit .net, rebranduit ca vechiul asp.net parca).
Pro C# ar fi async awaitul care nu-ti dadea batai de cap, serializare json (NewtonJson, nici macar n-aveam idee cum se transforma o clasa in json pentru a fi trimis clientului), functii lambda, DataContextul (cu EF Core nu prea existau probleme cu db-ul), comunitate, chiar si buildul e ceva mai rapid. Ca minusuri, acoladele obligatorii peste tot (conditional operator mai ajuta), cresterea liniilor de cod inutila, IIS, probabil si altele, dar nu-mi amintesc acum (sau nu stiu)
Pro Scala, ah, aici imi place matching patternul (personal imi pare un switch mult mai optimizat), Optionalul (luat din Java, chiar daca uneori e mai enervant vs nullul din C#), Try’ul, Futures (m-au facut sa inteleg oarecum cum functioneaza partea asta de async await, ce in C# nu ma interesa prea mult), faptul ca este foarte flexibil in scriere (iti permite sa declari metode ce contin caractere, nu esti obligat sa folosesti acolade pentru metode sau functii scurte). La inceput ma speriase faptul ca e limbaj functional. Fals, e multi, un api scris in .NET Core poate fi la fel de bine scris in Scala, chiar mult mai comprimat. Problema la scala e la serializare (mie imi da batai de cap, dar asa am avut ocazia sa invat mai multe decat in C#). Daca nu folosesti un framework (Play! fiind cel mai comun) o sa trebuiasca sa scrii writes/reads custom pentru fiecare clasa (si mai complicat unde ai generice). Altceva, jdbc-ul imi pare mult mai problematic decat ce ofera C#. Erori de conexiune mult mai dese si mult mai greu de depistat. Futures’urile, daca abuzezi de ele (ca in cazul meu), o sa dea batai de cap. Totusi, nu de mult timp incep sa prefer deployul unui jar pe centos vs deployul unei aplicatii C# pe IIS (un chin). Scala e nisat pe Big Data, mie ca web dev mi se pare enervant sa primesc oferte de joburi doar din domeniul asta :))
In java tot ce pot sa retin sunt getterii si setterii C#/Scala i-au ascuns cat de mult au putut
N-am vrut sa transform postul intr-unul C# vs Scala, Scala fiind in mare parte scris in java, si isti specificandu-l, am zis sa-mi las si eu ideile aici