Co z tą Scalą ?

Wibowit
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: XML Hills
2
Szczur napisał(a):

Na rynku istnieje kilka języków które się "przyjęły" i które się sprawdzają - C# / Java / C++ / Python i jeszcze kilka.

A zastosowania jak sami wiecie wielu języków się pokrywają i teraz dlaczego firma X ma użyć niezbyt popularnej w porównaniu do innych Scali? Jakie to da korzyści poza fajną składnią? Szybciej napiszę aplikację? Coś jak w pythonie? A później tak jak w pythonie koszta utrzymania / rozwijania gdy projekt się powiększy przerosną koszta utrzymania kodu w C++? Czy jak projekt się rozrośnie to wtedy Prezesowi firmy X powie się że musi przepisać aplikację?

Scala według mnie podzieli los języka D. Przynajmniej w perspektywie kilku najbliższych lat.

Z mojego doświadczenia to Scala w przeciwieństwie do Pythona dobrze się skaluje do dużych projektów, pod warunkiem podzielenia na mikroserwisy (barierą dla monolitów w Scali jest czas kompilacji). Scala jest statycznie typowana i ma bardzo rozbudowany system typów, przez co nawet więcej rzeczy niż w Javie może być sprawdzane na etapie kompilacji.

Zaletą Scali jest oczywiście szybkość pisania kodu, zwłaszcza kodu funkcyjnego. Java jest daleko w tyle, nawet mimo lambd w Javie 8.

Biały Młot napisał(a):
Wibowit napisał(a):

Ja spotkałem się z cake pattern, scala-guice i MacWire, ale możesz użyć chyba dowolnej biblioteki do DI. Chociaż niektóre pasują do Scali jak pięść do oka, np Spring.

A co jest najczesniej stosowane w Scali jesli w ogole? czy moze czesciej wszystko jest ładowane do traitsów?
Czy da sie w ogole wstrzykiwac do trait albo objects?

Trait to coś pomiędzy interfejsem i klasą, więc jeśli da się do tego wstrzykiwać to do traita też. Object w Scali to singleton i nie ma on parametrów konstruktora. Inicjalizacja objectu następuje w momencie pierwszego odwołania do niego, więc wstrzykiwania w objeccie się nie da zrobić - w sensie takiego jak np poprzez Guice. Za to objecty są konstruowane przy użyciu cake-pattern.

Nie wiem co jest najczęściej używane. Najlepiej porobić sobie kilka projektów z różnym podejściem i sprawdzić co bardziej podchodzi. Do małych projektów można w ogóle nie korzystać z żadnego wstrzykiwania tylko robić coś na zasadzie:

Kopiuj
class Klasa(zależność1: Typ1, zależność2: Typ2) {
  ...
}

object Klasa extends Klasa(konkretnaZależność1, konkretnaZależność2)

Też działa, o ile w grafie zależności są same singletony. Dalej się łatwo testuje, bo w każdej klasie zależności są parametrami konstruktora, a nie odwołaniami na sztywno.

  • Rejestracja: dni
  • Ostatnio: dni
0

Dzieki. Guice chyba trafia jako standard do Playa, wiec przy tym zostaje.
Moge bindowac trait i class. Injectowac do object i trait z guice sie nie da.

  • Rejestracja: dni
  • Ostatnio: dni
0

W niektórych ofertach pracy znalazlem, że dodatkowy atut to np. zrobienie kursów jak:

Functional Programming Principles in Scala
Principles of Reactive Programming

Czy faktycznie warto ?

Wizzie
  • Rejestracja: dni
  • Ostatnio: dni
0

To są darmowe kursy Oderskyego, czyli twórcy języka, na Courserze. Oczywiście, że warto ;)

Koziołek
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Stacktrace
  • Postów: 6822
0

Pierwszy kurs to obowiązkowo powinien każdy zrobić. Szczególnie jak mamy elementy FP w Javie. Drugi już niekoniecznie, ale nadal warto.

  • Rejestracja: dni
  • Ostatnio: dni
0

Czy ktoś może mi wyjaśnić dlaczego w Scali wykorzystująć adnotację @Inject piszę się ją w kodzie razem z nawiasami - @Inject() ? Dlaczego nawiasy są wymagane ?

Wibowit
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: XML Hills
0

Nie jestem pewien, ale być może dlatego, by Scala nie potraktowała adnotacji i kolejnych tokenów jako notacji infiksowej.

  • Rejestracja: dni
  • Ostatnio: dni
1

Chyba jednak jest jakieś zapotrzebowanie na scalowców bo u mnie uczelni wprowadzili przedmiot ze scali prowadzony przez firmę zewnętrzną (GFT)

KA
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Warszawa
  • Postów: 1683
0

z Scalą to jest trochę jak z Bronisławem Komorowskim:

KR
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2964
  • Rejestracja: dni
  • Ostatnio: dni
0
Krzywy Młot napisał(a):

Chyba jednak jest jakieś zapotrzebowanie na scalowców bo u mnie uczelni wprowadzili przedmiot ze scali prowadzony przez firmę zewnętrzną (GFT)

Coraz wiecej eventow ze Scala tez.
Ale raczej Scala znajdzie swoja nisze niz zawojuje rynek.

  • Rejestracja: dni
  • Ostatnio: dni
  • Rejestracja: dni
  • Ostatnio: dni
0

Czytałem artykuł, niestety po angielsku, więc dużo nie zrozumiałem, ale z grubsza napisali coś takiego, że Scala już najlepsze lata ma za soba i raczej nie zwojuje rynku. Że po okresie zachwytów, finalnie już raczej się nie wybije. Zostanie niszową technologią. Firmy w ogóle niechętnie uciekają od Javy na rzecz innych języków z JVM.

02
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1176
0

Oceniacie popularnosc scali na podstawie ilosci ofert pracy. A ja jestem ciekaw ile ofert pracy daje scale tylko dlatego:

  • bo jest hype
  • bo chca odsiac korpo klepaczy a development i tak jest w javie
  • w scali pisze sie tylko utilsy a reszta jest w javie
Wibowit
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: XML Hills
0

Ja siedzę w obecnej firmie prawie 2 lata i przez większość czasu jest problem by zrekrutować nowych Scalowców. Praca jest w 100% w Scali. Co jakiś czas pojawiają się kandydaci, ale zwykle są albo zbyt słabi albo wybierają inne firmy.

Jest więc pewnego rodzaju błędne koło:

  • firmy niechętnie otwierają projekty w Scali, bo ciężko znaleźć pracowników,
  • potencjalni kandydaci mają małe doświadczenie w Scali, bo nie ma projektów, gdzie by mogli je zdobyć,
Koziołek
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Stacktrace
  • Postów: 6822
0

Nasuwa się pytanie - czy w przeciągu dajmy na to 20 lat powstanie język, który wyprze Javę/C# z korporacji. Pomijam C++, bo w tym się pisze też trochę inne rzeczy i nie tego dotyczy wątek.

02
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1176
0

@koziolek jakos w to watpie. Java/C# odniosly sukces bo byly prostsze niz C++ i mozna bylo zatrudnic klepaczy ktorzy byli w stanie dokonczyc projekt bez szczegolnej dyscypliny z ich strony. Jezyki funkcyjne sa trudniejsze koncepcyjnie i jakas watpie zeby klepacz z JanuszSoftu chcial sobie zadac wysilek zeby sie tego uczyc. Jezyki funkcyjne pozostana nisza dla ambitniejszych projektow (same ambitne projekty to i tak nisza w it).

  • Rejestracja: dni
  • Ostatnio: dni
1

Wydaje mi się, że musiałą by powstać całkiem nowa alternatywa do wirtualnych maszyn JVM i CLR, najlepiej otwarto źródłowa nie uzależniona od korporacji typu Oracle, Microsoft czy Google. Taki nowoczesny język i nowa wydajna maszyna powiedzmy PVM - Polish Machine Virtual i język programowania Poldek. Wszystko oczywiście Open Source aby społeczność programistów świata mogła się przyłączać do projektu i go rozwijać, składnia mogła by być w stylu Pythona z wydajnością lepszą od Javy. 100% sukces.

AD
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 67
0
Czarny Samiec napisał(a):

Wydaje mi się, że musiałą by powstać całkiem nowa alternatywa do wirtualnych maszyn JVM i CLR, najlepiej otwarto źródłowa nie uzależniona od korporacji typu Oracle, Microsoft czy Google. Taki nowoczesny język i nowa wydajna maszyna powiedzmy PVM - Polish Machine Virtual i język programowania Poldek. Wszystko oczywiście Open Source aby społeczność programistów świata mogła się przyłączać do projektu i go rozwijać, składnia mogła by być w stylu Pythona z wydajnością lepszą od Javy. 100% sukces.

Akurat duże przedsiębiorstwa wolą używać oprogramowanie, za którymi stoją jakieś firmy utrzymujące je. Temu w korporacjach króluje Java a w startupach Python.

Swoją drogą taką maszyną wirtualną ma szansę stać się Graal VM, który może działać nawet dla języków kompilowanych do kodu natywnego (jeżeli odbywa się to za pośrednictwem LLVM).

  • Rejestracja: dni
  • Ostatnio: dni
0

Scala to bardzo ciekawy język, chyba najciekawszy jeśli chodzi o JVM (chociaż nie znam, nawet z nazwy, wszystkiego co wyszło w JVM). Natomiast ktoś tu świetnie napisał - "nie ma pracy w Scali bo nie ma pracy w Scali". Tak się to kręci.

Podobnie jest chyba z Elixirem (obserwując ich forum, doszedłem do wniosku, że są tam jakieś firmy, ale szukają raczej tzw. mid- oraz senior-elixir dev :) A z drugiej strony, wielu juniorów pyta o pracę, żeby gdzieś zdobyć doświadczenie. ).

Koziołek
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Stacktrace
  • Postów: 6822
0

Elixir to trochę inna liga jeśli chodzi o wielkość firm i rynku jako takiego.

  • Rejestracja: dni
  • Ostatnio: dni
0
Koziołek napisał(a):

Elixir to trochę inna liga jeśli chodzi o wielkość firm i rynku jako takiego.

Tak, ale Scala jest już dość długo obecna, a Elixir dopiero wkracza na rynek

Koziołek
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Stacktrace
  • Postów: 6822
0

Elixir jest na rynku od 2012 roku. Scala od 2004. Problem w tym, że Elixir żyje na maszynie Erlanga, która nie jest popularna do zastosowań korporacyjnych (banki, ubezpieczenia, produkcja), a Scala żyje na popularnej JVMce.

  • Rejestracja: dni
  • Ostatnio: dni
0

Jako ciekawostkę dodam, Elixir poprawia szybko pozycję na TIOBE (from #86 to #64 - tylko w tym miesiącu !), Scala też (niedawno była coś w połowie 30-ki, chyba 34-35; teraz jest 31-sza.). Oczywiście mam świadomość że łatwiej wskoczyć z 80-ki na 60-tą pozycję, niż np. z 30-którejś do 20-stej którejś.

  • Rejestracja: dni
  • Ostatnio: dni
0

Korporacje to nie tylko banki, ubezpieczenia, produkcja. Także telekomunikacja i pewnie w kilku innych zastosowaniach Erlang może być z powodzeniem wykorzystywany.

Koziołek
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Stacktrace
  • Postów: 6822
0

Erlang === telekom i w sumie tyle. Od niedawna też w ramach HFT i w kilku miejscach gdzie trzeba było przyjmować na klatę duże skoki ruchu np. Bet 365 ma dużo napisane w Erlangu. Nadal jednak jest to znacznie mniej niż w Javie.

  • Rejestracja: dni
  • Ostatnio: dni
0

O, nie wiedziałem, nie używam Bet 365, ale często mam ich reklamy :)

Nadal jednak jest to znacznie mniej niż w Javie.

Javie to nikt nie podskoczy.

KR
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2964
0

a Scala żyje na popularnej JVMce.

Scala żyje na JVMce, każdej przeglądarce obsługującej JS [1] i każdym systemie/procesorze wspieranym przez LLVM [2].

[1] https://www.scala-js.org/
[2] https://github.com/scala-native/scala-native

CB
  • Rejestracja: dni
  • Ostatnio: dni
0

https://www.scala-js.org/

To jest fajne rozwiązanie, ale chyba nie jest zbyt często używane?

AD
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 67
0
CienkiBolek napisał(a):

https://www.scala-js.org/

To jest fajne rozwiązanie, ale chyba nie jest zbyt często używane?

Czy ja wiem? Scala.JS ma całkiem sporą i rozwijającą się społeczność, tutaj masz przykłady projektów które ją stosują:
https://www.scala-js.org/community/

Tutaj też jest ciekawy artykuł przedstawiający argumenty za Scalą JS:
http://www.lihaoyi.com/post/FromfirstprinciplesWhyIbetonScalajs.html

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.