2015-06-25 4 views
11

Ich bin mit der Entwicklung serverseitiger Anwendungen in Java vertraut, aber jetzt möchte ich mit der Verwendung von Scala beginnen. Können Sie den notwendigen Paradigmenwechsel beschreiben? ? Hier sind ein paar Fragen, die Sie eine Antwort umrahmen helfen könnten:"Thinking in Scala" wenn ich einen Java/C++ Hintergrund habe?

  1. Wie kann ich Architekt und Web-Design-Anwendungen anders Was der größte Unterschied ist
  2. Was soll ich aufhören/mit; Was sollte? Ich beginne damit,/ stattdessen zu verwenden?
  3. Gibt es irgendwelche clientseitigen Überlegungen/Einschränkungen?

Ich bin nicht auf der Suche nach einem detaillierten Vergleich zwischen Java und Scala.

+2

http://meta.stackoverflow.com/questions/297592/why-are-there-so-many-upvotes-for-this-question – aProgrammer

+1

Ich habe versucht, Sprachen durch den Unterschied von anderen Sprachen zu lernen, und es hat hat nie für mich gearbeitet. Beginnen Sie jetzt mit einem Anfängerbuch in der Sprache, die ich lerne. Das erklärt alles, was man für die neue Sprache denken sollte. –

+0

@PatriciaShanahan Ich freue mich über Ihren Kommentar .. Aber ich denke immer noch eine ausführliche Antwort auf diese Frage ist machbar und möglich und das wird sicherlich zukünftige Besucher des Threads helfen .. – aProgrammer

Antwort

5

Der entscheidende Unterschied zwischen Scala und Java ist die Verwendung von funktionaler Programmierung durch Scala.

  1. Für Webanwendungen verwenden Sie verschiedene Frameworks. Play ist derzeit der beliebteste Geschmack. Es fühlt sich ähnlich wie MVC in anderen Frameworks an, ist aber eher funktional (obwohl die meisten Play-Apps bei weitem nicht rein sind)
  2. Sie sollten aufhören, über mutierende Felder im Speicher nachzudenken und über Datenflüsse unveränderlicher Werte nachzudenken. Verwenden Sie keine var, wenn Sie es mit einer val tun können. Schleifen werden meistens durch Konstrukte höherer Ordnung wie map und fold ersetzt. Vermeiden Sie Nullen und verwenden Sie stattdessen Option s.
  3. Angenommen, eine Web-Client-Seite, nein. Es sei denn, Sie möchten Scala zu JS kompilieren. Dann gilt das Gleiche.

Lernen weise, würde ich mit beginnen, dann, sobald Sie das, ich empfehle das Buch Functional Programming in Scala. Ich denke, diese beiden Ressourcen werden Sie in FP-Richtung führen, anstatt Java-Programme mit neuer Syntax zu schreiben. Finden Sie dann die richtige Stelle in der OOP/FP-Skala, die für das jeweilige Problem geeignet ist.

+0

Es gibt auch die Kurse Kurse für Scala, und anschließend, Reaktive Programmierung (in Scala). – experquisite

+0

Interessanterweise ist Scala im Kern eine rein objektorientierte Sprache, viel objektorientierter und viel reiner als Java. Der Fokus auf funktionaler Programmierung liegt tatsächlich nicht in der Sprache, sondern in den Bibliotheken und (am wichtigsten) in der Gemeinschaft. –

+0

Die Sprache hat viele Funktionen, um Ideen direkt zu unterstützen, die nur in der funktionalen Programmierung gefunden werden. Monaden, höher-gekleidete Typen usw. So FP-Unterstützung in Scala ist absichtlich, keine Nebenwirkung (punny) der Gemeinschaft. OO und funktionale Programmierung sind orthogonal, und scala unterstützt beide zusammenarbeiten. ABER eine Menge von Mutabilität-orientierte OO Praktiken und Muster verschwinden einfach – triggerNZ

Verwandte Themen