Co z tą Scalą ?

2

Cześć.
Pracuję jako programista Javy i sporo od różnych osób słyszę coś pozytywnego na temat Scali. Ostatnio postanowiłem prześledzić temat.
Sam język stosunkowo młody już nie jest, jednakże w internecie treści na jego temat aż tak wiele też nie znalazłem (a już na pewno nie po polskiej stronie). Nie mniej jednak kiedy zacząłem przeglądać składnię to... zakochałem się. Naprawdę, może to pierwsze wrażenie, może to że jestem jeszcze juniorem z niespełna rocznym doświadczeniem i niewiele w życiu widziałem ale składnia, elastyczność i możliwości języka niesamowicie mi się spodobały. Czytając trochę o języku znalazłem wiele pozytywnych opinii, nawet na 4p przewinęło się kilka tematów:

Ostatnio napotykam sporo opinii, że Scala jest takim świetnym językiem programowania.

(rok 2009: http://4programmers.net/Forum/Java/152725-Scala) . Nawet na swoim blogu Pan Jacek Laskowski (notabene ceniona persona) napisał:

Rok 2015 musi być rokiem Scali w Polsce (...)
(http://jlaskowski.blogspot.com/2015/03/potrzebujesz-pracy-woko-jezyka-scala.html)
Jednakże jakąkolwiek wyszukiwarkę pracy zapytać o Scalę to wypluwa jedynie kilka ogłoszeń. Zdaję sobie sprawę że nie jest to żaden wyznacznik, jednakże mam wrażenie że wiele osób się zachwyca a język mimo wszystko dalej jest technologią niszową.

Chciałbym się więc zapytać, co z tą Scalą? Dlaczego pomimo tak sporego zachwytu język nie jest tak popularny? Dlaczego tak niewiele projektów (przynajmniej takie mam wrażenie) pisanych jest z wykorzystaniem Scali? Co sprawia że ludzie się nim zachwycają ale z niego nie korzystają? (Są to oczywiście tezy bez pokrycia jednakże takie odnoszę wrażenie).
Osobiście nie planuję się nagle przebranżowić, jednakże poświęcam trochę czasu dla nauki języka ponieważ sprawia mi sporo przyjemności i bardzo przypadł mi do gustu.

Jakie jest Wasze zdanie?
Pozdrawiam,
eL

0

Dlaczego pomimo tak sporego zachwytu język nie jest tak popularny? Dlaczego tak niewiele projektów

Weź pod uwagę o jakim targecie mówimy, obracamy się wokół wielkich korporacji i dużych projektów, tego się od tak nie przepisze na scale. Oczywiście będzie się tego pisało coraz więcej, ale to nie jest kwestia roku, raczej dziesięciu "roków"

4

Ja natomiast widze że coraz więcej rzeczy Open Source jest w Scali pisanych, np Spark. Powoli przestaje być to język używany jedynie przez garstkę fanatyków.
Ogłoszeń to prawda jest mało, ale coraz mniej jest osób które o tej technologii nie słyszały - każdy szanujący się Javowiec już słyszał. @Wibowit przepowiadał że popularność Scali będzie rosła, ja mu początkowo mało wierzyłem i planowałem sobie robić backup w postaci Javy, ale skończyło się tak że interesuje się JVM'ką ale wrócić do Javy nie potrafię po tym jak polubiłem składnie i poczułem programowanie funkcyjne i myśle że to zjawisko może dotyczyć większej grupy ludzi - ze Scali do Javy to jakby cofnąć się w rozwoju.

0

W mojej firmie jest 2 programistów javy. Żaden nie slyszał o Scali... chociaż raz mieli jakąś bibliotekę pod jvm, napisaną w scali której potrzebowali użyć. Posypały się tylko narzekania że to napisane w jakimś dziwnym czymś (nie wiem czy nawet doszli do nazwy "Scala") no i nic nie zmieniali w kodzie pomimo że by się przydało bo " składnia dziwna i po co jej się uczyć". Dalej nikt tematu nie drążył.

0

A poleci ktos jakies zrodla z czego sie uczyc? Robie w java od niedawna, napisalem pare helloworld w scala i wyglada to calkiem fajnie.

Jakies frameworki na poczatek? Play?
Ma ktos przyklad jakiegos cruda w play, z dostepem do bazy danych, pewnie ze Slick?

Z gory thx.

0

Do wystawienia RESTa możesz wybrać też coś prostszego, bardziej niskopoziomowego, jak np. Akka-HTTP (dawny Spray).

0

"In Play 2.4, Play will be ported to the new akka-http (formerly known as spray), at which point, Play will be as built on Akka as you can get."
http://stackoverflow.com/questions/22718905/how-is-akka-used-in-play

Czyli... chyba rozsądniej byłoby zacząć naukę od Akka-http?

0

Nie, zmienią się tylko "bebechy" Playa. Obecnie Play używa Netty jako backend, a nawet o tym nie wiesz. W dodatku wersja 2.4 już jest, a oni dopiero eksperymentują z backendem zbudowanym na akka-http. https://www.playframework.com/documentation/2.4.x/AkkaHttpServer
Nawet nie wiadomo, czy to będzie wystarczająco dobry, żeby zastąpić Netty, więc nie ma się co napalać :)

0

Pan Jacek Laskowski napisał tak a nie inaczej, ponieważ zajmuje się m.in. promocją Scali.
Byłem na jego prezentacji, całkiem ciekawa, chociaż dostosowana raczej dla początkujących odbiorców.

0

No ale generalnie, po co się teraz uczyć Scali? Skoro i tak na dzień dzisiejszy wszystko pisze sie w Javie. Praca jest w Javie i nigdzie nie jest wymagana znajomość Scali. Nigdzie też nie ma tak, że do tego, co robiłoby się w Javie, zamiast Javy wykorzystuje się Scalę.

Ja rozumiem, że komuś może sie podobać Scala, ktoś może doceniać zalety Scali w stosunku do Javy (zakładam, że jakieś są). No ktoś taki, jeśli chce może zgłębiać temat. Na tej samej zasadzie można uczyć się np języka D, a nawet i języka R zapewne. W pracy zawodowej się to nie przyda jednakowoż, więc jeśli jakiś programista Javy, który zresztą poza pracą ma też i życie prywatne twierdzi ze nie ma sensu uczyć się Scali, to jestem w stanie to zrozumieć.

Można sobie wyliczać i wynajdywać powody, co to Scala daje więcej i co w Scali można zrobić bardziej elegancko niż w Javie. Problem w tym, że w realnym życiu nikt tego nie robi, pisze sie w Javie i już. Gdy już Scala zdobędzie popularność, to pojawią się programiści Scali i może nawet będzie większe zapotrzebowanie na nich, niż na programistów Javy.

Póki co, lepiej żeby programista Javy skupil się na tym, co ma robić czyli na programowaniu w Javie, a jeśli daruje sobie jakieś niszowe wynalazki, które nigdzie nie są wykorzystywane (albo prawie nigdzie i nigdy) to nic na tym nie straci.

0

@Czarny Kaczor matka wie że ćpiesz? Jak najbardziej pisze sie soft w Scali, nawet tu na forum mamy osoby które pracują jako koderzy Scali. Równie dobrze mógłyś dowodzić że nie warto się uczyć Javy bo przecież w PHP powstaje więcej softu :D

0

GDZIEŚ tam sie pisze zapewne soft w Scali. Jeśli jednak pracujesz w firmie, która zajmuje sie programowanie w Javie, to po co ci uczyć się Scali? Wszyscy piszą w Javie i robią to dobrze, nikt akurat nie potrzebuje uczyć się innego niszowego języka pod JVM.

Poza tym, twoje porównanie do PHP dość kiepskie jest, wskaż mi 10 aktualnych ogłoszeń gdzie ktoś szuka programisty Scali. Jednak twierdzenie, że każdy programista Javy powinien też znać Scalę i interesować się Scalą jest jak dla mnie z gruntu fałszywe.

0

http://careers.stackoverflow.com/jobs/tag/scala wiecej niz 10, co wygralem ?

0

Po co Scala? Chocby dla nauki funkcynyjnego paradygmatu. Przeciez to jest przyszlosc. I w takiej java 8 czuc juz przenikanie tego. No i jest chocby guava.

0
Wibowit napisał(a):

https://www.typesafe.com/activator/template/play-scala-intro

Jak to zaciagnac do intellij ? Bo wywala bledem, ze zla wersja sbt. :(

1

Pracuję jako programista Scali w krakowskiej filii międzynarodowego banku. Cały projekt jest zaklepany w Scali. Do naszego zespołu przeszło kilku dobrych programistów Javy z innych zespołów i teraz klepią w Scali. Ofert w Scali nie szukam, bo ich wiele nie ma. Za to dostaję na bieżąco oferty pracy na skrzynkę w portalu LinkedIn. Przejście na Scalę mimo wszystko może być trochę problematyczne, ale np w Krakowie jest VirtusLab, gdzie spokojnie można się dostać nawet z niewielkim doświadczeniem komercyjnym i nabrać umiejętności.

Update:
Pracuję od niecałego roku w obecnej firmie, a nie chcę co chwilę zmieniać pracy (średnio pracowałem mniej niż rok w jednej firmie). Nie szukam pracy na bieżąco, więc mogę też nie być na bieżąco z ofertami pracy. Sytuacja z ofertami się jednak szybko poprawia.

0
Biały Pomidor napisał(a):

http://careers.stackoverflow.com/jobs/tag/scala wiecej niz 10, co wygralem ?

Nie, bo ineresuje mnie Polska a nie cały świat.

0
Świetny Orzeł napisał(a):

Po co Scala? Chocby dla nauki funkcynyjnego paradygmatu. Przeciez to jest przyszlosc. I w takiej java 8 czuc juz przenikanie tego. No i jest chocby guava.

No ok, ale wytłumacz mi po co typowemu, nawet starszemu programiście Javy uczyć się, Scali? 99.9% zajebistych programistów Javy może lać ciepłym strumieniem moczu na to, że istnieje jakaś Scala i będą dalej rozchwytywanymi i świetnymi programistami Javy. A póki co, znajomość Scali na polskim rynku pracy nie będzie żadnym atutem. Dlatego dziwi mnie trochę wyśmiewanie fakty, że jakiś programista Javy nie słyszał nic o Scali i nie zamierza się jej uczyć bo nie widzi takiej potrzeby.

0
Czarny Kaczor napisał(a):

No ok, ale wytłumacz mi po co typowemu, nawet starszemu programiście Javy uczyć się, Scali? 99.9% zajebistych programistów Javy może lać ciepłym strumieniem moczu na to, że istnieje jakaś Scala i będą dalej rozchwytywanymi i świetnymi programistami Javy. A póki co, znajomość Scali na polskim rynku pracy nie będzie żadnym atutem. Dlatego dziwi mnie trochę wyśmiewanie fakty, że jakiś programista Javy nie słyszał nic o Scali i nie zamierza się jej uczyć bo nie widzi takiej potrzeby.

Szczerze wątpie, ze Ci 'zajebisci programisci java' nie slyszeli o scali, predzej tacy, ktorzy sie wypalili i popadli w rutyne. Sam siedze w Java od niedawna, ale mam tyle newsletterow, ze o Scali slyszalem i nawet troche sprobowalem. Groovy mniej popularne, a trochę używamy w pracy...

Sam uważam, że najlepiej być specjalistą w jednej dziedzinie. Ale poznawanie nowych/innych technologii jest rozwijające. Fajne rzeczy z innych technologii staramy sie przeniesc do swojej glownej technologii i w ten sposob stajemy sie ogolnie lepszymi programistami. Warto sie uczyc chocby dla samej ciekawosci swiata programistycznego.

Poza tym Java zyc wiecznie nie bedzie, lub bedzie sie zmieniac i wedlug mnie bedzie pozyczac od Scali, albo beda wspolnie sobie zyły.

6

Czytając ten wątek dochodzę do wniosku, że programista Javy to nie tyle stan umysłu, co wręcz stopień ewolucji. Dla niektórych najwyraźniej już ostatni. ;P

0
somekind napisał(a):

Czytając ten wątek dochodzę do wniosku, że programista Javy to nie tyle stan umysłu, co wręcz stopień ewolucji. Dla niektórych najwyraźniej już ostatni. ;P

Zeby byc naprawde fajnym java developerem to musisz chodzic w wypasnych koszulkach z kawą i haslami jakim to super geekiem jestes i patrzec z pogarda na reszte!

A tak serio to ten play'owski tool activator całkiem w pyteczkę narzędzie! Nawet niezle UI:

1

Co tam programowanie funkcyjne, główną zaletą Scali jest dobry system typów generycznych, lepszy niż ma Haskell (i daleko lepszy od template'ów C++):

user image

Za: http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.176.5300&rep=rep1&type=pdf

Z innych fajnych rzeczy, które tracicie kodując w Javie - popatrzcie sobie na async/await z C#. Java nie ma i długo nie będzie mieć. W C# zrealizowano to przez dopisanie niezłego kawałka do kompilatora. W Scali zostało zrealizowane jako... biblioteka (przy czym przekształcenie działa tak samo jak w C# to jest w trakcie kompilacji). Mało który język daje taki power twórcom bibliotek.

Co do ofert pracy w Scali, to jest wiele ukrytych, gdzie oficjalnie jest Java, ale można kodować w Scali jak ktoś chce. Np. ja pracuję w firmie, która gdy dołączałem nie miała ani jednej linii kodu w Scali, a teraz ostatnio prawie zapomniałem już jak się w Javie koduje, bo od półtora roku klepię tylko w Scali, dlatego że w Javie to samo wyglądałoby paskudnie i musiałbym co chwilę rzutować dynamicznie, czego bardzo nie lubię robić.

2

Mam teorię. Widać ostatnio wzrost postów w stylu Jak szybko od zera stać się programistą javy i kosić hajs. Na obecnym rynku najwięcej najlepszych oferty jest właśnie w Javie, wiec ludzie myślą że to jest ostatni przystanek ich drogi krzyżowej i to właśnie tam znajdą zbawienie. No a po co uciekać z rynku który jest dobry? Przecież starsi programiści javy to najlepsi ludzie na świecie i zarabiają najwięcej!

Chciałbym dodać też coś od siebie. Spotkałem na swojej drodze wielu starszych programistów czy architektów. Ludzi którzy byli bardzo doświadczeni i niejeden projekt mieli na koncie. Można ich było podzielić na "pracowników" i "zapaleńców". Pierwsi znali Javę i sporo stosu. Nie obchodziły ich inne języki, bo pracowali w tym konkretnym. Drudzy próbowali nowych rzeczy, bo nawet jak w pracy się nie przydało, to chociaż tak dla siebie. I o ile ten pierwszy typ wiedział jak doprowadzić projekt od początku do końca, to Ci drudzy mogli oprócz tego mnie wiele nauczyć. Mogli powiedzieć że w języku X jest coś jednak dużo lepiej rozwiązane niż Javie. Mogłem to sprawdzić i ocenić. Dzięki temu mogłem się rozwijać.
Dzisiaj słucham już tylko tych "zapaleńców". Oni się nie zatrzymują w rozwoju i zawsze powiedzą coś ciekawego. "Pracowników" unikam, bo nie mówią nic ciekawego, a zwykle dość przestarzałego.
Podsumowując. Gdyby ludzie wierzyli że nie ma czegoś lepszego niż to w czym obecnie piszą, to dzisiaj dziurkowałbym karty, albo w ogóle liczył ręcznie.

Uczenie się scali ma jeszcze 1 bardzo dużą zaletę. Na tym forum, po wejściu javy 8, ludzie zaczęli się jarać nowymi funkcjonalnościami jak małe dzieci nową zabawką. Tak jakby nastała nowa era, czy coś w ten deseń. A prawda jest taka że z 90% nowości z javy 8 było w scali już długo. Nawet przy pierwszych draftach javy 8, lambda była oznacza przez => a nie ->. Zmienili to po czasie. I tak, jeżeli ktoś pisał w scali wcześniej, to java 8 nie wprowadza zbyt wielu nowości. Reszta to odgrzany i ciut przerobiony kotlet z innej restauracji.

Znając scalę i pisząc w Javie jesteś zawsze kilka kroków do przodu.

0

Chyba glowny minus scala to wolny kompilator ale mam nadzieje, ze i na to znajdzie sie rada.

3

Główny minus Scali to że nauczenie się jej leży poza strefą komfortu wielu programistów Javy.

0

Scala wygląda nieźle tylko brakuje mi tam kilku frameworków

1

@karolinaa Problem ze Scalą jest taki, że można napisać kod, który dla przeciętnego czytającego programisty nie różni się niczym od Brainfucka.

0

Czyli coś jak Perl?

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