Donnerstag, 23. Februar 2012


News

Freitag, 27. Januar 2012 | News

Neue Sprache, neues Glück?

(Link zum Artikel: http://www.entwickler.de/jaxenter//061622)
  • Teilen
  • kommentieren
  • empfehlen
  • Bookmark and Share

Eine mehrsprachige Programmierweise hat in letzter Zeit enorm an Beliebtheit gewonnen. Dabei wird idealtypisch das Paradigma verfolgt, immer genau die Sprache zu benutzen, die zu dem jeweiligen Problemfeld passt, anstatt beharrlich innerhalb einer Programmiersprache zu verweilen. Wie man am besten bei der Einführung einer neuen Programmiersprache in einem Unternehmen vorgeht, zeigt Jay Fields in seinem lesenswerten Blogeintrag „Lessons Learned while Introducing a New Programming Language“.

Schwierigkeiten bei der Einführung einer neuen Sprache

Jay Fields gehört dieser polyglotten Avant-garde an, die sich gerne am Repertoire verschiedener Sprachen bedient. In seinem Beruf ist er schon mit einer Menge an Programmiersprachen in Berührung gekommen und hat dabei gelernt, dass jede Sprache, egal ob Java, Cold Fusion, C#, Ruby oder Flex, ihre Vor- und Nachteile haben kann. In seinem Blog berichtet er nun von seinen Erfahrungen bei der Einführung einer neuen Sprache – in seinem Fall die Sprache Clojure im Unternehmen DRW – und stellt fest, dass es sich dabei um eine gar nicht so einfache Aufgabe handelt.

Seine Best Practices teilt er mit der Community:

Zuerst gilt es, überhaupt einmal eine Sprache zu finden, die den technischen Bedürfnissen einer Organisation entspricht und auch von den Mitarbeitern akzeptiert wird. Bringt die Programmiersprache nicht entscheidende Vorteile für den Arbeitsprozess, sollte ihre Einführung erst gar nicht in Betracht gezogen werden. Wie schon der US-amerikanischer Informatiker Alan Perlis feststellte:

A language that doesn’t affect the way you think about programming, is not worth knowing

Um Unterstützung für sein Projekt zu gewinnen, musste Fields einige Verbindlichkeiten zur Einführung von Clojure festlegen:

  1. Wenn seine Kollegen am Code arbeiten möchten, würde er, falls gewünscht, mit ihnen arbeiten.
  2. Wenn seine Kollegen nicht am Code mitarbeiten möchten, würde er selbst all das reparieren, was kaputt ist.
  3. Wenn sich die Einführung der neuen Sprache als zu anspruchsvoll und aufwendig erweisen würde, würde er alles zurück in Java umschreiben.

Natürlich musste die Sprache auch in der etablierten Toolchain der Organisation funktionieren. Immerhin verlangt man einem Team schon so einiges ab, wenn man von ihm das Erlernen einer neuen Sprache fordert – da sollte man nicht auch noch erwarten, dass das Team die prinzipielle Art und Weise verändert, wie und mit welchen Tools es arbeitet. Für Fields war dies keine schwierige Aufgabe: Clojure ist mit Hilfe des La Clojure Plug-ins in der IntelliJ IDE fast genauso einfach ausführbar wie Java.

Sind alle praktischen Fragen zur Einführung der neuen Sprache geklärt, gilt es, sich in die Thematik einzuarbeiten und gegebenenfalls Hilfe bei Experten zu suchen. Erklären sich der Erfinder der Sprache oder leitende Persönlichkeiten aus der Community bereit, Hilfestellung zu leisten – umso besser. Als Initiator der Sprachreform trug Fields eine enorme Last auf den Schultern: Sollte irgendetwas schief gehen, würde ohne Zweifel er dafür verantwortlich gemacht werden. Ein Grund mehr, stets allumfassend und ausführlich informiert zu sein.

Letztendlich gilt jedoch: Man sollte niemanden dazu zwingen, eine neue, ihm noch völlig unbekannte Programmiersprache zu erlernen. Innerhalb der DRW Trading Group bildeten sich sogar zwei separate Teams, eins davon arbeitete mit dem neuen Clojure, das andere weiterhin mit Java.

Wie viele Sprachen braucht der Entwickler?

So viel zu den Schwierigkeiten, die einem begegnen könnten, wenn man sich daran macht, eine neue Programmiersprache in einer Organisation einzuführen. Nicht beantwortet bleibt natürlich die Frage, ob es überhaupt Sinn macht, neue Sprachen einzuführen! Sollte man sich nicht vielmehr darauf konzentrieren, eine einzige Sprache effizienter zu machen und damit die babylonische Sprachverwirrung innerhalb der Entwickler-Community ein für allemal zu beenden?

JAXenter-Leser dürften sich an Lofi Dewanto erinnern, der sich nach anfänglicher Begeisterung für die polyglotte Programmierweise doch für eine universelle Programmiersprache, die in der Lage ist, alle Problemfelder einer Anwendungsentwicklung zu schließen, ausgesprochen hat. Beim polyglotten Programmieren sah er u.a. das Problem, Fachleute ausfindig zu machen, die gleich mehrere Programmiersprachen flüssig beherrschen und diese effizient verwenden können. Auch das Tooling vieler neuer Sprachen sei noch lange nicht auf dem Stand von Java angekommen, weshalb er eine Rückbesinnung auf die Tugenden von Java als universelle Sprache vorschlägt.

Ähnlich wie übrigens der Anbieter sozialer Enterprise-Netzwerke Yammer. Sie erinnern sich: Hatte Yammer im August 2010 damit begonnen, Teile seiner Software-Architektur auf Scala-Basis zu entwickeln, ist man knapp ein Jahr später wieder zurückgekehrt zu Java. Die Komplexität Scalas wiege die Produktivitätsvorteile nicht auf – so die offizielle Begründung.

Welcher Meinung sind sie? Verwenden Sie viele verschiedene Sprachen, je nach Charakteristik des Problems? Oder beschränken Sie sich lieber auf eine einzige Programmiersprache, möglicherweise sogar auf Java? Vielleicht teilen Sie ja auch die Ansicht Matt Foemmels, der für sich selbst feststellte:

I hate all programming languages

(jl)

Kommentare

Gravatar Trepper 30.01.2012
um 08:01 Uhr
Es gibt sicherlich ein paar Dinge, wo Skriptsprachen besser als statisch typisierte Sprachen wie Java sind, genauso wie es auch andersherum der Fall sein kann. Trotzdem halte ich es für sinnvoll, in einem Projekt möglichst wenig Technologien zu mischen, weil auch das die Komplexität erhöht und die Wartbarkeit reduziert. Scala und Java würde ich z. B. nie mischen! Obwohl Scala ein paar nette Dinge bietet, die Java nicht hat, sind die Sprachen insgesamt doch so ähnlich, dass man sich in einem Projekt für die eine oder andere entscheiden sollte. #zitieren
Gravatar Steve 30.01.2012
um 09:04 Uhr
Macht irgendwie nicht so viel Sinn ... wenn die Sprachen doch so ähnlich sind, dann ist dich die Interoperabilität umso bequemer.

Jetzt ist nur noch die Frage, warum man sich bei der freien Wahl zwischen Java und Scala überhaupt für Java entscheiden sollte...
#zitieren
Gravatar Det 30.01.2012
um 12:42 Uhr
@Trepper:
"Obwohl Scala ein paar nette Dinge bietet, die Java nicht hat, sind die Sprachen insgesamt doch so ähnlich, dass man sich in einem Projekt für die eine oder andere entscheiden sollte."

Ich weiss nicht ... wer Scala so benutzt, dass es Java so dermaßen ähnlich scheint, dem hilft es wohl wirklich nicht.

Wenn man Scala intensiv und idiomatisch benutzt, dann steckt da weitaus mehr drin, als ein "paar nette Dinge". Scala bietet eben das Potential, über Java hinauszuwachsen. Java bietet dieses logischerweise nicht.
#zitieren
Gravatar Gustav 30.01.2012
um 13:38 Uhr
"Jetzt ist nur noch die Frage, warum man sich bei der freien Wahl zwischen Java und Scala überhaupt für Java entscheiden sollte..."

Sollte viel mehr heißen:
Jetzt ist nur noch die Frage, warum man sich bei der freien Wahl zwischen Java und Scala überhaupt für Scala entscheiden sollte...

;-)
#zitieren
Gravatar Trepper 30.01.2012
um 14:54 Uhr
Ich wollte hier keinen Java vs. Scala Flamewar anfangen ... Von den Scala-Fans wird immer so getan, als wäre Scala in jeder Hinsicht besser als Java, aber das ist falsch. Gerade wenn (eigentlich engagierte) Entwickler sich mit Scala austoben, kommt dabei Code heraus, der schwer zu verstehen ist. Das muss nicht so sein, aber das habe ich nun schon auffällig oft gesehen. Insbesondere die Möglichkeit, fast beliebige "Operatoren" (Methoden) zu definieren, die man dann auch noch ohne Punkt und Klammern schreiben kann, führt zu schwer lesbarem Code. Man muss sich nur mal SBT angucken, wo man zwischen Bibliothek und Versionsnummer als Methode "%" schreibt. Was soll das? Das sagt nichts und ist auch nicht wertvoller, als ein String für alles (wie bei Ivy). Gut, das kann man hier noch als Komma oder so lesen, aber solche Operatoren findet man ja auch anderswo. Dazu kommen dann noch implicits usw. die alle ihre Berechtigung haben, aber die auch dazu führen, dass man beim Blick auf den Code nicht so leicht erkennt, was passiert. Genau das ist aber DIE Eigenschaft von Code - nicht möglichst wenig Zeilen auszukommen. Und genau deswegen wird sich Scala auch nie in der Masse durchsetzen. #zitieren
Gravatar Steve 31.01.2012
um 11:17 Uhr
@Gustav:
Weil man bei Scala auch Scala meint. Wenn man von Java spricht, meint man doch Java+XML-Konfig+Annotationen+Compiler-Plugins+Bytecodeassembler+Code-Generatoren+AspectJ.

Für mehr als ein Hello-World reicht ein "pures" Java eben nicht.

@Trepper:

"Von den Scala-Fans wird immer so getan, als wäre Scala in jeder Hinsicht besser als Java, aber das ist falsch."

Ach was?! Der Typ, der javac geschrieben hat ist danach hingegangen und hat Scala _absichtlich_ schlechter gemacht? Realitätscheck, bitte.

Und der Rest ist das ewig gleiche unfundierte Copy-und-Paste-Gestammel, wie schon vor Monaten. Das brauche ich gar nicht erst zu kommentieren.
#zitieren

Folgende Links könnten Sie auch interessieren