Scala lernen, sich entmutigt fühlen [geschlossen]


9

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!


Scala ist in den meisten Fällen eine komplexe Sprache. Lassen Sie sich also nicht entmutigen! Anekdotisch bin ich ein ziemlich kompetenter Haskell-Programmierer und ich dachte, Scala sei viel komplexer :) Der beste Weg, etwas zu lernen, ist, zwischen einem Buch und einem Projekt zu wechseln. Für Scala würde ich einen Compiler und die Treppenbücher vorschlagen, aber jedem seinen eigenen
Daniel Gratzer

Danke für die Ermutigung! Was ist das Treppenbuch?
Jcm

empfohlene Lektüre: Wo soll
Mücke

Ich habe Scala vor ein paar Jahren aus Java-Sicht ausprobiert und es nicht wirklich verstanden. Kürzlich habe ich bei coursera.org einen Kurs über funktionale Programmierung in Scala begonnen. Es ist ein drastisch anderer Ansatz, der meinem Java-Hintergrund nicht im Wege stand. Stattdessen lerne ich (wieder), in unveränderlichen Datenstrukturen zu denken, über Algorithmen, Mengenlehre, Typentheorie und all die anderen lustigen Dinge nachzudenken, die ich in einem richtigen Job nicht üben kann. Mach dir keine Sorgen; Es gibt immer noch einen echten Nutzen von Scala in der realen Welt.
BobDalgleish

2
Scala ist ein großes neues Ökosystem (die Kernsprache selbst ist nicht so groß - es sind hauptsächlich die Bibliotheken und Konzepte). Wenn Sie für eine Weile das flachere Ende der Dinge festhalten und jeweils ein Konzept aufgreifen, werden die Dinge wirklich zusammenkommen. Dinge, die wie bizarre gekochte Spezialsyntax aussehen, fallen normalerweise in eine allgemeinere Kategorie von Dingen, die über die gesamte Sprache abstrahiert werden können. Aber es braucht definitiv etwas Spielen und Lesen, um herauszufinden, was diese Dinge sind.
KChaloux

Antworten:


11

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 :)


3

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!.


Darüber hinaus würde ich empfehlen, sich Scala Frameworks oder Toolkits in Bezug auf Bereiche anzusehen, die Sie interessieren. Nach meiner Erfahrung macht es ein Projekt, an dem Sie gerne arbeiten, einfacher. Schauen Sie sich zum Beispiel Lift oder Play Framework an, wenn Sie sich für Webentwicklung oder Akka interessieren, wenn gleichzeitige oder verteilte Anwendungen Ihr Ding sind.
Juwi
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.