Nauka Scali w 2018

0

Uważacie, ze jest sens nauki Scali? Java w najnowszych wersjach jest już też praktycznie funkcjonalna. Ofert dla Scala Developerów jest stosunkowo niewiele na ten moment. Teraz pytanie - czy ma to szansę się zmienić w najbliższej przyszłości? Za parę lat być może to Scala wyprze Jave z rynku, ale mimo wszystko wydaje mi się, że jest językiem o wiele trudniejszym niż Java.
Widzicie rzeczywiście jakieś korzyści z nauki Scali, żeby zająć się nią na drodze komercyjnej, czy raczej jest to hobbystyczny język?

2

Uważam, że nauka Scali przyda się nawet jeśli nigdy nie będziesz jej używać komercyjnie. Wykorzystanie języka gdzie nacisk kładzie się na paradygmat funkcyjny może pomóc Ci pisać lepszy kod w Javie. Poza tym wiele konceptów ze Scali (tych, które się sprawdzają) pewnie będzie wchodziło do Javy w najbliższych latach - np. pattern matching.

Jeśli chodzi o wyparcie Javy przez Scalę to pewnie to nie nastąpi.Liczba konceptów do ogarnięcia jest zdecydowanie większa niż w przypadku Javy, a więc nowe osoby mogą szybko się zniechęcić. Może Dotty będzie miał większą siłę przebicia ze względu na uproszczenie pewnych mechanizmów.

Jeśli chcesz znaleźć pracę w Scali to w Polsce jest to jak najbardziej realne. Osobiście, z perspektywy czasu bardzo cieszę się z przejścia na Scalę, mi się po prostu przyjemniej w niej pisze niż w Javie.

1

Tworzysz jakieś biznesowe aplikacje podobne do tych, które są w Javie? Jeżeli chodzi o sam rozwój, community języka to jest ono ok? No i koniec końców, czy zarobki w Scali są wyższe niż te w Javie?

Pewnie znajdą się projekty o podobnej tematyce pisane w Javie, nie mniej nie jest to żaden typowy CRUD czy webowa apka. Z tego co obserwuje w Scali łatwiej jest złapać ciekawszy projekt.
Z mojej perspektywy community jest bardzo ok. Całkiem sporo darmowych i aktualnych książek (scala with cats, FP for mortals), biblioteki mają bardzo porządnie napisaną dokumentacje, oficjalna książka Orderskiego też jest przystępnie napisana (https://booksites.artima.com/programming_in_scala_3ed)
Nie nastawiałbym się na jakiś skok zarobkowy. Wszystko zależy od miasta ale stawki są bardzo porównywalne do tych Javowych, czasami będą nieznacznie większe, czasami troszkę mniejsze od przeciętnych Javowych stawek regular/senior

1

Java w najnowszych wersjach jest już też praktycznie funkcjonalna.

:D :D :D
To że coś ma lambdy nie powoduje, że jest praktycznie funkcyjne. Jeśli przyjmować taką definicję funkcyjności, to nawet C jest funkcyjne, bo ma wskaźniki na funkcje.

Za parę lat być może to Scala wyprze Jave z rynku

Nie chcę być złym prorokiem, ale raczej nie ma to szans. Scala jest fajnym językiem, ale większości programistom raczej wystarczy Java z lambdami, lub Java z lambdami i ładniejszą składnią czyli Kotlin. Kotlin ma serio duże szanse stać się głównym językiem na Androidzie o ile już się nie stał (nie, nie lubię Kotlina, uważam że to był zły wybór Google, ale w nim piszę, bo jednak co oficjalne wsparcie, to oficjalne). Z drugie strony jak znasz Scalę, to w Kotlinie też umiesz. Widziałem nawet gdzieś ostatnio fajnego posta jak gościu sedem program ze Scali na Kotlina przerobił :D

Odpowiadając na pytanie tytułowe: tak, oczywiście warto się uczyć Scali bo jest to fajny język, którego twórcy wprowadzają realne innowacje, a nie opierają się tylko na zrzynaniu mechanizmów z innych języków. Dlatego warto się nauczyć Scali dobrze, a nie poprzestać jedynie na składniowej powierzchowności (która w Scali jest średnio udana). System typów Scali jest bardzo fajny, system typów Dotty jest jeszcze fajniejszy - poznawanie tych rzeczy to dużo zabawy.

Jeśli chodzi o komercyjne pisanie w Scali - to oczywiście jest to możliwe, więc jak się dobrze nauczysz Scali, to z pracą raczej nie będzie problemu. Jest jej mniej niż w Javie, ale prawie nikt nie robi CRUDów w Scali, więc odsiewa to automatycznie wiele słabych ofert.

0

Teraz odkąd Java 11 jest płatna, mniejsze firmy mogą przejść na Scala która jest na licencji BSD? Czy Scala szybciej się rozwija niż Kotlin?
Nie powstał ostatnio jakiś nowy język programowania na JVM?
Kiedyś uczyłem się Ceylon od RedHat, który też jest dostępny na JVM i nawet kilka projektów Open Source w nim napisano pod Gnome. Nie przepadam za Javą i składnią C++ podobną, ale Scala i Kotlin nie jest zły - mi się podoba ich składnia, taka prosta intuicyjna. Chociaż niektórych mogą przerastać na początku te wszystkie dodatkowe funkcje.

0
Błękitny Kaczoro napisał(a):

Teraz odkąd Java 11 jest płatna, mniejsze firmy mogą przejść na Scala która jest na licencji BSD? Czy Scala szybciej się rozwija niż Kotlin?
Nie powstał ostatnio jakiś nowy język programowania na JVM?
Kiedyś uczyłem się Ceylon od RedHat, który też jest dostępny na JVM i nawet kilka projektów Open Source w nim napisano pod Gnome. Nie przepadam za Javą i składnią C++ podobną, ale Scala i Kotlin nie jest zły - mi się podoba ich składnia, taka prosta intuicyjna. Chociaż niektórych mogą przerastać na początku te wszystkie dodatkowe funkcje.

Oprócz przejścia firm na Scalę potrzeba jeszcze Developerów Scali, a tych wcale tak łatwo nie jest znaleźć. Więc trzeba pamiętać o tym, że małe firmy zazwyczaj wybierają w miarę popularne języki. W takim przypadku Kotlin wydaje się być lepszą opcją niż Scala.

0
Błękitny Kaczoro napisał(a):

Teraz odkąd Java 11 jest płatna, mniejsze firmy mogą przejść na Scala która jest na licencji BSD? Czy Scala szybciej się rozwija niż Kotlin?

Nie Java tylko JDK. I nie jest płatny software tylko wsparcie do niego. No i Scala jest na tym samym JDK.
Kiedyś była na .NET ale zrezygnowali AFAIK.

0

Czekam na coś lepszego niż Kotlin i Scala.
reddit.com/r/Kotlin/comments/8pjecz/kotlin_already_surpassed_scala/

1

Haskell? No raczej nie.

Scala ma bardziej ekspresywny system typów niż Haskell:
https://ropas.snu.ac.kr/~bruno/papers/TypeClasses.pdf

Jak chcesz coś lepszego niż obecna Scala, to fajne jest Dotty (Scala 3).
Od pewnego czasu kusi mnie też Idris i trochę Rust, ale nie znam.

2

Jaki jest w ogóle sens takich wątków? To jakieś nowoczesne rozkminy bootcampowe?

Może jestem dziwny, ale jak chcę się jakiegoś języka nauczyć, to po prostu biorę książki/kurs i coś w nim programuje coś w miarę praktycznego, nie musi być od razu system operacyjny albo superhiperzaawansowany program. Może być prosty parser czegoś, jakiś konwerter - byle coś co zaciągnie kilka rodzajów typów i algorytmów do roboty i do tego, najlepiej, libów.
Może nie jest takie programowanie od razu zbiorem dobrych praktyk, ale coś próbuję. W ten sposób od razu wiem, to i to mi się podoba w tym języku, a tamto nie. Ew. pytam na stackach albo na redditach czy gdzie tam są jeszcze dane społeczności, jak zrobić coś w ogóle albo lepiej. Przy okazji takich "poszukiwań" trafiam na wątki społeczności dot. przyszłości języka i porównywań z innymi i one są rewelacyjne, bo to spojrzenie społeczności na sprawę.

Kwestie czy i ile się zarabia w danym języku i ile jest w nim ofert jest jedynie "skutkiem" ubocznym, ważne aby funkcjonalność pisało mi się przyjemnie + kod też czytało przyjemnie (zwłaszcza cudzy)

Serio - jak chcesz dużo zarabiać idź w COBOLA, albo jako szambonurek. Tam są zarobki. Tam nie będziesz miał takich rozkmin. A tak, Zosia powie, że Java fajna, Krysia, że Scala, Janusz, że asembler i będziesz tak kminił czego się uczyć i życie Ci na tym zejdzie.

1

Ale są języki, których poznanie skutkuje dużym poszerzeniem wiedzy ogólnej, potrzebnej np. w innych językach. A są języki takie, których można się uczyć, ale ta wiedza będzie miała bardzo wąskie zastosowania. Dlatego to nie jest wszystko jedno czy w 2018 roku uczyć się Perla, Cobola, Javy czy Scali.

Z punktu widzenia potencjału edukacyjnego, Scala jest dobrym wyborem:

  • posiada większość modnych ostatnio mechanizmów z OOP i FP
  • jest dość wysokopoziomowa, więc można niewielkim nakładem szybko napisać coś fajnego, bez konieczności rozkminiania technikaliów
  • ma statyczny system typów, więc kompilator łapie dużo błędów, co początkującym zdarza się często
  • nie jest egzotyczna składniowo - znasz Scalę, to praktycznie niemal znasz Kotlin (Android) i Swift (iOS); od popularnej Javy czy C# też nie różni się aż tak bardzo jak np. Haskell czy Clojure
  • trudno dojść do poziomu że "wszystko już umiem" - ciekawych rzeczy do nauczenia starczy na bardzo długo
  • działa na JVM, więc przy okazji Javy też trochę liźniesz i będzie w sam raz do pierwszej pracy w korpo ;)
  • jest wystarczająco popularna, aby znaleźć materiały w sieci, a potem komercyjną pracę
0

Dotty jest prostsze od Scali? Czy ma od groma tych różnych ficzerów?

0

Od groma ficzerów to ma C#, a jakoś dalej jest w mainstreamie.

1

Słyszałem że C# jest coraz bardziej skomplikowany i ludzie uciekają od niego do JVM. A najśmieszniejsze, że mówił to programista C# Maciej Aniserowicz z devstyle.

1 użytkowników online, w tym zalogowanych: 0, gości: 1