Frage

Ich bin ein erfahrener C ++ Programmierer mit durchschnittlichen Python Fähigkeiten. Die Gründe, warum ich Python in erster Linie untersucht wurden:

  • eine andere Perspektive auf die Programmierung zu bekommen (statisch vs dynamisch, vs zusammengestellt interpretiert, etc.)
  • die Bandbreite der Projekte zu erhöhen, die ich arbeiten kann (Python erlaubt es mir, Web-Entwicklung zu tun, entwickelt für Symbian-Handys oder schnelle Systemverwaltungsskripts klopfen)
  • meine C ++ Fähigkeiten zu ergänzen.

Ich denke, dass Python ist groß, und ich glaube, dass ich die oben genannten Ziele erreicht haben. Ich werde auch weiterhin für kleine Projekte verwenden, Skripte und Web-Entwicklung.

Ich bezweifle, dass ich es für mittlere bis große Projekte obwohl verwenden kann. Während die dynamische Typisierung bequem ist, ermöglicht es eine bestimmte Klasse von Fehlern, die ich als störend empfinden. Unit-Tests und Fusseln können dieses Problem mildern, aber statische Typisierung vollständig beseitigt es.

Nach dem bei einigen Programmiersprachen suchen, denke ich, dass Scala ein guter Kandidat aussieht: Ich mag die Typinferenz und es läuft auf der JVM so sollte es verfügbar sein, wo die JVM verfügbar ist. Ich kann auch mehr über funktionale Programmierung lernen, wenn es verwendet wird.

Aber ... Ich habe auch einige Zweifel haben, und das ist, wo ich hoffe, dass die Stack-Überlauf-Gemeinschaft helfen kann:

  • Portabilität: Linux und Windows hoffe ich zumindest. Was über Mobiltelefone ist es möglich, um es dort zu laufen?
  • C ++ Kompatibilität: kann ich C ++ Code mit Scala mischen? (JNI?)
  • Programmierparadigma: Ich fühle mich nicht wohl mit zu diesem Zeitpunkt in der funktionalen Programmierung (FP) umgeschaltet wird. Kann ich Objekt mit einigen FP orientiert und verfahren zunächst und dann die Proportionen ändern, wie ich lerne?
  • Werkzeugkette Reife: Was ist Ihre Erfahrung mit IDEs und Debugger? Ich bin mit Eclipse jetzt und es scheint in Ordnung.
  • Lerngeschwindigkeit: unter Berücksichtigung meiner Erfahrung, wie schnell tun Sie denken, dass ich ein tragfähiges Niveau mit Scala erreichen
  • Deployment: Wie genau stellen Sie ein Scala-Programm? Ist es ein Glas, ist es eine ausführbare Datei?

Schließlich, was denken Sie, dass einige von Scalas Nachteile sind?

War es hilfreich?

Lösung

  • Portabilität: Linux und Windows hoffe ich zumindest. Was über Mobiltelefone, hat in jedem gelingt es immer dort zu laufen?

Ja. Es ist ganz etwas Bewegung zu Scala auf Android. Wie für J2ME, sah ich etwas in dieser Hinsicht, aber nicht viel. Es gibt einige Code in Bezug auf den Quellcode-Repository J2ME. Ich bin mir nicht sicher, wie rentabel es ist, aber es scheint mir, dass es nicht viel Nachfrage nach das ist.

Ich werde auch erwähnen, dass es ist / war ein Pool auf Scala-Lang über die gewünschten Zielplattformen und J2ME war einer von ihnen, sehr tief auf dem Totempfahl.

  • C ++ Kompatibilität: kann ich C ++ Code mit Scala mischen? (JNI?)

Neben Sie C ++ mischen mit Java, für was auch immer das wert ist. Wenn Sie noch keine Erfahrung damit haben, können Sie nur die Java-Ressourcen zu lesen, wie alles, was in ihnen mit Scala ohne Änderungen (abgesehen Scala Syntax) anwendbar sind.

  • Programmierparadigma: Ich fühle mich nicht wohl mit zu diesem Zeitpunkt FP umgeschaltet wird. Kann ich mit einigen FP verwenden OO und verfahren zuerst und dann die Proportionen ändern, wie ich lerne?

Auf jeden Fall, ja. Scala geht Weg aus der es die sicherstellen, dass Sie nicht in einem funktionalen Stil programmieren müssen. Dies ist der Hauptkritikpunkt der Scala von funktionell Leuten, wie in der Tat. Einig halten keine Sprache funktional, wenn es den Programmierer zwingt in funktionalem Stil zu schreiben

Wie auch immer, können Sie sich auf Dinge zu tun, Ihren Weg gehen. Meine Wette ist jedoch, dass Sie Gewohnheiten funktionelle abholen werden, ohne es zu merken, sie sind funktional.

Vielleicht können Sie auf der Matrices Serie in meinem eigenen Blog über ein Schreiben Matrix-Klasse. Auch wenn es wie Standard-OO-Code sieht, ist es in der Tat sehr funktionell.

  • Werkzeugkette Reife: Was ist Ihre Erfahrung mit IDEs und Debugger? Ich bin mit Eclipse jetzt und es scheint in Ordnung.

IDEA (IntelliJ), NetBeans und Eclipse alle haben eine gute Unterstützung für Scala. Es scheint, IDEA ist die beste, und NetBeans / Eclipse-halten Frosch-Springen einander, obwohl NetBeans sicherlich stabiler als Eclipse of spät war. Auf der anderen Seite ist die Unterstützung von Eclipse einen vielversprechenden Weg nehmen, die Ergebnisse in den nächsten 6 Monaten produzieren sollte oder so - es ist nur, dass es ein Stoßen Route ist. : -)

Einige interessante Zeichen der Scala Werkzeuge für diese Umgebungen ist die Tatsache, dass die Eclipse-Plugin in Entwicklung AOP verwendet mehr nahtlos mit der gesamten IDE zu fusionieren, dass das NetBeans Plugin vollständig in Scala neu geschrieben wird, und dass es eine Scala Power Pack auf IDEA, das unter anderem die Übersetzung von Java-Code in Scala-Code.

unterstützt

Die EMACS Leute haben umfangreiche Werkzeuge für die Scala als auch, und viele kleinere Redakteure haben Unterstützung für ihn auch. Ich bin sehr komfortabel mit jEdit Unterstützung für kleine Programme und Skripte, zum Beispiel.

Es gibt auch gute Maven Unterstützung - in der Tat, die Standardmethode zu installieren Fahrstuhl Maven zu installieren ist, und dann einen Aufzug Urbild bauen. Das wird in einer geeigneten Scala Version ziehen. Es gibt ein scala:cc Ziel, das auch getriggerte Neuübersetzung tun wird.

Apropos Neuübersetzung, weder Maven, und vor allem noch Ant macht einen guten Job zu identifizieren, was neu kompiliert werden muss. Von diesem Problem entstanden SBT (Simple Build-Tool), in Scala geschrieben, was löst dieses Problem durch die Verwendung von Scala-Compiler-Plugin. SBT verwendet das gleiche Projekt-Layout wie Maven, sowie Maven / Ivy-Repositories, aber Projektkonfigurationen sind in Scala-Code anstelle von XML getan -. Mit Unterstützung für Maven / Ivy Konfigurationsdateien als auch

  • Lerngeschwindigkeit: unter Berücksichtigung meiner Erfahrung, wie schnell denken Sie, dass ich ein erreichenbearbeitbare Ebene mit Scala?

Sehr schnell. Als rein OO-Sprache stellt Scala schon einige nette Features, vergleichbar mit ein paar Sachen, die in C ++ vorhanden ist, aber nicht Java, obwohl sie in anderer Weise zu arbeiten. In dieser Hinsicht, wenn Sie erkennen, was solche Eigenschaften sind für und beziehen sie in C ++ Sachen, werden Sie viel vor Java-Programmierer sein, wie Sie vielleicht schon wissen, was mit ihnen zu tun.

  • Deployment: Wie genau stellen Sie ein Scala-Programm? Ist es ein Glas, ist es eine ausführbare Datei?

Das gleiche wie Java. Sie können JAR-Dateien, kriege, oder jede andere Java-Ziele einsetzen, weil die scala Compiler Klassendateien erzeugen. In der Tat, verwenden Sie Java jar eine Scala JAR-Datei aus den Klassendateien und die Maven Ziele für Lift Gebäude WAR-Dateien zu erzeugen.

Es gibt eine Alternative für Skriptdateien, though. Sie können „scala“ nennen Skript direkt, ähnlich einem Perl von Shell Scala-Quellcode laufen. Es kann auch unter Windows durchgeführt werden. Aber auch bei der Verwendung eines Kompilierung-Daemon Ausführung zu beschleunigen, starten Zeiten sind langsam genug, dass eine effektive Verwendung von Scala in einer schweren Skripting-Umgebung so etwas wie Nailgun .

Wie bei Scala Nachteile, werfen Sie einen Blick auf meine Antwort (und anderen) in diese Frage Stack-Überlauf.

Andere Tipps

Scala ist eine sich entwickelnde Sprache lohnt zu investieren, vor allem, wenn Sie von Java-Welt kommen. Scala ist weithin bedeckt unter Artima . Sehen Sie diese Artikel von Bill Venners rel="nofollow und auch über lesen Twitter und Scal a

.

In Bezug auf Ihre Fragen:

  • Java laufen kann überall dort, wo eine JVM ist. Kein Glück mit den Mobiltelefonen jedoch. Sie müssen eine vollständige JRE, nicht die Teilmenge, die dort zur Verfügung.
  • Dies ist möglich, mit JNI. Wenn etwas möglich ist, mit Java, dann ist es möglich, mit Scala. Scala können Java-Klassen aufrufen.
  • Funktionale Programmierung ist ein starker Punkt von Scala - Sie können es lernen müssen. Allerdings könnte man auch ohne Einnahme vollen Nutzen daraus zu verwenden beginnen und arbeiten Sie sich mit ihm.
  • Es ist ein Plug-in von Eclipse. Es ist nicht die beste, aber es wird die Arbeit erledigen. Weitere Details hier .
  • Wenn Sie erfahren sind, würde ich wirklich schnell sagen. Ich empfehle, dass Sie ein Buch zu finden, mit zu beginnen.
  • Sehen Sie diesen faq Eintrag für die Bereitstellung.
  

Programmierparadigma: Ich fühle mich nicht wohl mit zu diesem Zeitpunkt FP umgeschaltet wird. Kann ich mit einigen FP verwenden OO und verfahren zuerst und dann die Proportionen ändern, wie ich lerne?

Scala volle Unterstützung für imperative Programmierung hat, ist ein Kinderspiel Programme ohne FP Elemente darin zu schreiben (aber FP ist nützlich, und es lohnt sich das Lernen sowieso).

  

Lerngeschwindigkeit: unter Berücksichtigung meiner Erfahrung, wie schnell denken Sie, dass ich ein tragfähiges Niveau mit Scala erreichen

?

Schnell. Es gibt eine Reihe von interessanten Features in Scala, die nicht vertraut Menschen sein können aus einer C ++ kommen, Java-Umgebung, wie zum Beispiel einige der Merkmale des Typisierungssystemes. Einige argumentieren, dass die Tatsache, dass es eine Menge ist in Scala zu lernen, bevor Sie alle es wissen, ist ein Problem mit der Sprache; Ich stimme dir nicht zu. Das Vorhandensein dieser Funktion ist ein Vorteil der Sprache. Je mehr Funktionen, desto besser. Denn Sie müssen nicht alle auf einmal verwenden, so wie du musst nicht alles kaufen, die im Laden verkauft wird.

  

Lerngeschwindigkeit: unter Berücksichtigung meiner Erfahrung, wie schnell denken Sie, dass ich ein tragfähiges Niveau mit Scala erreichen

?

Ich komme auch aus einem C ++ Hintergrund, eine Sache, die ich bemerkte, dass, da Sie viel weniger Code schreiben, werden im Vergleich zu C ++ für eine vergleichbare Aufgabe wird Ihr Lernen beschleunigt werden, wie Sie mehr in der gleichen Zeit getan werden . Dies war das gleiche Phänomen, das ich mit Rubin erlebt.

Eigentlich - wenn ich Sie wäre - ich würde Programmierparadigmen statt Sprachen studieren. Natürlich müssen Sie ein Beispiel Sprache studieren das Paradigma zu studieren. die Nachteile und Vorteile von verschiedenen Paradigmen zu wissen, können Sie Ihre Probleme von einer anderen Seite sehen und macht Sie zu einem besseren Programmierer (auch in den Sprachen, die Sie bereits kennen).

eine Sprache eines Paradigma bis Picking bereits bekannt, ist eine relativly leichte Aufgabe, wenn nötig. Seit Scala ist FP (mindestens Sie erwähnt) und C ++ / Python ist OOP, ist es für Sie eine gute Sprache ist, würde ich sagen.

Sie sollten für diesen Kurs durch den Schöpfer von Scala selbst registrieren.

https://www.coursera.org/course/progfun

James Strachan (produktiver Java Open-Source-Entwickler, für diejenigen, die nicht in der Schleife) hat eine interessante Diskussion über Scala hier , und warum er glaubt, es ist eine Weiterentwicklung von Java (das Langauge, nicht die Plattform).

Scala sieht aus wie es ist viel Traktion zu gewinnen. Ich glaube nicht, es ist eine Eintagsfliege, und ist derzeit auf meiner Liste der Sprachen lernen (zum Teil für den funktionalen Aspekt)

Hier ist ein anekdotischer Beweis für Erlernbarkeit von Scala.

In unserem Unternehmen haben wir mehrere Praktikanten aus U.Waterloo. Sie wurden in Scala schreiben gesagt; sah es vorher noch nie.

Sie nahmen Scala nach oben und heben erstaunlich schnell; Jetzt produzieren sie Scala-Code; es kann nicht perfekt sein, aber niemand ist perfekt.

Also, die Tatsache, dass ein Manager nicht Scala weiß vielleicht nicht das beste Argument sein, wenn Sie auf Annahme entscheiden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top