# Scala oder Clojure



## bronkowitz (16. Apr 2011)

Hallo!
Ich hatte vor mich mit Scala beschäftigen um die nebenläufige Programmierung zu nutzen, also um meine Programme (technische Berechnungen) zu beschleunigen. Und ein bißchen auch aus Neugier.
Jetzt habe ich aber schon öfter gelesen, dass Clojure in Bezug auf die Multiprozessor-Nutzung besondere Stärken hat. Wenn es hauptsächlich darum geht, sollte man dann eher Clojure lernen?
Was mir bei beiden Sprachen außerdem nicht ganz klar ist: Macht man die GUI-Entwicklung dann auch in Scala/Clojure oder nutzt man dafür dann wieder JAVA? Und läßt sich das ganze in einer IDE wie NetBeans bearbeiten? Für Scala scheint das wohl so zu sein, bei Clojure habe ich da nicht so richtig rausgekriegt.
Gruß,
bronkowitz


----------



## Landei (16. Apr 2011)

bronkowitz hat gesagt.:


> Hallo!
> Ich hatte vor mich mit Scala beschäftigen um die nebenläufige Programmierung zu nutzen, also um meine Programme (technische Berechnungen) zu beschleunigen. Und ein bißchen auch aus Neugier.
> Jetzt habe ich aber schon öfter gelesen, dass Clojure in Bezug auf die Multiprozessor-Nutzung besondere Stärken hat. Wenn es hauptsächlich darum geht, sollte man dann eher Clojure lernen?


Meiner Meinung nach ist *Erlang *die Mainstream-Sprache, die am Besten mit allen Arten von paralleler Verarbeitung umgehen kann (es gibt übrigens einen JVM-Port namens Erjang). Clojure hat einige sehr clevere unveränderliche Datenstrukturen, die aber teilweise schon nach Scala übernommen wurden. Scala bietet eine erlang-artige Actor-Bibliothek (es gibt weitere Bibliotheken wie Akka) und wird im kommenden Release 2.9 (von dem schon ein RC vorliegt) parallele Datenstrukturen erhalten. Meiner Meinung nach kann man sowohl mit Clojure als auch mit Scala sehr gut parallele Anwendungen schreiben, jedenfalls wesentlich komfortabler als mit Java. Je nach Einsatzgebiet wird mal die eine, mal die andere Sprache "besser" geeignet sein, außerdem ist das auch immer etwas Geschmackssache. Ich persönlich finde Clojures Syntax sehr gewöhnungsbedürftig und komme besser mit Scala zurecht, das auch sehr gut mit Java kommunizieren kann. Clojure ist nicht objektorientiert, so dass es immer "Reibungsverluste" bei der Nutzung von Java-Bibliotheken geben wird, auch wenn solche Probleme prinzipiell lösbar sind. Mit Clojure (oder Erlang) legt man sich auf funktionale Programmierung fest, während man in Scala die Auswahl zwischen den Paradigmen hat, und sich viele interessante Synergien zwischen Objekten und Funktionen finden lassen. Wenn für dich .NET eine Option ist, wäre übrigens die Sprache F# eine interessante Alternative zu Clojure.



> Was mir bei beiden Sprachen außerdem nicht ganz klar ist: Macht man die GUI-Entwicklung dann auch in Scala/Clojure oder nutzt man dafür dann wieder JAVA? Und läßt sich das ganze in einer IDE wie NetBeans bearbeiten? Für Scala scheint das wohl so zu sein, bei Clojure habe ich da nicht so richtig rausgekriegt.
> Gruß,
> bronkowitz



Zur Clojure-GUI kann ich nichts sagen. Scala kann prinzipiell ohne (ernsthafte) Einschränkungen Java-Klassen verwenden, du kannst also wie gewohnt in Swing oder SWT loslegen. Darüber hinaus gibt es das Package Scala-Swing, das einen (noch nicht ganz vollständigen) Wrapper um Swing anbietet, und so die Arbeit mit Swing mehr nach Scala-Art erlaubt (z.B. ein Event-Handling, das Pattern-Matching benutzt).


----------



## bronkowitz (17. Apr 2011)

OK, dann gehe ich zumindest mit Scala nicht den falschen Weg. Hatte ich auch gehofft, da mir Clojure etwas kryptisch vorkommt.

Besten Dank!
Gruß,
bronkowitz


----------



## Landei (17. Apr 2011)

Dann sei auf die beiden online verfügbaren Bücher hingewiesen: http://www.java-forum.org/scala-gro...rogramming-scala-erste-ausgabe-kostenlos.html

Außerdem könnte die Link-Seite von meinem Blog hilfreich sein: Scala Links  eSCALAtion Blog

Bei Fragen gibt es das Scala-Forum (mit deutschem Unterforum): Scala Forum

Viel Spaß!


----------



## bronkowitz (17. Apr 2011)

apropos: weißt Du zufällig auch, ob man eins von den beiden deutschsprachigen Büchern für den Anfänger empfehlen kann?


----------



## Landei (17. Apr 2011)

Ich kenne bisher keines der deutschsprachigen Bücher. Ich muss meine Links mal auf wieder auf den Stand bringen, im letzten halben Jahr ist die Anzahl Scala-Bücher geradezu explodiert: Books on Scala | The Scala Programming Language

"Programming in Scala" (Odersky, Spoon, Venners) gilt als Referenz. Ich hatte die erste Ausgabe als eBook gekauft: anspruchsvoll, manchmal etwas knapp, aber relativ vollständig und verständlich geschrieben. Ähnliches gilt für "Programming Scala" (Wampler, Payne). "Beginning Scala" (Pollak) wendet sich an Anfänger und ist meiner Meinung nach zwar für die Grundlagen in Ordnung, aber insgesamt zu kurz und recht oberflächlich. Wenn du eines der deutschen Bücher kaufst, wäre ich sehr an deiner Meinung interessiert (vielleicht als Rezension für mein Blog).

Fast alle Bücher wenden sich an Scala-Anfänger (außer die für spezielle Gebiete wie "Actors in Scala"), aber die meisten setzen Programmier-Erfahrung vorraus, sind also für "Umsteiger" gedacht. Wenn du etwas Java kannst, sollte das aber kein Problem sein.


----------



## bronkowitz (17. Apr 2011)

OK werde ich machen

Danke nochmals
Gruß
bronkowitz


----------

