Wider die polyglotte Avant Garde: Ein Plädoyer für die Einfachheit Javas

Hartmut Schlosser

In Zeiten, in denen JVM-basierte Sprachen wie Pilze aus dem Boden schießen und die Tooling-Unterstützung für polyglottes Programmieren voranschreitet, hält Lofi Dewanto in seinem Blog ein Plädoyer für die Rückkehr zur Einfachheit: Nach intensiven Liebäugeleien mit der Mehrsprachigkeit ist Dewanto zu der ernüchternden Erkenntnis gelangt, dass das beste Konzept immer noch die eine universelle Programmiersprache sei, mit der sich alle Aspekte einer Anwendung erledigen lassen.

Damit spricht Dewanto exemplarisch für eine Gruppe von Entwicklern, die sich wieder mehr an Werten wie „Wartbarkeit“, „Lesbarkeit“, „Pragmatische Machbarkeit“ orientieren – Werte, die man allgemein der Sprache Java zuschreibt.

Die polyglotte Avant Garde

In der Avant-Garde der Software-Entwicklerzunft konnte man sich seit 2006 wähnen, folgte man dem u.a. von Martin Fowler und Neal Ford vertretenen Paradigma der polyglotten Programmierung: Für jeden Problemtyp die eigene Sprache, hier Scala, da Groovy, hier das gute alte Java, dort die eigene DSL. Und es ist ja nicht so, dass Dewanto den neuen JVM-Sprachen keine interessanten Aspekte abgewinnen könnte: Go, Groovy, Ruby, Scala und nun Dart.

Doch so spannend und produktivitätsfördernd Mehrsprachigkeit zur Entwicklungszeit auch sein mag – Dewanto hat die Erfahrung gemacht, dass polyglottes Programmieren ihm vor allem in der Maintenance-Phase eines Projekts Kopfschmerzen bereitete. Vier Punkte stellt Dewanto besonders heraus:

  • Nach dem Ausscheiden fähiger Entwickler sei es schwierig, neue Kräfte so heranzuformen, dass sie die vielen verwendeten Sprachen beherrschten. Ist es doch schon nicht selbstverständlich, in einer Programmiersprache effizient zu arbeiten, so ist es umso schwieriger und nur in Ausnahmefällen zu erreichen, in mehreren Sprachen zugleich effizient zu sein. Mit unambitionierten Programmierern ist dies schlicht nicht machbar.
  • Die Komplexität eines Projektes steigt auch mit der Zahl der verwendeten Technologien. Eine Struts-Webanwendung mit Ajax upzudaten (mit Action-Dateien, Form-Dateien, Struts-XML-Konfigurationen, JavaScript-Files inklusive JSON, HTML und/oder JSP-Dateien) ist schon schwierig genug – man stelle sich nun vor, noch Groovy-, Scala- oder Dart-Code mit anpassen zu müssen.
  • Das Tooling für neue Programmiersprachen ist trotz manchem Fortschritt noch nicht auf dem Stand von Java. Besonders Kompatibilitätsbrüche bei neuen Sprachversionen machen Entwicklern wie Tool-Herstellern zu schaffen. Java-1.1-Anwendungen können hingegen heute noch mit dem Java 6 Compiler kompiliert werden.
  • Eine DSL langfristig zu unterhalten ist sehr aufwändig und macht nur in großen Unternehmen Sinn. Für kleine und mittlere Unternehmen mit moderatem Budget lohnt sich der Aufwand kaum.
Zurück zur Einfachheit von Java

Nach sechs Jahren der Unterstützung für polyglottes Programmieren macht Dewanto deshalb eine Kehrtwende: Sein Wunsch ist es, dass das Paradigma „One for All Programming Language“ wieder mehr Gewicht erhält:

So in year 2012, six years after my support to Polyglot Programming, I hope to see following things happen: One language for all aspects in one application is the best concept ever. I name this as „One for All Programming Language paradigm“.

Wie Englisch heute schon pragmatisch als Weltsprache eingesetzt wird, so soll auch eine universelle Sprache alle Aspekte der Programmierung abdecken. Und diese Sprache ist für Dewanto faktisch: Java!

My best solution sofar is Java + XML, that’s it, no more, no less. No mixing with Groovy, Dart, Ruby, Scala, > in one application.

Zweitens sollen in Zukunft Java-nahe Lösungen wie GWT zur Kompilierung von Java nach JavaScript oder Guice als Dependency-Injection-Framework ohne XML bevorzugt werden. Und im Mobile-Bereich schwärmt Dewanto für Android, weil dort Java als Programmiermodell zum Einsatz kommt.

Dewantos Fazit:

As a conclusion I can only hope to see more such pure and plain Java solutions in year 2012!

I agree, but …

Die Kommentare zum Blogpost fallen recht unterschiedlich aus. So argumentiert Pierluigi Vernetto für die Verwendung neuer Sprachen, die für gewisse Teilaufgaben schon immer nötig gewesen seien. Außerdem könne die Nutzung „heißer“ Technologien gerade fähige Programmierer anlocken:

An application should be written in only 1 language, for sake of simplicity, agreed, but often accessory tasks like scripting the configuration of WebLogic domains need to be written in Python or Groovy… and honestly introducing the opportunity to learn a new „hot“ language like Scala can attract on the project the best programmers…. Pierluigi Vernetto

Der Kommentator Doovde bestätigt hingegen die Vorbehalte gegen das babylonische Sprachgewirr, mit dem Argument der schweren Wartbarkeit:

I’m sitting in a project with Java, python, jython, tcsh, bash, php, xml and expect.
It’s impossible to debug in efficient manner, trouble shooting is like surgery while joggling.
Doovde

Wie sieht es bei Ihnen aus? In einem Quickvote von 2009 hatten wir schon einmal die Frage an Sie gerichtet: Wie polyglott programmieren Sie?
17 % hatten damals für die Option gestimmt: „Für jeden Aufgabentyp die geeignete Sprache verwenden – das ist die Losung der Zeit! Und die neue Sprachenvielfalt bringt uns diesem Ziel immer näher.“

Welche Erfahrungen haben Sie mit dem mehrsprachigen Programmieren mittlerweile gemacht?

Geschrieben von
Hartmut Schlosser
Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.