Co z tą Scalą ?

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

Od niedawna do naszego zespołu dołączyło dwóch Javowców z innego zespołu i przeskoczyli na Scalę w miarę bezboleśnie. Przygotowanie do klepania w Scali polegało na czytaniu książek i robieniu zadań z tych książek. Po przejściu do projektu było programowanie w parach, by zarówno wejść w tematykę projektu jak i zaznajomić się z konstrukcjami składniowymi stosowanymi w projekcie.
Scali zaczęli się nawet uczyć admin i analityk biznesowy z naszego zespołu :) Z własnych chęci.

Scala jest wieloparadygmatowa, więc można podchodzić zarówno obiektowo jak i funkcyjnie. Mieliśmy w zespole kolegę (odszedł ze względu na irytującą biurokrację), który twierdził, że biblioteka scalaz jest częścią języka i każdy programista Scali powinien ją znać (reszta zespołu nie podzielała tego zdania). Tak więc różne osoby mają różne opinie, ale idiomatycznej Scali można nauczyć się bardzo szybko jeżeli nie będziemy iść mocno w programowanie funkcyjne.

O przenosinach zresztą najwięcej mógłby napisać @ubuntuser . Przenosił się najpierw z C# na Javę, a potem z Javy na Scalę.

  • Rejestracja: dni
  • Ostatnio: dni
0

@Wibowit Czy możesz mi podpowiedzieć gdzie w IntelliJ konwertuje się z Java do Scala?
Mam plugin do Scala ale nie widzę. Mogę za to do Kotlina konwertować ;)

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

Skopiuj kawałek Javowego kodu (np całą klasę), a potem spróbuj wkleić do kodu Scalowego. Jakość konwersji pozostawia wiele do życzenia, no ale to zawsze jakiś start (kod działa i można go szybko obrobić). Za to szczerze wątpię, by istniały narzędzia konwertujące skrawki C# na skrawki Javy z podobną skutecznością.

UB
  • Rejestracja: dni
  • Ostatnio: dni
1

Co mogę powiedzieć o przenosinach... (C# => Java => Scala)
Zrobiłem krok wstecz żeby zrobić dwa naprzód to na pewno. Na pewno też czuję większą frajdę z pisania kodu.
Nie potrafiłbym (albo bardzo bym po prostu nie chciał) wrócić do Javy. Po prostu myślę w inny sposób już i nie dość, że musiałbym przypomnieć sobie, jak to się robiło w Javie (składnia i biblioteki), to jeszcze przyzwyczaiłem się unikać mutowalności. Niby w Javie da się niemutowalnie, ale

  1. Pewnie musiałbym oglądać mutowalny, imperatywny kod innych współpracowników co wpłyneło by na mnie niekorzystnie
  2. Zauważyłem że jednak trochę dłużej się wymyśla rozwiązania niemutowalne/funkcyjne. Kod zajmuje mniej i jest czytelniejszy, ale czasem pętla for + zmienna var (mutowalna) przyspieszyłaby rozwiązanie.
    W Scali cenię sobie makra. Jak na programistę przystało, nie lubię pisać tego samego wielokrotnie, więc napisałem sobie parę makr ułatwiających pracę. Niestety póki co makra mają dość dużo ograniczeń, a główne to że muszą być w osobnym podprojekcie i nie chce się człowiekowi tego podprojektu tworzyć.
    Ogólnie podstawy Scali opanowałem w około 6 miesięcy, w sumie napisałem parę mniejszych kodów, bez większego projektu. Po lekko ponad roku ogarniałem te bardziej zaawansowane elementy języka ( http://ktoso.github.io/scala-types-of-types/ + shapeless).
  • Rejestracja: dni
  • Ostatnio: dni
0

Brzmi fajnie. Miejmy nadzieje, ze w Java zacznie sie pojawiac coraz wiecej ficzerow ze Scali ;)

  • Rejestracja: dni
  • Ostatnio: dni
0

Jak Scala wygląda pod wzlędem przenoszenia się na jej nową wersje?

  • Rejestracja: dni
  • Ostatnio: dni
0

Czy jak Scala wyprze, zastąpi kiedyś Jave to będzie mniej podatna na dziury i ataki niż Scala? Skoro to i tak jedna maszyna JVM je obsługuje.
http://www.dobreprogramy.pl/Oracle-narazalo-uzytkownikow-na-ataki-teraz-musi-przepraszac,News,69064.html

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

Jak Scala wygląda pod wzlędem przenoszenia się na jej nową wersje?

Najpierw usuwasz kod korzystający z funkcjonalności oznaczonej jako deprecated, a potem podbijasz wersję. Sprawę komplikuje to, że zależności też muszą mieć podbitą wersję Scali, co nie zawsze jest dostępne od razu.

Wybitny Szczur napisał(a):

Czy jak Scala wyprze, zastąpi kiedyś Jave to będzie mniej podatna na dziury i ataki niż Scala? Skoro to i tak jedna maszyna JVM je obsługuje.
http://www.dobreprogramy.pl/Oracle-narazalo-uzytkownikow-na-ataki-teraz-musi-przepraszac,News,69064.html

Java i Scala są mniej więcej tak samo podatne właśnie z tego powodu, że oba to języki na JVM.

Są wątki na forum dotyczące bezpieczeństwa Javy, autorstwa @Bartosz Wójcik, możesz poszukać i poczytać, nie ma co robić flejma w kolejnym temacie.

Np:
http://4programmers.net/Forum/Flame/229658-dlaczego_java_nie_ma_przyszlosci
http://4programmers.net/Forum/Java/258379-przyszlosc_java_i_0day_-_rzekome_460_odkrytych_luk_bezpieczenstwa_w_2015_roku

  • Rejestracja: dni
  • Ostatnio: dni
0

Pytanko. Rekurencja to nie jest mój chleb powszedni i przed chwilą zacząłem się tym bawić.

Znalazłem w necie funkcję do mierzenia execution time jak poniżej i porównałem sobie sumę elementów listy Lists.sum vs rekurencyjnie.

Kopiuj
  def time[R](block: => R): R = {
      val t0 = System.nanoTime()
      val result = block    // call-by-name
      val t1 = System.nanoTime()
      println("Elapsed time: " + (t1 - t0) + "ns")
      result
    }
Kopiuj
val integers = List(1, 2, 3,4,5,6,7,8,9,10)

 def sum(xs: List[Int]): Int = {
      xs match {
        case x :: tail => x + sum(tail)
        case Nil => 0
      }
    }

time(integers.sum) // Elapsed time: 34478ns
time(sum(integers)) // Elapsed time: 15890ns
var sum1= 0;
time(integers.foreach(sum1 += _)) // Elapsed time: 1175557ns !!!

Czy List.sum nie powinno być najbardziej optymalne? :P

  • Rejestracja: dni
  • Ostatnio: dni
0

Skompiluje.

Kopiuj
var sum1= 0;
    @tailrec
    val sumTail = integers.sum
    time(sumTail)
// Elapsed time: 11693ns

wtedy wyniki są podobne do tej powyższej funkcji sum.

  • Rejestracja: dni
  • Ostatnio: dni
0

Coś ta temat benchmakrów ogólnie: http://stackoverflow.com/a/513259/2265932

Plugin jmh to scali https://github.com/ktoso/sbt-jmh

  • Rejestracja: dni
  • Ostatnio: dni
0

Scala to widzę, że teraz ma też spory boom z big data i Apache Spark.

WhiteLightning
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 3257
0

@Wibowit - a ja mam pytanie, dlaczego warto zainteresowac sie programowaniem funkcyjnym/Scala? Co zyskam w stosunku do Javy, oprocz cwiczenia umyslowego i moze trendy wpisu do CV? Brakuje mi jakiejs marchewki sugerujacej ze to jest faktycznie cos w co warto pojsc.
W tym momencie mam do czynienia w pracy z XSLT ktory podobno gdzies kiedys kolo funkcyjnosci lezal, i ktory mocno znielubilem od pierwszego wejrzenia...

  • Rejestracja: dni
  • Ostatnio: dni
0

Wydaje mnie się, że tej marchewki teraz nie dostaniesz. Spotkałem się z opinią, ze Scala się nie przyjęła i miała już swoje 5 minut. Po liczbie ofert pracy można dojść do tych samych wniosków.

  • Rejestracja: dni
  • Ostatnio: dni
1

Jestem nowicjuszem ale...
A to może w Java nie piszemy coraz bardziej funkcyjnie? Zamiast brzydkich forów itp. jakieś guavy i Java 8 itp. Coraz więcej tego jest.

Według mnie Scala to coś więcej niż update do javy jak niektórzy sądzą.

Według mnie sporo ciekawych rzeczy Oczywiście Scala ma swoje minusy. Taki python to jest starszy niż Java a przez niektórych uważany jako 'new thing' ale według mnie prędzej to Python itp. nie przeżyje konkurencji w postaci języków bardziej funkcyjnych.

Wcale nie uważam, że Scala to będzie jakieś big thing, równie dobrze może umrzeć, jak każdy język. Ale nie uważam, że nauka Scali to czas zmarnowany. A jako javoviec, uważam, że uczyni ze mnie lepszego Javowca.

  • Rejestracja: dni
  • Ostatnio: dni
0
Mały Szczur napisał(a):

Scala to widzę, że teraz ma też spory boom z big data i Apache Spark.

Może i tak, ale nie w PL :)

  • Rejestracja: dni
  • Ostatnio: dni
0
Zimny Terrorysta napisał(a):
Mały Szczur napisał(a):

Scala to widzę, że teraz ma też spory boom z big data i Apache Spark.

Może i tak, ale nie w PL :)

Moja firma nie jest zbyt duża a chłopaki cos tam klepią włąsnie w Scala ze Sparkiem.

  • Rejestracja: dni
  • Ostatnio: dni
0

Przeglądam sobie /play-scala-intro - czyli sample CRUD - jest tam Play i Slick.
https://github.com/playframework/playframework/tree/master/templates/play-scala-intro

nie rozumiem za bardzo tego create. tutaj:
https://github.com/playframework/playframework/blob/master/templates/play-scala-intro/app/dal/PersonRepository.scala

Kopiuj
  def create(name: String, age: Int): Future[Person] = db.run {
    (people.map(p => (p.name, p.age)) returning people.map(_.id)
      into ((nameAge, id) => Person(id, nameAge._1, nameAge._2))
    ) += (name, age)
  }

Co w ogóle dzieje się w tym miejscu?

Kopiuj
    into ((nameAge, id) => Person(id, nameAge._1, nameAge._2))
    ) += (name, age)

Czy nie można tego jakoś po ludzku zapisać? np. :

Kopiuj
people.returning(people.map(_.id)).insertOrUpdate(Person(1, name, age))

Czy mogę jakoś nie uzupełniać pola id?

Najlepsze doświadczenia jakie miałem dotychczas z dostępem do baz danych to Spring Data.

ale chyba, żeby było bardziej po ludzku to musiałbym więcej przerobić:
np. http://stackoverflow.com/questions/18696155/what-is-the-best-way-to-get-the-last-inserted-auto-generated-id-using-slick

ten projekt/tutorial jest świeży czy to jakiś staroć? Macie inne sugestie od czego zacząć?

TO
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 30
0

Jakoś twarde dane przeczą temu co piszesz: http://www.indeed.com/jobtrends/Scala.html - Krolik 2015-12-27 12:04

To są dane z naszego kraju? Bo jeśli nie, to mało one dają (Polska jak wiecie jest 100 lat za murzynami).

  • Rejestracja: dni
  • Ostatnio: dni
1

To nie z Polski... ale akurat w Polsce to chyba mamy jedno z najlepszych community Scali... a poza tym często te kraje '100 lat za murzynami' pod wzgledem IT akurat są zaawansowane, wiec nie powtarzaj bzdur. np. Taka Rumunia to chyba przodująca w nowych technologiach.

Poza tym http://www.indeed.com/jobtrends?q=Scala%2C+Java&l= ;)

  • Rejestracja: dni
  • Ostatnio: dni
0

Ogólnie jak widzę kawałki kodu "germańskich oprawców" to często nie wiadomo czy śmiać się czy płakać.

Drabinki ifów nie mieszczące się na ekranie, każda metoda z try catch... german standard?

  • Rejestracja: dni
  • Ostatnio: dni
0

Ok, znalazlem bardzo fajnie zrobionego cruda.
https://github.com/petru-m/ScalaPlayCrud

No może poza tym, że to DAO możnaby zrobić jakimś traitem czy coś.

  • Rejestracja: dni
  • Ostatnio: dni
0

Mam okazje napisac webowy projekcik w Scala w swojej pracy.
Nie będzie zbyt duży, pewnie parę crudów.

Jakich frameworków mógłbym użyć? Chętnie takich, gdzie mogę się dużo nauczyć albo najbardziej przydatnych albo na topie.

Jak tak czytam to play i akka. Frontend najpewniej będzie w Angularze.

  • Rejestracja: dni
  • Ostatnio: dni
0

Jakies rady?
mam tez inne aplikacje, które deployowane są na tomcata w formie wara?
Jak podejść do tego ze scalą?

NG
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 278
1

Ludzie nie doceniają chyba wpływu korporacji, w tym wypadku Oracle. Korporacje ze sobą "dyskutują" na rynku - takie Oracle np. z bankami, czy też firmami z listy 100 najlepszych forbes.

Oracle wspiera Javę, a na upartego można dodać, że jeszcze Google (poprzez Androida ; Android = Google API + Linux + Java). Jave wspiera Eclipse Foundation, IBM, apache, wielkie finansowe korpy.
A kto wspiera Scalę? 1 uniwersytet? "community" ?

Co z tego, że może i niektóre rzeczy związane ze składnią języka są prostsze, jak to Java ma setki bibliotek, wielkich projektów, klas, metod. Reasumując - jak ktoś pisze projekty dla małego biznesu, to może i uda się narzucić Scalę. Ale jak przychodzi co do czego i projekt ma być skalowalny/korporacyjny/big-data, to wszyscy biorą sprawdzone rozwiązanie jakim jest java. Scale narzucają też developerzy, którzy bardziej zainteresowani są ładną i przyjemną składnią języka, a nie obecnością bibliotek, wypracowaną skalowalnością, etc.

Do momentu jak javę wspierają korporacje, to Scala nie ma szans. Chyba, że rzeczywiście będzie ładniejsza, przyjemniejsza, lepiej zaprojektowana, przemyślana - i może to w końcu ludzie zauważą.

  • Rejestracja: dni
  • Ostatnio: dni
2

I co Ty wnosisz niby do dyskusji? Wchodzisz głosząc głosem znawcy... lol Nie chcesz to nie pisz, proste.
Z punktu widzenia nauki niekoniecznie to jest istotne czy jezyk ktos wspiera czy nie.
Na tej zasadzie warto sie uczyc nawet Haskella. Choćby dla samego paradygmatu.

Oracle wspiera Googla? To skąd te wszystkie procesy?
Typesafe/Lightbend jakoś sobie radzi.
Setki bibliotek Java? A wiesz, że praktycznie wszystko można importować do Scali, albo jest już portnięte?
Java i Big Data mówisz? Java i Big Data niemal nie istnieje. Prędzej Scala i... Python. Boo... o jejku tak, Spark jest napisany w... Scala.
Zdajesz sobie sprawe, ze Javie zarzuca się brak skalowalności? A nazwa Scala nie jest bez powodu?
Co do ładnej składni... wielu zaprzeczy, że Scala jest ładna.

http://www.indeed.com/jobtrends/scala.html
http://www.itjobswatch.co.uk/IT-Job-Market/UK/Programming-Languages
https://nofluffjobs.com/#criteria=scala

W sumie to srednio znasz temat a sie wypowiadasz brzmiąc jak steoretypowy Javowiec, co bedzie siedzial, klepal crudy i poza tym się nosa nie wyściubi.

Nie chcesz, nie pisz.

  • Rejestracja: dni
  • Ostatnio: dni
0

A powyższe linki ładnie pokazuja, ze Scala ma ładny trend.

I nikt nie oczekuje, ze Scala zastąpi Javę.

A w dużych korpo Scala już jest, i wiem jakie, bo widzę od jakich firm dostaje oferty.

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

@NieGooglujMnie:
Akurat w finansach to Scala sobie bardzo dobrze radzi, w takim np Londynie programiści Scali mogą przebierać w bankach.

W związku z przenoszeniem zespołu programistów z Londynu do Krakowa jeden z kolegów z Londynu został zwolniony i w ciągu dwóch dni znalazł pracę w Scali w innym banku też w Londynie. Zero stresu.

PS:
Poprzednik już wytknął ci nieznajomość tematu, ale powtórzę - współdziałanie z Javą jest jednym z mocnych punktów Scali. Bez problemu z poziomu Scali można korzystać z Javowych bibliotek (jest to zupełna norma), a w drugą stronę z odrobiną dodatkowych fasad też działa (patrz: Play Framework 2, napisany w Scali, ale możliwy do wykorzystania w Javowych projektach).

  • Rejestracja: dni
  • Ostatnio: dni
0

@NieGooglujMnie dlaczego patrzysz na to w stylu 0 albo 1?
Do pewnych zadań może byc lepsza scala, do innych java.

jaki problem?

Wizzie
  • Rejestracja: dni
  • Ostatnio: dni
0

No i można łączyć je w jednym projekcie jak się chce.

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.