News

Donnerstag, 11. Februar 2010 | News

Language Wars

(Link zum Artikel: http://www.it-republik.de/jaxenter/news/053850)
  • Teilen
  • kommentieren
  • empfehlen
  • Bookmark and Share

Welche Sprache die schönste, schnellste, tollste ist, darüber streitet die Java-Community gerne und mit viel Herzblut. Keiner entscheidet sich wegen eines Blogeintrags für die Nutzung einer neuen Sprache, jedoch macht es nicht minder Spaß, die Language Wars in der Blogosphäre zu beobachten.

Ein aktueller Fall verhärtet die Fronten zwischen Scala und Groovy. Der GridGain-Gründer und -CEO Nikita Ivanov hielt in seinem Blog eine Ode auf Scala und ließ sich dabei zu einer schlechten Angewohnheit der Language Wars verleiten: eine Sprache loben, in dem man die andere heruntermacht:

Scala is designed by people who have proper academic background, experience and talent in the area of language design – Groovy has never been that way.
Groovy will ALWAYS be slower than Scala or Java (latest benchmarks put even Groovy++ about 50 times slower than Java) just by its nature unless someone changes the language and rebuilds the runtime from the ground up. (Nikita Ivanov)

Ivanov kann also nicht verstehen, wie jemand heutzutage Groovy oder Groovy++ nutzen kann. Wenn man schon nicht bei Java 7 bleiben wolle, so solle man lieber PHP oder Python für das Web, und Scala oder .NET/C# nutzen.

Als Antwort auf diesen Blogeintrag musste der Software-Entwickler Christopher Wong in seinem Blog eine Lanze für Groovy brechen. Sein Argument: Groovy und Scala waren lange ebenbürtig, bis Groovy++ kam. Das neue Groovy++-Projekt stellt eine Erweiterung der Groovy-Sprache dar, ohne das Runtime-Meta-Programming-Verhalten. Es soll höhere Geschwindigkeit und sichereren Code bieten. Mehr Informationen dazu bietet unter anderem der Blog von Nick Wiedenbrück.

Anyway, with the recent attention to Groovy++, I would say that Scala's main differentiator over Groovy has been erased. No wonder that Scala fan I linked to earlier got all defensive. (Christopher Wong)

Als zweites Argument führt Wong die Jobsituation an: Nach den Jobtrends auf Indeed.com lag Groovy letztes Jahr eindeutig vor Scala, jedoch seien beide Sprachen nicht der Rede wert, wenn man sie mit Ruby vergleiche. Und mit dem guten alten Java dürfe man das erst recht nicht vergleichen.

(cf)

Anzeige

Kommentare

Gravatar Trepper 11.02.2010
um 09:34 Uhr
Groovy++ hat gute Chancen, weil es ein Upgrade für träge Entwickler ist, die sich mit neuen Konzepten schwer tun. Konzeptionell ist Scala aber sehr viel durchdachter und besser. #zitieren
Gravatar Sascha 11.02.2010
um 15:57 Uhr
Dieser ganze Scala/Groovy/Was weiss ich-Krieg ist eh seltsam. Sinn dieser ganzen Sprachen ist doch nur, Software-Entwicklern den Anspruch von "Neuem" und "tollem Design" zu geben. Wenn man ehrlich ist, macht nichts davon die Softwareentwicklung wirklich einfacher oder schneller. Wenn man heute Software entwickelt, ist man mit den vorhanden Sprachen und Erweiterungen nicht ansatzweise schneller als man es vor Jahren mit Plain-JSP und Plain-Java war. Nein, dieser ganze Wust von "ganz tollen" Sprachen führt sogar dazu, das der Kram in vielen Projekten parallel genutzt wird. Die ganzen durchschnittlichen Software-Entwickler, die nunmal einen Grossteil der Masse ausmachen, produzieren damit grausameren und fehlerhafteren Code als vorher. Und "mal eben" ein Projekt um 2-3 Entwickler aufzustocken fällt auch nicht mehr so leicht, weil das zugrunde liegende Knowhow immer mehr Sprachen und Konzepte umfasst. Um das gleiche zu tun wie früher.

Statt sich also mit solchen "Problemen" zu beschäftigen, sollten sich die Leute mal darauf konzentrieren, wie man die Softwareentwicklung in Zukunft generell vereinfacht, statt sich auf die zehnte Scriptsprache oder die fünfte VM-Sprache zu werfen. Dazu müssten einige aber mal in "richtigen" Projekten abseits ihres kleinen Scheuklappenuniversums mitwirken, damit sie mal sehen, welche Probleme die Leute in den Firmen tatsächlich haben.
#zitieren
Gravatar Reiner Saddey 11.02.2010
um 19:47 Uhr
Ich teile Saschas Meinung voll. Warum?

Ich versuche gerade meinen Brötchengeber und meine Java-Kollegen mit Grails zu infizieren. In den ersten beiden Projektchen ging es um SOAP-Implementierungen. Meine Architekturidee war dabei getrennte Java-Projekte für den contract-first JAX-WS RI und die per JBoss/Gibernate-Tool reverse-engineered Hibernate POJOs und Grails darüber als luxuriöser "Klebstoff". Die Implementierung der SOAP-WS als Grails-Service in Groovy hat meine Erwartungen voll erfüllt. Der Code sieht zwar sehr wie Java aus und Groovy-Elemente schleichen sich nur langsam ein, aber dies ist m.E. kein Manko, sondern ein Plus für Groovy. Die Verarbeitung ist ziemlich flach und wird von Gettern und Settern beherrscht. Die dynamischen Finder des GORM und die problemgerechte Groovy-Syntax der Zuweisungen wurden minutenschnell von meinen in Java und Hibernate erfahrenen Kollegen angenommen und führen im Ergebnis zu lesbarem und damit wartbarerem und besserem Code.

Für mich selbst stellt sich also die Frage gar nicht, ob eine Implementierungssprache nach abstrakten Kriterien "besser" als eine andere ist oder nicht. Keine Implementierungssprache kann heute außerhalb eines Framework-Contexts nutzbare Ergebnisse erbringen. Und wenn dies - wie bei Groovy und Grails - auf vorhandenes Wissen und Fertigkeiten aufbaut, kann die Weiterentwicklung (hier: Produktivitätssteigerung) mit weniger Brüchen und Risiken erfolgen.

Ich hoffe, dass auch Groovy++ schnelle Verbreitung finden wird, nicht wegen der beworbenen Performance-Vorteile, sondern wegen der (optionalen) Typsicherheit. Ich finde es einfach ärgerlich, dass Informationen zur compile-time von Groovy schlicht ignoriert werden (= Energie und Geld aus dem Fenster), selbst wenn diese im Einzelfall reichlichst zur Verfügung stehen.
#zitieren
Gravatar Ulrich Cech 12.02.2010
um 09:54 Uhr
@Sascha: Du sprichst mir aus der Seele. Vor allem der letzte Absatz trifft die Situation im "echten Leben".
Sicherlich ist es als Entwickler spannend, ständig Neues auszuprobieren, aber das kann man höchstens in der Freizeit machen.
Außerdem kommt es nicht darauf an, ob irgendwas "hippes" verwendet wird oder man die eine oder andere Schleife in weniger Zeilen hinbekommt als in der anderen Sprache, die betriebswirtschaftliche Sicht wird bei dieser ganzen Sprachenvielfalt vollkommen ausgeblendet, was dies für das Unternehmen langfristig bedeutet. Ziel im Unternehmen ist die Vereinheitlichung (und damit schon die Vereinfachung) von Prozessen. Und eine Vereinheitlichung wird durch die Einführung von neuen Sprachen nicht gerade gefördert.

Eine ähnliche Diskussion wurde damals schon bei dem Thema "Lasst uns schöpferisch sein..." geführt (http://it-republik.de/jaxenter/artikel/Lasst-uns-schoepferisch-sein-und-ein-paar-Programmiersprachen-erfinden!-2525.html)
#zitieren
Gravatar HAL 9000 15.02.2010
um 13:52 Uhr
Die Argument(?)-Keule Performance wurde vor einigen Jahren schon immer von den C++-Anhängern als größter Schwachpunkt von Java bemängelt bzw. höhnisch hervorgehoben.
Performance ist aber nur dann interessant, wenn sie ein zugesichertes Qualitäts-Merkmal meiner Anwendung ist. Natürlich sind Antwortzeiten von mehreren Sekunden prinzipiell inakzeptabel, aber das ist so selbstverständlich wie möglichst fehlerfreie Anwendungen zu erzeugen.
Eine WebApp wartet auf asynchrone HTML-Requests, wartet auf DB-Antworten, da ist die Laufzeit der Methoden in der Controller-Schicht meist vernachlässigbar.
Deswegen auch nochmal ein Zitat von Michael A. Jackson:
"The First Rule of Program Optimization: Don't do it. The Second Rule of Program Optimization (for experts only!): Don't do it yet."

Ansonsten wurde schon von Reiner der mögliche Nutzen solch neuer Sprachen aufgezeigt, nämlich als sinnvolle Erweiterung bestehender Möglichkeiten.

Aus betriebswirtschaftlicher Sicht wurde vor 10 Jahren bei uns Java in Frage gestellt, da alle etablierten Prozesse ja in Cobol funtkionierten ;-). Niemals etwas Neues versuchen um der Vereinheitlichung nicht zu schaden ist auch schädlich.
#zitieren
Gravatar Sascha 15.02.2010
um 16:09 Uhr
Na ich denke, der Vergleich mit Cobol/Java hinkt. Vor mehr als zehn Jahren sah die Sprachen-Welt doch noch völlig anders aus. Das Web gab es zwar, es gab aber noch keinen richtigen Trend hin zu Webapplikationen. Die meisten Anwendungen waren Host-basiert oder "richtige" Einzelplatzapplikationen, insofern waren die Vergleiche damals mit Cobol und C++ durchaus korrekt.
Heute sieht das Ganze doch anders aus. Der Hang geht eindeutig zu web-basierten Lösungen. Zur Realisierung derselben gibt es mittlerweile dutzende Sprachen, dazu kommen noch viele übergreifende Skriptsprachen, die meist in Kombination mit etablierten "grossen" Sprachen genutzt werden.
Wenn nur ein anständiger Teil der Energie, die in den Entwurf vieler ähnlicher und nicht so ähnlicher Sprachen investiert wurde, in die Realisierung von wirklichen Geschwindigkeitsvorteilen in der Softwareentwicklung geflossen wäre...wo stünden wir dann heute :-) Ich rede hier übrigens nicht von Performanz im Sinne von "die Anwendung hat eine Antwortzeit
#zitieren
Gravatar Sascha 15.02.2010
um 16:11 Uhr
kleiner 1 Sekunde" sondern im Sinne von "Die Entwicklung dieses Features kostet 5 Personentage". Meine Entwickler- und Architektenlaufbahn hat damals begonnen mit Java und JSP. Und ehrlich gesagt, sehe ich heute in den Projekten kaum einen Aufwandsunterschied zu früher. Früher hat die Entwicklung einer entsprechenden Funktion X Tage gedauert, heute dauert sie vielleicht X-1 Tag. Dafür muss der Entwickler aber nicht mehr "nur" Java und JSP (und JDBC) beherrschen, sondern Java, JSP, Hibernate, JavaScript, JSF, Spring (von HTML und CSS mal abgesehen). Programmiert wird dazu immer noch "wie früher", in einer IDE direkt im Quellcode.
Uhhh....
Mich interessiert nicht, ob ich bei Scala eine Schleife eleganter programmiere als in Java, oder ob ich ein Grails-Projekt in wenigen Minuten aufgesetzt habe. Sobald die Anforderungen etwas komplexer werden als einfache CRUD-Operationen ist dieser ganze Kram meist auch nicht nützlicher als Plain Old Java. Aber es sieht "eleganter" aus. Prima. Das interessiert in Firmen ausser den Entwicklern (wenn überhaupt) aber tatsächlich niemanden.
Konzepte wie Spring Roo sind sicherlich ein guter Ansatz, mir rollen sich aber die Fussnägel auf, wenn ich sehe, dass das Ding kommandozeilenbasiert ist. Da fällt mir nichts weiter ein als "von Freaks für Freaks". Viele dieser "Freaks" sind tatsächlich genial im Sinne von "echt fähige Entwickler". Leider haben sie aber oftmals nie in grösseren Projekten entwickelt, sonst würden sie viele Dinge anders aufziehen oder auch ein paar "durchschnittliche" Entwickler kennen, die sie mit dem Zeug erreichen müssen. Sie haben einfach Bock zu programmieren, das bringt die Softwareentwicklung als solches aber nicht voran. Trotz aller Technik, trotz aller bestehender Möglichkeiten werden wir auch in zehn Jahren immer noch damit beschäftigt sein, Code manuell in Textdateien zu hauen. Nur vielleicht nicht mehr in Java sondern dann in Scala++. Und DAS ist dann das "NEUE"?
#zitieren

Folgende Links könnten Sie auch interessieren

zurück zum Seitenanfang