Od jakiej najstarszej wersji nauka Skali ma sens

0

Z tego co kojarzę to w społeczności Scali był bądź nadal jest jakiś rozłam na płaszczyźnie wersji czy kompatybilności języka.

Nie jestem na bieżąco z tym tematem, ale w kontekście nauki chciałbym zapytać jaka najstarsza wersja Scali nadal jest powiązana z bieżącą wersją? W tym sensie, aby nie trzeba było oduczać tego co się poznało.

1

Nie rozumiem pytania chyba. Masz ksiazke do 2.8 np. i sie zastanawiasz czy jest sens?

Poza tym to raczej bez przesady. I tak sie bedziesz uczyl jakichs podstaw. Ten jezyk az tak sie nie zmienia zebys podstaw sie musial oduczac.

0

No jest Scala 2.13 i Scala 3. Początkowo Scal 3 była tylko koncepcją i powoli kompilator Scali 2.13 jest w stanie kompilować Scalę 3. Tak przynajmniej to wyglądało jak czytałem o tym pół roku temu.
Trochę to pokręcone, ale raczej nie ma łamania kompatybilności a wprowadzanie nowych konstrukcji

BTW osobiście w firmie utknąłem na wersji 2.12 i 2.11 w jednym projekcie który jest cięzki do zmiany

3

można korzystać w jednym projekcie ze scali 2.13 i scali 3.x jednocześnie: https://www.scala-lang.org/blog/2021/04/08/scala-3-in-sbt.html to jest ficzer raczej dla tych co tego potrzebują (bo bardzo im się to przyda, a inaczej trudno ogarnąć sprawę), a nie jako rozwiązanie na początek przygód ze scalą. rzeczywistość jest jednak taka, że migrację ze scali 2.13 na scalę 3.x da się zrobić bez takiej traumy jak np. w przejściu z pythona 2 na pythona 3. da się nawet pisać mnóstwo kodu, który działa zarówno pod scalą 2.13 jak i scalą 3.x. co więcej, scala 3.x nadal korzysta z biblioteki standardowej scali 2.13 (a więc np. ma dostępne dokładnie takie same kolekcje).

ze swojej strony odradzam naukę scali 2.11 i starszych. przy okazji wprowadzania integracji z javą 8 w scali 2.12 przerobiono obsługę lambd, miksowania traitów, etc i wyszedł język niby z wierzchu bardzo podobny, ale mechanika może się subtelnie różnić, tzn. różne wersje scali mogą mieć różne ograniczenia. dodatkowo scala 2.11 jest już dawno bez wsparcia, a niedawno scala.js i scala-native też usunęły wsparcie dla scali 2.11.

scali 3 niestety dalej nie używam (w firmowym projekcie jeszcze pewnie długo się nie przeniesiemy), a czytałem, że obsługa scali 3 w różnorakich IDE jest średniawa, znacząco gorsza niż obsługa scali 2. mimo wszystko obsługa scali 3 jest z roku na rok coraz lepsza, a scala 3 jest oficjalnie przyszłością scali.

ostatecznie, moim zdaniem, możesz się uczyć scali 2.12, 2.13 albo 3.x i każdy z tych wyborów ma sens.

znowutosamo napisał(a):

(...) aby nie trzeba było oduczać tego co się poznało.

scala 3 wyrzuciła raczej mało znaczące rzeczy: https://docs.scala-lang.org/scala3/reference/dropped-features/index.html ale większość ważnych rzeczy ze scali 2.x została i raczej długo jeszcze będzie obsługiwana, np: implicity w starym stylu https://docs.scala-lang.org/scala3/reference/contextual/relationship-implicits.html

The Scala 3 implementation implements both Scala 2's implicits and the new abstractions. In fact, support for Scala 2's implicits is an essential part of the common language subset between 2.13 and Scala 3. Migration to the new abstractions will be supported by making automatic rewritings available.

Depending on adoption patterns, old style implicits might start to be deprecated in a version following Scala 3.0.

ogólnie raczej nie będzie wielu rzeczy do oduczania się, a przynajmniej nie w najbliższych latach. ponadto ta zmiana z implicitów na given+using (+ extensions + konwersje + itd) to głównie zmiana składniowa (dająca się dość mechanicznie przetłumaczyć z jednej postaci na drugą), a nie koncepcyjna (given+using to stary pomysł w nowej skórze).

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