Ich komme aus Java und versuche, Scala zu lernen. Im Moment fühle ich mich ziemlich überwältigt, es scheint so viel mehr mit Scala zu lernen, so viele verschiedene Möglichkeiten, dasselbe zu tun.
Ich habe mich gefragt, ob jemand einen Rat hat, wo er anfangen soll und wie lange es gedauert hat, bis er sich einigermaßen kompetent in der Sprache gefühlt hat.
Sogar kleine Dinge wie das Verständnis von Schleifen scheinen wirklich mächtig zu sein, aber es ist nur eine weitere Syntax, an die Sie sich erinnern müssen!
Antworten:
Ich war dort, wo du bist, und habe ein paar Mal fast aufgegeben. Obwohl ich kein erfahrener Scala-Entwickler bin, habe ich jetzt das Gefühl, die Sprache fest im Griff zu haben - sicherlich genug, um meine Beziehung zu Java gründlich zu vergiften.
Das erste, was ich tat, war ein paar Wochen damit zu verbringen, herumzuspielen, verschiedene Blogs zu lesen und die Sprache vorzustellen. Das war ein Fehler, ich habe nicht viel Nützliches gelernt (oder zumindest verstanden) und fühlte mich völlig aus meiner Tiefe heraus.
Das zweite war, einige Zeit damit zu verbringen, Probleme zu lösen, die technisch einfach waren, mich aber dazu zwangen, bestimmte Aspekte der Scala-Syntax selbst zu untersuchen:
Dies machte mich zwar nicht über Nacht zu einem Experten, aber es gab mir genug Vertrautheit mit der Sprache, dass es sich nicht mehr so unmöglich anfühlte.
Mit diesem Vertrauensschub tat ich endlich das, womit ich hätte beginnen sollen: Programmieren in Scala von Martin Odersky und versuchen, alle paar Tage ein ganzes Kapitel zu lesen. Es ist ein gut geschriebenes und umfassendes Buch, und wenn Sie bereits einen soliden Programmierhintergrund haben, sollte es sich nicht als zu entmutigend erweisen. Es ist nicht nötig, Ihre erste Lektüre zu schmerzhaft zu machen: Überspringen Sie die als optional gekennzeichneten Teile, stellen Sie sicher, dass Sie die Konzepte verstehen, aber nicht in den Details stecken bleiben (insbesondere denke ich, dass die Kapitel über Sammlungen übertrieben sind und sein können überflogen). Zu wissen, dass es ein Konzept gibt und wo man eine umfassende Erklärung seiner Funktionsweise lesen kann, ist eine enorme Hilfe.
Eine Alternative zum Lesen des Buches ist die Teilnahme an der Coursera-Klasse - sie ist viel weniger umfassend, deckt jedoch die meisten entscheidenden Punkte ab und ist in überschaubare, logische Einheiten unterteilt. Andererseits weiß ich nicht, ob es möglich ist, nach Abschluss des Unterrichts auf die Lektionen zuzugreifen, und ich stellte auch fest, dass ich viel weniger engagiert war, als ich jemandem zuhörte (sogar jemandem, der so offensichtlich klug und kenntnisreich war wie Martin Ordesky) als beim Lesen eines Buches.
Ein weiteres Problem bei Scala ist die Menge an Vokabeln, die Sie aufnehmen müssen - nach Namen Parameter? zum Verständnis? Schließung? Wenn Sie sich davon überwältigt fühlen, stellte ich fest, dass eine gute Mischung aus Scala-Glossar und gezielter Suche nach Stapelüberläufen mir sehr geholfen hat (suchen Sie nach Antworten von Daniel Sobral und Travis Brown). Tatsächlich ging ich so weit, ein Anki- Deck mit dem Glossar zu erstellen , und fand, dass es eine große Hilfe war.
Schließlich ist dies wahrscheinlich offensichtlich, aber Code, Code, Code. Finden Sie ein Nebenprojekt, an dem Sie arbeiten können, auch wenn es etwas Triviales ist. Ich habe einen sehr einfachen Amazon-Crawler geschrieben, der mir einen Tweet sendet, wenn ein Autor, an dem ich interessiert bin, ein neues Buch veröffentlicht. Es hat länger gedauert, als es wahrscheinlich hätte sein sollen, aber dann habe ich mich in die Sprache verliebt.
Wenn Sie so weit kommen, brauchen Sie wahrscheinlich keine weitere Hilfe, aber ein guter Vorschlag, sobald Sie mit der Sprache vertraut sind, ist, tiefer in die zugrunde liegenden Konzepte einzutauchen. Sie sind mit OOP vertraut, versuchen Sie, sich über funktionale Programmierung zu informieren - ich kann mit absoluter Sicherheit sagen, dass es Sie umhauen wird. Die funktionale Programmierung in Scala sollte bald veröffentlicht werden (ish), aber die Early Access Edition ist bereits ausgezeichnet. Eine andere Antwort schlägt eine funktionale Programmierung für Java-Entwickler vor , mit der ich nicht vertraut bin, die ich aber für gut halte (wann hat sich ein O'Reilly-Buch nicht gelohnt, zumindest zu überfliegen?).
Ich hoffe, dass dies nicht zu langwierig und offensichtlich wurde, und wünsche Ihnen ehrlich das Beste. Scala hat seine Fehler, aber es ist eine wunderbare Sprache und wird Ihr Gehirn in Richtungen führen, von denen Sie nie wussten, dass sie existieren. Und ich werde in einem Jahr nach deinem "Haskell lernen, mich entmutigt fühlen" suchen :)
quelle
Scala ist eine ganz andere Denkweise als Java. Lassen Sie sich also nicht entmutigen! Ich würde wahrscheinlich mit der funktionalen Programmierung für Java-Entwickler beginnen, damit Sie in die funktionale Denkweise einsteigen können.
Gibt es eine Java- und / oder Scala-Benutzergruppe in der Nähe? Es ist immer einfacher, mit einem Kollegen eine neue Sprache zu lernen.
Viel Glück und weiter so!.
quelle