# Nutzt hier jemand Scala?



## Landei (30. Aug 2008)

Hi!

An der Arbeit muss ich mich mit Java rumquälen, aber zuhause bin ich auf Scala umgestiegen. Gibt es hier weitere "Scalanauten"? 

Gruß
Landei


----------



## Murray (30. Aug 2008)

Nicht wirklich - ich habe zwar auf der letzten JAX einiges über Scala gehört und fand den Ansatz ziemlich interessant; mir schien das aber damals noch nicht wirklich reif für einen produktiven Einsatz zu sein. Hat sich da in den letzten Monaten etwas signifikantes getan?


----------



## Landei (31. Aug 2008)

Auf jeden Fall:
- Sprache ist stabiler geworden und eine Unmenge Bugs sind gefixt (die Reaktionszeit auf kritische Bugs ist sensationell im Vergleich zu Java...)
- einige der Problemchen mit der Java-Interaktion sind behoben
- Compiler (und teilweise der Code) ist schneller geworden
- einige coole Klassen sind in die Bibliotheken aufgenommen worden (oder auch in scalax usw.) 
- IDE-Unterstützung ist besser geworden (NetBeans, Eclipse, jEdit...)
- Dokumentation ist etwas besser geworden (aber noch weitentfernt von "perfekt")

Insgesamt mag ich die Idee, dass die Sprache versucht, mehr als nur ein "besseres Java" zu sein (wie es etwa Nice und Fan versuchen), sondern völlig neue Ansätze ausprobiert. Ich raffe zwar noch nicht wirklich alles, aber was da einige Leute mit ein paar Codeschnipseln hinzaubern können, ist schon beeindruckend. Je mehr ich davon sehe, umso beschränkter und mittelalterlicher schaut Java aus. Die Community dort ist übrigens ausgesprochen hilfreich.

Ich würde noch keine wirklich großen und wichtigen Projekte in Scala machen. Ich denke, die Sprache ist dafür etwa in einem halben bis ganzen Jahr soweit. Es ist aber schon jetzt spürbar, dass der Zug an Geschwindigkeit zulegt. 

Übrigens: Als Herr Gosling neulich gefragt wurde, in welcher JVM-Sprache er programmieren würde, wenn er auf Java verzichten müsste, kam "Scala" wie aus der Pistole geschossen :-D


----------



## AlArenal (31. Aug 2008)

Ich habe eher den Eindruck, dass die Java-Community alle Jahre wieder einen neuen Hype benötigt und diesmal ist Scala dran. Das legt sich auch wieder und man muss dann in einiger Zeit mal schauen, was in der Praxis davon übrig geblieben ist, außer lauter Blog-Einträgen und Grundlagen-Artikeln in Fachmagazinen.

Erstmal ist natürlich alles hip, was neu und anders ist.


----------



## Landei (2. Sep 2008)

Scala ist alles andere als "Hype". Wenn du "Hype" willst, dann schau dir Ruby, Groovy & Co. an.
- Die Scala-Entwickler und -Community sind alles andere als marktschreierisch. Eher zu bescheiden.
- Scala ist *keine* Skript-Sprache (im Sinne von "dynamische Typprüfung") - auch wenn Codeschnipsel dank Typinferenz so aussehen mögen
- Scala kann alles, was Java kann (z.B. Generics, statische Typprüfung) und mehr, ist aber konsequenter und besser durchdacht
- Scala führt wirklich neue Konzepte ein und nicht nur "syntaktischen Zucker". 
- Scala nimmt funktionale Programmierung ernst und geht weit über alle Closure-Häppchen der "Konkurrenz" hinaus

Java ist zu umständlich, zu unflexibel. Ich mag z.B. Annotations, aber letztendlich sind sie nur ein Zeichen dafür, dass man in Java nicht ausdrücken kann, was man ausdrücken will. Java ist "reif" und "stabil" geworden - oder anders ausgedrückt: "alt". Das Beste aus der Java-Welt ist die JVM und die umfangreichen Bibliotheken, und das kann man mit Scala auch nutzen. Java als Sprache steckt in der Sackgasse. Möglich, dass sich mit Closures noch etwas bewegt, aber bevor das passiert, ist Scala längst über alle Berge.


----------



## AlArenal (2. Sep 2008)

Marktschreeierisch waren und sind Ruby, JRuby, Groovy & Co. auch nie zu Werke gegangen. Micht angeblichem Nicht-Hype zu kokettieren ist auch sowas wie ein Hype. Kann mich gut entsinnen, auf einschlägigen Java-Portalen mit Werbung für irgendwelche Scala-Bücher, -Vorträge, etc. beworfen worden zu sein - es nervte ziemlich.

Java hat, was Sclaa nicht hat: Codebase noch und nöcher, Literatur, Fachwissen, ... 

Ich finde es interessant, wie schnell viele von Unzulänglichkeiten und Umständlichkeiten bei Java sprechen und ganz außer Acht lassen, was damit schon alles erfolgreich umgesetzt wurde. Vergessen wir mal nicht, dass die alten Ägypter die Pyramiden gebaut haben und die Maya nichtmal das Rad als Werkzeug kannten.

Als Java herauskam feierte man schon den Abgesang auf C++. Wie sagt man doch so schön: Man soll das Wild nicht zerteilen, ehe es erlegt ist.


----------



## byte (2. Sep 2008)

AlArenal hat gesagt.:
			
		

> Micht angeblichem Nicht-Hype zu kokettieren ist auch sowas wie ein Hype.


Also ist in Deinen Augen alles das Hype, was Dir nicht gefällt? :roll:




> Java hat, was Sclaa nicht hat: Codebase noch und nöcher, Literatur, Fachwissen, ...


Scala wird in Bytecode übersetzt und läuft auf der JVM. Insofern ist Deine Argumentation falsch, denn Du kannst mit Scala die Java-Codebase weiter nutzen. Das macht Scala in meinen Augen sehr interessant. Denn die wirkliche Stärke von Java ist nicht die Sprache selbst, sondern die JVM und all die General Purpose Lösungen, die darauf laufen.



> Ich finde es interessant, wie schnell viele von Unzulänglichkeiten und Umständlichkeiten bei Java sprechen und ganz außer Acht lassen, was damit schon alles erfolgreich umgesetzt wurde. Vergessen wir mal nicht, dass die alten Ägypter die Pyramiden gebaut haben und die Maya nichtmal das Rad als Werkzeug kannten.


Ob Du es willst oder nicht, aber die Entwicklung geht weiter. Java ist mittlerweile in die Jahre gekommen. Das merkt man der Sprache an. Wenn nun eine neue Sprache kommt, die modern ist und mit der man schneller, effektiver und besser entwickeln kann als mit Java, es aber trotzdem gewährleistet ist, dass man weiterhin auf bewährte Java-Technologien bauen kann, dann ist das eine super Sache.



> Als Java herauskam feierte man schon den Abgesang auf C++. Wie sagt man doch so schön: Man soll das Wild nicht zerteilen, ehe es erlegt ist.


Teilweise ist es auch genau so gekommen. Dass eine Sprache in endlicher Zeit nicht ganz vom Markt verschwindet, sollte wohl jedem klar sein.


----------



## AlArenal (2. Sep 2008)

byto hat gesagt.:
			
		

> Also ist in Deinen Augen alles das Hype, was Dir nicht gefällt? :roll:



Nein. Ich kenne Scala nicht gut genug, als dass es mir gefallen oder nicht gefallen könnte. Aber gerade in der IT lebt man von Hypes. Neuentwicklungen (und mitunter auch mal alter Wein in neuen Schläuchen, siehe Ruby, Python, Erlang, ..) werden gerne mal gehypet. Allerorten stürzt sich dann die Bereichterstattung darauf. Es gibt schnell viele Plugins, kleinere Codebeispiele, Blogeinträge derer, die sich das Ganze mal anschauen, etc.

Setzt man diesen anfänglichen Hype dann aber nach einiger Zeit mal in Relation zur Praxis, zum Markt, ist das zu ziehende Fazit ein eher ernüchterndes. Vielleicht ist der Hype als solcher auch eher eine Folge der Art und Weise wie sich die Kommunikation durch das Internet und im Internet wandelt. Ist ein wenig wie ein Schneeballeffekt.



> Scala wird in Bytecode übersetzt und läuft auf der JVM. Insofern ist Deine Argumentation falsch, denn Du kannst mit Scala die Java-Codebase weiter nutzen. Das macht Scala in meinen Augen sehr interessant. Denn die wirkliche Stärke von Java ist nicht die Sprache selbst, sondern die JVM und all die General Purpose Lösungen, die darauf laufen.



Das ist sicher ein interessanter Punkt. Die Geschichte lehrt uns allerdings, dass Dinge die stark anders sind, oft verschmäht werden, weil die Einarbeitung in ganz neue Konzepte schwerfällt. Zu viele Tools und Gewohnheiten müssten geändert werden. 

Mit den diversen Sprachen für die JVM (egal ob Bytecode oder interpretiert) oder für .NET sieht es doch in der Praxis auch so aus, dass nur ein verschwindend geringer Anteil aller Projekte mehr als eine Sprache einsetzt. Mit jeder eingesetzten Sprachen muss ich entweder alle Entwickler schulen,d amit alle damit klarkommen, oder muss den Einsatz der Entwickler auf bestimmte Teiel des Codes limitieren. Damit limitiere ich mich auch selbst bei der Auswahl an Fachkräften und induziere Komplexizität in Produkt und Unternehmen.

Ich will das nicht unnötig schlecht reden, zumal ich selbst die Möglichkeit zur Verwendung diverser Sprachen sehr interessant finde. Aber "interessant" und "praktisch", bzw. "effektiv" gehen nicht zwingend einher...

Wenn die besseren Konzepte allein ausreichen würden, ein Produkt erfolgreich zu machen, sähen wir mehr Objective-C, mehr Smalltalk.. Tun wir aber nicht. Stattdessen sehen wir den Erfolg derer Sprachen, die mit neuen Konzepten maßhalten und viel althergebrachtes mitbringen und daher einen Umstieg bei allen Beteiligten einfacher machen.

Funktionale Programmierung, die Entwicklung für x-Core Prozessoren, Echtzeit, .. es gibt aktuell ein paar Herausforderungen, die vielleicht für neue Konzepte (oder vielmehr die Wiederbelebung alter Konzepte) Chancen bieten. Ob Scala davon ein Teil sein wird, oder Fortress, oder Hau-mich-blau, wird man sehen.



> Ob Du es willst oder nicht, aber die Entwicklung geht weiter. Java ist mittlerweile in die Jahre gekommen. Das merkt man der Sprache an. Wenn nun eine neue Sprache kommt, die modern ist und mit der man schneller, effektiver und besser entwickeln kann als mit Java, es aber trotzdem gewährleistet ist, dass man weiterhin auf bewährte Java-Technologien bauen kann, dann ist das eine super Sache.



Ja und nein. Manchmal sollte man alte Zöpfe auch mal einfach abschneiden. Unzulänglichkeiten und tonnenweise deprecated Code in den JFC behebt keine neue Sprache. Damit ist Scala schonmal den ersten großen Kompromiss eingegangen.



> Teilweise ist es auch genau so gekommen. Dass eine Sprache in endlicher Zeit nicht ganz vom Markt verschwindet, sollte wohl jedem klar sein.



Ich sehe eigentlich nicht wirklich Sprachen, die mal richtig in waren und dann verschwunden sind. Selbst Reinkarantionen von Basic kann man noch finden. Es ist eher so, dass ständig was dazu kommt. Einfacher macht das aber auch nüscht.

Persönlich bin aber froh, dass Pascal weg vom Fenster ist. Da kann sich der Prof noch so viele dolle Gedanken gemacht haben, ich fand die Sprache immer höchst unattraktiv. ;-)


----------



## Landei (2. Sep 2008)

Das hört sich schon ein klein wenig differenzierter an (auch wenn du im Prinzip sagst, dass du etwas kritisiert hast, was du nicht kennst).

Ich mag Scala, weil man sich seinen Stil aussuchen kann (eher imperativ oder eher funktional) und sich die Sprache sehr flexibel an den jeweiligen Problembereich anpassen lässt. Natürlich sieht die Syntax deshalb erst mal gewöhnungsbedürftig aus, aber was soll's? 

Scala versucht, für uns arme Java-Lastesel ein Brücke zur funktionalen Welt zu bauen, ohne diese als alleinseligmachendes Paradies anzupreisen. Ich freue mich über diesen "Kompromiss" in Scala. 

Wenn du aber die Zöpfe gleich ganz abschneiden willst, statt sie ordentlich zu frisieren: Viel Spaß mit Haskell, Erlang und OCaml! Denn genau dahin wird die Entwicklung gehen bei immer mehr parallelen Anwendungen, Server-Clustern, Grid-Computing und Multicore-Prozessoren. Der übliche Java-Barock mit synchronized-Blöcken, Atomic-Variablen und Concurrent Collections wird das Parallelitäts-Problem kaum lösen können - ein Problem, dass es in der funktionalen Programmierung (in dieser Form) gar nicht gibt.


----------



## AlArenal (2. Sep 2008)

Landei hat gesagt.:
			
		

> Das hört sich schon ein klein wenig differenzierter an (auch wenn du im Prinzip sagst, dass du etwas kritisiert hast, was du nicht kennst).



Mit keiner Silbe kritisierte ich Scala inhaltlich. Ich kritisierte den Hype.


----------



## byte (2. Sep 2008)

Hypes gehen so ziemlich an mir vorbei, da ich nicht pausenlos irgendwelche Blogs lese und mich mit Meinungen anderer einlulle.

Wenns also nur darum geht, dann brauchen wir nicht weiterdiskutieren. Es wäre aber durchaus interessant, mal konstruktives zu Scala zu lesen. Ich befürchte aber, dass sich das hier bisher niemand ernsthaft angeguckt hat.


----------



## AlArenal (2. Sep 2008)

byto hat gesagt.:
			
		

> Hypes gehen so ziemlich an mir vorbei, da ich nicht pausenlos irgendwelche Blogs lese und mich mit Meinungen anderer einlulle.



MIt DEM Argument dürfte man nichts anderes lesen, als das eigene Tagebuch. So weit gehe ich sicher bei weitem nicht. Ich lese gerne Blogs, auch um Trends und andere Sichtweisen und Erfahrungen kennenzulernen. Was viele leider verkennen ist, dass das Lesen kein passiver Prozess des Konsumierens ist, sondern ein aktiver Prozess, in dem man sich mit dem Gelesenen auseinandersetzt.



> Wenns also nur darum geht, dann brauchen wir nicht weiterdiskutieren. Es wäre aber durchaus interessant, mal konstruktives zu Scala zu lesen. Ich befürchte aber, dass sich das hier bisher niemand ernsthaft angeguckt hat.



Wenn sich ein solches Ergebnis an dieser Stelle ergeben sollte, ist auch das eine Aussage, mit der man sich im Rahmen des Themas auseinanderzusetzen hat.


----------



## Landei (3. Sep 2008)

> Es wäre aber durchaus interessant, mal konstruktives zu Scala zu lesen. Ich befürchte aber, dass sich das hier bisher niemand ernsthaft angeguckt hat.



Ein Stück Code sagt mehr als 1000 Worte:
http://www.scala-lang.org/node/219

Wiki:
http://scala.sygneca.com/start

Forum:
http://www.nabble.com/Scala-Programming-Language-f20934.html

Eine (ständig aktualisierte) Liste von Artikeln findet sich hier:
http://www.drmaciver.com/planetscala/

Ein paar für Einsteiger geeignete Artikel:
http://alblue.blogspot.com/search/label/scala
http://jackcoughonsoftware.blogspot.com/
http://blog.rafaelferreira.net/search/label/scala
http://suereth.blogspot.com/2008/04/scala-vs-groovy.html
http://suereth.blogspot.com/2008/05/staticly-duck-typed.html
http://suereth.blogspot.com/2008/04/playing-with-scala-closuresscope.html

Viel Spaß beim "ernsthaft Angucken"


----------



## Gast (4. Sep 2008)

Coole Programmiersprachen gibt es ja massenhaft.

Die Frage ist: wieviel coole Programmiersprachen braucht die Menschheit?

Griasseich


----------



## SchonWiederFred (4. Sep 2008)

AlArenal hat gesagt.:
			
		

> Als Java herauskam feierte man schon den Abgesang auf C++.


Der Vergleich hinkt. C++ hat mit Java nicht viel gemeinsam, während Scala ja quasi eine Erweiterung von Java ist (gleiche VM, man kann alten Java Code direkt weiterverwenden).


----------



## byte (5. Sep 2008)

SchonWiederFred hat gesagt.:
			
		

> Der Vergleich hinkt. C++ hat mit Java nicht viel gemeinsam, während Scala ja quasi eine Erweiterung von Java ist (gleiche VM, man kann alten Java Code direkt weiterverwenden).


Das trifft imo genau den Kern! Natürlich gibt es viele coole Programmiersprachen. Die wenigsten setzen sich am Ende durch. Das liegt wohl meistens daran, dass die Fülle von Tools und General Purpose Lösungen fehlen, die etablierte Sprachen über die Jahre aufgebaut haben.
Scala setzt auf der Java Plattform auf und kann somit Synergie-Effekte nutzen. Das macht die Sache richtig interessant.


----------

