Jetzt bietet Eclipse Xtend und JetBrains Kotlin an - beides scheint verwässerte Versionen von Scala zu sein. Meine Frage ist warum? Ich habe ein bisschen mit Scala gespielt und es ist nicht so schwer. Ist dies nur eine Reaktion auf die inhärente Schwierigkeit des Sprunges vom Imperativen zum Funktionalen oder ist hier noch etwas anderes am Werk?
EDIT: Entschuldigung. Wenn ich die Frage noch einmal lese, wie ich sie ursprünglich gepostet habe, kann ich sehen, wo es sich ein bisschen nach Trolling anhört. Die Art und Weise, wie ich die Frage formuliert habe, schien einfach die beste Art zu sein, die Frage zu stellen. Ich habe Blogpostings gesehen, die den Effekt "Scala ist zu hart / Scala ist zu komplex" und auch "Kotlin ist ein Versuch, Scala zu machen, aber einfacher" hatten. Ich werde die Formulierung so lassen, wie sie ursprünglich war, aber ich habe ehrlich gesagt nicht versucht, zu trollen.
quelle
Antworten:
IMHO von jemandem, der in den letzten 7 Jahren in Java programmiert hat und meine stärkste Sprache ist, finde ich Scala ziemlich fremd und es fällt mir schwer, mich daran zu gewöhnen.
Xtend fühlt sich eher wie Java an und konnte damit viel schneller eine einfache Anwendung schreiben. Zugegeben, ich habe mir nicht genug Zeit für Scala genommen, aber ich verstehe auf jeden Fall, warum manche davon abgeschaltet werden.
Wenn dies gesagt ist, werden die Menschen eine vertraute Hölle einem unbekannten Himmel vorziehen.
quelle
JetBrains hat eine Wiki-Seite , die Scala mit Kotlin vergleicht, und es scheint ein paar Dinge zu geben, die Kotlin tut und Scala nicht:
Kotlin eine Verwässerung der Scala zu nennen, ist wahrscheinlich eine große Vereinfachung. Ich denke, Xtend richtet sich hauptsächlich an X-Text-Benutzer und nicht an ein breiteres Publikum. Ein wesentlicher Unterschied zu Scala besteht darin, dass Xtend nicht in Bytecode, sondern in Java kompiliert wird.
Eine andere "Java Killer" Sprache, die Sie Ihrer Liste hinzufügen sollten, ist Red Hats Ceylon , obwohl ich keine Ahnung habe, ob und wie es mit Scala verglichen wird.
quelle
Ich verwende Scala seit einem Jahr als meine Hauptsprache (mit Java als zweitwichtigster Sprache, beides innerhalb einer großen älteren Java-Codebasis). Ich muss immer noch ziemlich grundlegende Funktionen nachschlagen, wenn ich sie in a nicht verwendet habe während. Sicher, Sie können einige Scala schnell schreiben, aber es ist eine äußerst funktionsreiche Sprache und es dauert lange, bis Sie sie beherrschen.
Darüber hinaus ist seine Komplexität nicht nur ein Problem für den Menschen, sondern auch für IDEs und Compiler. Sowohl Celyon als auch Kotlin kompilieren direkt, um JavaScript ziemlich sauber zu machen. Scala kann JavaScript über GWT erzeugen, obwohl die Anreise kompliziert ist und die GWT-Ausgabe weder lesbar noch für die Wiedergabe mit externem JavaScript oder HTML geeignet ist.
In Scala bin ich definitiv produktiver als in Java, und der Code ist kompakter und leserlicher (wenn Sie ein wenig Scala kennen). Aber seine Komplexität lässt mich zögern, ihn anderen zu empfehlen. Eine Sprache mit 20% der Komplexität, aber 80% der Fähigkeiten wäre eine willkommene Alternative.
[Bearbeitet, um Erwähnung von Legacy-Code zu entfernen, siehe Kommentar unten.]
[Nachtrag 2017: Scala unterstützt jetzt JavaScript als Build-Ziel, während Kotlin weiterhin Funktionen hinzufügt, die für einen Scala-ähnlichen Java / Groovy / JavaScript-Ersatz sinnvoll sind. Sie sind jetzt markantere Sprachen als zu der Zeit, als ich das geschrieben habe.]
quelle
+:
zum Beispiel Extraktoren). Ich hoffe, dass die Programmierung in Scala in naher Zukunft aktualisiert wird. Für 2.11 verbessern sich einige Dinge weiter. Die stdlib ist bereits von Verfall befreit und wird auch etwas schrumpfen. Vielleichtscala.util.parsing
wird es auch außerhalb von stdlib verschoben. Wir werden sehen ...::
,::=
oder+:=
welche voranstellen, aber die meisten Leute wollen:+=
welche anhängen, aber das ist für eine Liste nicht effizient.JetBrains hat seine Ziele für Kotlin sehr klar formuliert :
quelle
Ich habe Scala einige Monate in Eclipse mit Play Framework verwendet. Ich mag die Sprache, aber es gibt auch Dinge, die ich nicht mag.
Für mich ist der Grund, von Java zu einer anderen Sprache zu wechseln, produktiver.
Bisher war ich mit Scala nicht produktiver. Ein Grund ist der Mangel an guter Unterstützung für Scala in Eclipse, das Scala-Plugin ist schlecht (z. B. Einrücken schlägt fehl) und hat noch nicht viele Funktionen (z. B. keine "Open Call Hierarchy"). Der Scala-Compiler ist ebenfalls langsam, dies ist möglicherweise kein Problem, aber ich verwende Scala mit Play Framework, das den Code für jede Anforderung kompiliert, und dabei ist die Compilergeschwindigkeit wichtig.
quelle
Ich weiß nichts über Kotlin, aber Scala und Xtend sind zwei sehr unterschiedliche Bestien.
Im Gegensatz zu üblichen Sprüchen ist Scala KEIN besseres Java. Scala ist eine viel umfangreichere Sprache als Java, mit eigener Syntax und Semantik und einem eigenen Paket von Basisbibliotheken.
Xtend ist ein besseres Java. Es behält die Java-Semantik bei und verbessert die Syntax. Jede Zeile Xtend-Code kann direkt in eine Reihe von Java-Codezeilen übersetzt werden. Es gibt auch keine zusätzliche Laufzeit.
Ich denke, dass beide Ansätze richtig sind, obwohl sie unterschiedlich sind. Ich mag Scala (als Sprache) nicht, aber ich mag es nicht, Scala-Gläser zu meinen Projekten hinzuzufügen. Ich kann Scala in Android auch nicht richtig verwenden (es führt zu Gewichts- und Leistungsproblemen). Xtend ist nicht so gut ausgestattet, aber für mich ist es in Ordnung (es ist viel wert, es als Java-Sprache zu verwenden) und es funktioniert auf jeder Plattform, als würde ich direkt in Java schreiben.
Ich glaube, dass beide Sprachen unterschiedliche Nischen abdecken und koexistieren können, ohne sich gegenseitig zu stören. Meiner Meinung nach ist Scala einfach zu komplex und fügt nichts Neues hinzu. Wenn Sie mehr Funktionalität und weniger OO möchten, wählen Sie einfach eine der vielen einfacheren funktionalen Sprachen wie Clojure oder JHaskell. Wenn Sie nur Java mit einer besseren Syntax und ein bisschen funktionaler Programmierung wollen, wäre Fantom genauso gut wie Scala (es ähnelt C # sehr).
Aber ich finde, Xtend ist ein süßer Punkt zwischen all diesen Sprachen. Es fügt all die syntaktischen Muster hinzu, die ich für Java wollte, und behält die guten Teile von Java (seine Semantik) bei. Betrachten Sie es als Coffescript für Java.
Und der Eclipse-Support ist hervorragend ...
quelle