2011-01-19 6 views

Odpowiedz

9

To naprawdę świetne pytanie! Nigdy nie myślałem o ludziach uczących się języka Java, tylko dlatego, że łatwiej im się nauczyć Scala ...

Oprócz wszystkich podstaw, takich jak pętle for, nauka języka Java Generics może być naprawdę pomocna. Odpowiednik Scala jest znacznie silniejszy (i trudniejszy do zrozumienia) niż Java Generics. Możesz spróbować dowiedzieć się, gdzie są granice Java Generics, a następnie w jakich przypadkach konstruktory typu Scala mogą być użyte do pokonania tych ograniczeń. Na bardziej podstawowym poziomie ważne jest, aby wiedzieć, dlaczego generics są niezbędne i jak Java jest językiem mocno napisanym.

Java pozwala mieć wiele konstruktorów dla jednej klasy. Ta wiedza nie przyda się, gdy uczysz się Scala, ponieważ Scala ma inny sposób, który pozwala ci zaoferować kilka metod tworzenia instancji klasy. Tak więc raczej nie przyjrzymy się dokładnie tej koncepcji Java.

Oto niektóre koncepcje, które bardzo różnią się między Javą i Scala. Tak więc, jeśli nauczysz się koncepcji Java, a później będziesz chciał nauczyć się odpowiednika w Scali, powinieneś wiedzieć, że odpowiednik Scala różni się tak bardzo od wersji Java, że ​​typowy programista Java będzie miał trudności z dostosowaniem się do Scala myślenia. Mimo to zwykle pomaga przyzwyczaić się do metody Java, ponieważ zazwyczaj jest prostsze i łatwiejsze do nauczenia się. Osobiście wolę myśleć o Javie jako o kursie wprowadzającym, a Scala to wersja pro.

  • Java zbiór zmienny pojęcie vs. Scala zmienny/niezmiennej różnicowania
  • static metody (Java) vs. Singleton obiekty (Scala)
  • for pętle
  • Java return oświadczenie vs.Scala styl funkcjonalny ("każde wyrażenie zwraca wartość")
  • użycie Javy z null dla "bez wartości" vs. Scala bardziej wyraźnej Option typu
  • import
  • Java switch vs. Scala match

A oto lista rzeczy, które prawdopodobnie będziesz używać ze standardowej biblioteki Java, nawet jeśli będziesz rozwijać w Scali:

  • IO
  • GUI (Scala ma otoki dla Swing, ale hej)
  • URL, URI, pliki
  • data
  • czasomierze

I wreszcie, niektóre funkcje Scala, że ​​nie ma bezpośredniego odpowiednika w Java lub Java standardowa biblioteka:

  • operatora przeciążenia
  • implicits i impl Konwersje ICIT
  • wiele list argumentów/currying
  • anonimowych funkcji/funkcji jako wartości
  • aktorów
  • strumieni
  • Scala wzorzec dopasowania (który kołysze)
  • cechy
  • rodzaj wnioskowania
  • for zrozumienie
  • niesamowite operacje zbierania lik e fold lub map

Oczywiście wszystkie listy są niekompletne. To tylko mój pogląd na to, co ważne. Mam nadzieję, że to pomoże.

A przy okazji: Powinieneś zdecydowanie wiedzieć o ścieżce zajęć i innych podstawach JVM.

+0

Czy możesz wspomnieć o niektórych podstawach JVM, do których się odwołujesz? To może być bardziej przydatne niż wiedza o Java Generics, ponieważ wpłynie to na codzienne życie ze Scala – pmn

+0

Proszę nie brać daty ze standardowej biblioteki Java. – Debilski

+0

@icey: To byłaby podstawowa wiedza na temat tego, czym jest bajt kodu Java (nie szczegóły, tylko jego idea i to, co znajduje się w plikach .class), usuwanie śmieci, polecenie wiersza poleceń 'java' i jego parametry, ścieżka klasy, JAR jako format wdrożenia i może - może nawet - nawet wątki i synchronizacja. Ale: generics wpłynie na twoje codzienne życie dzięki Javie i Scali. Przynajmniej musisz wiedzieć, jak je wypełnić, a później także, jak tworzyć ogólne klasy. – Madoc

4

Standardowa biblioteka, przede wszystkim, dlatego, że to, co Scala ma najwięcej wspólnego z Javą .

Powinieneś również uzyskać podstawowe pojęcie na temat składni Java, ponieważ wiele książek kończy się porównywaniem czegoś w Scali z czymś w Javie. Ale poza platformą i niektórymi bibliotekami są to całkowicie charakterystyczne języki.

Istnieje kilka trywialnych konwencji przekazywanych z jednego do drugiego (takich jak opcje wiersza poleceń), ale podczas czytania książek i samouczków na temat Scala powinieneś wybrać je niezależnie od poprzedniego doświadczenia w Javie.

4

Seria "Scala for Java Refugees" może dać wskazówki na temat typowych tematów Java, które powinieneś znać i jak tłumaczą się na Scalę.
Na przykład, bardzo podstawowe main() funkcja Java, które przekładają się na Application cechy, once considered harmful i now improved (dla Scala 2.9 w każdym razie).

Powiązane problemy