In the Code: Die nächste grosse Program­mier­sprache wird es nicht geben

Ein Gastbeitrag von Netcetera-CTO Corsin Decurtins.
 
Programmiersprachen sind für Entwicklerinnen und Entwickler ein wichtiges Thema. Wenn Sie das nicht glauben, behaupten Sie einmal gegenüber einem Entwickler, Sprache X sei die beste Programmiersprache und machen Sie sich auf einen langen Vortrag gefasst. Denn Entwickler haben eine emotionale Bindung zu Programmiersprachen.
 
Die Welt der Programmiersprachen ist dynamisch. Bestehende Sprachen entwickeln sich weiter und neue Programmiersprachen und -konzepte kommen hinzu. Egal ob Entwickler ständig neue Programmiersprachen ausprobieren oder ob sie seit Jahren mit "ihrer" Sprache arbeiten, stellt sich die Frage, wie es mit den Programmiersprachen weitergeht. Welche wird die neue grosse Programmiersprache nach Java, C/C++, JavaScript, Python, PHP und wann ist der richtige Zeitpunkt, auf diese neue Sprache zu wechseln?
 
Diese Frage ist auch für Unternehmen relevant, die strategisch auf bestimmte Programmiersprachen setzen. Wann wird es Zeit, die vertraute Sprache, bekannte Werkzeuge und etablierte Ökosysteme hinter sich zu lassen und auf neue Sprachen zu wechseln? Und welche Sprachen sollen es sein? Ein Wechsel ist disruptiv und mit grossen Investitionen verbunden. Die Produktivität der Entwicklungsteams wird leiden, bis wieder alle mit der neuen Umgebung vertraut sind.
 
Was macht eine gute Programmiersprache aus?
Gleich vorneweg: Eine gute Programmiersprache ist nicht zwingend eine erfolgreiche Programmiersprache – und umgekehrt. Der Erfolg einer Programmiersprache hat häufig mit Werkzeugen zu tun oder mit den unterstützten Laufzeitumgebungen. JavaScript beispielsweise ist eine Sprache mit zweifelhaften Ruf. Trotzdem ist JavaScript aber sehr erfolgreich, denn der Code läuft in jedem Browser.
 
Das Ökosystem von Werkzeugen und Bibliotheken, das um eine Sprache herum entsteht, ist auch ein entscheidender Erfolgsfaktor für eine Sprache. Das beste Beispiel dafür ist Java. Auch wenn die Sprache selber immer wieder kritisiert wird, hat das grosse, vielfältige und ausgereifte Ökosystem dazu geführt, dass Java heute eine der verbreitetsten Programmiersprachen ist.
 
Syntax ist ein weiterer Erfolgsfaktor einer guten Programmiersprache. Natürlich sind geschweifte, eckige, runde oder spitzige Klammern zum grossen Teil Geschmacksache. Viele Programmierer bevorzugen allerdings Sprachen, die ausdrucksstark sind und wenig Firlefanz benötigen, denn diese ermöglichen kompakte Programme mit wenigen Zeichen.
 
Die Lesbarkeit von Programmen leidet häufig unter der kompakten Repräsentation. Erfahrenere Software-Entwickler wissen, dass Programme über lange Sicht gesehen nicht nur von Computern verstanden werden müssen, sondern auch für andere Entwickler lesbar und verständlich sein müssen. Code hat die Eigenschaft, häufig sehr viel länger zu leben als man anfangs denkt. Über die Jahre sind viele Entwicklerinnen und Entwickler an einer Codebasis beteiligt. Eine gute Programmiersprache muss deshalb eine Balance finden zwischen Ausdrucksstärke, Kompaktheit und Lesbarkeit.
 
Programmiersprachen beeinflussen wie wir denken
Viel wichtiger als die Syntax einer Sprache ist aber die Semantik und die zu Grunde liegenden Konzepte. Eine Sprache ist nicht nur eine externe Repräsentation von Gedanken. Sie beeinflusst die Art und Weise, wie wir denken. Das gilt für alle Sprachen, aber insbesondere für Programmiersprachen. Jede Programmiersprache bringt eine Menge von Konzepten mit sich. Programme müssen basierend auf diesen Konzepten formuliert werden. Eine neue Sprache zu lernen, bedeutet eigentlich immer auch, dass man neue Konzepte erlernt.
 
Frühe Programmiersprachen haben sich sehr stark an der Hardware und am binären Code für den Computerprozessor orientiert. Programmierer mussten sehr viel darüber wissen, wie der Computer im Detail funktioniert. Programme mussten mit Konzepten wie Bitoperationen, Registern und Prozessorbefehlen modelliert werden.
 
Ausdrucksstarke Sprachen auf einer höheren Abstraktionsebene
Hochsprachen erlauben eine stärkere Entkoppelung von Programmiersprachen und Hardware. Das ermöglicht Sprachen, mit denen Programmierer Probleme auf einer höheren Abstraktions-Ebene und mit mächtigeren Konzepten lösen können. Objektorientierte Sprachen sind das klassische Beispiel dafür. Statt Programme auf Registern und Prozessorbefehlen aufzubauen, können Programmierer Objekte definieren, die Attribute haben und miteinander kommunizieren.
 
Programmiersprachen werden aber auch immer noch von technischen Aspekten beeinflusst. Zurzeit sind beispielsweise funktionale Programmiersprachen wieder sehr im Kommen. Solche Sprachen gibt es bereits seit Jahrzehnten, aber die Parallelisierung moderner Hardware hat zu einer Renaissance geführt. Funktionale Programmiersprachen eignen sich sehr gut, um Programme zu schreiben, die parallel ausgeführt werden können.
 
Die Konzepte und Modelle von modernen Programmiersprachen haben nicht nur dazu geführt, dass Programmierer ihren Code auf einer höheren Abstraktionsebene schreiben können, sondern haben auch die Art und Weise geändert, wie Entwicklerinnen und Entwickler denken. Gute Programmiersprachen erlauben es Entwicklern, Programme zu schreiben, die sehr viel ausdrucksstärker sind und deren Konzepte direkter mit der Realität verknüpft sind.
 
Die Zukunft ist mehrsprachig
Es zeigt sich aber auch, dass Konzepte und somit auch die Sprache zum Problem passen müssen. Eine allgemeine Sprache, die sich für alle Arten von Programmen und Problemen eignet, scheint es nicht zu geben. Programmiersprachen haben verschiedene Vor- und Nachteile und eignen sich unterschiedlich gut für verschiedene Problemstellungen.
 
Es sieht im Moment nicht danach aus, dass die IT-Industrie in nächster Zeit zu einer Sprache hin konvergiert, die der grosse Nachfolger von Java, C/C++, JavaScript oder anderen weit verbreiteten Sprachen werden könnte. Vielmehr entstehen verschiedene kleinere Sprachen mit Stärken und Schwächen in ganz verschiedenen Bereichen.
 
Wenn alles was man hat, ein Hammer ist, sieht jedes Problem nach einem Nagel aus. Der Werkzeugkasten eines guten Entwicklers muss aber vielfältiger sein und das Werkzeug muss zum Problem passen.
 
Sprachen lernen und Sprachen Lernen lernen
Mehrere Sprachen zu beherrschen wird zu einer wichtigen Eigenschaft eines guten Entwicklers. Umso mehr, wenn zu den verschiedenen Sprachen auch verschiedene Denkweisen, Konzepte und Modelle gehören. Die Fähigkeit, sich neue Sprachen anzueignen, neue Konzepte zu absorbieren und in den Werkzeugkasten aufzunehmen, wird in der Zukunft wohl noch wichtiger werden als heute.
 
Moderne Architekturen wie Micro-Services unterstützen diesen Trend. Kleinere Funktionseinheiten und technologieunabhängige Schnittstellen ermöglichen es, verschiedene Programmiersprachen und Technologien zu mischen und für jede Aufgabe eine passende Sprache zu wählen.
 
Natürlich werden sich Entwicklerinnen und Entwickler, wie auch Firmen, auf eine bestimmte Anzahl Sprachen beschränken. Die Vielfalt wird im Vergleich zu heute aber zunehmen.
 
Die nächste grosse Programmiersprache gibt es also nicht. Vielmehr werden es mehrere kleinere Programmiersprachen sein. Entwicklerinnen und Entwicklern kann man nur empfehlen, sich verschiedene Sprachen anzuschauen.
 
Natürlich ist es ein Glücksspiel, ob man dabei aufs richtige Pferd setzt. So wichtig ist das aber gar nicht. Die Fähigkeit, neue Sprachen erlernen zu können und neue Konzepte zu übernehmen, ist viel wichtiger als eine bestimmte konkrete Sprache zu beherrschen. (Corsin Decurtins)
 
Über den Autor
Corsin Decurtins ist Chief Technology Officer beim Zürcher Softwarehersteller Netcetera. Er ist zuständig für Technologiestrategie und Entwicklungsmethodiken, berät Kunden und interne Teams und arbeitet als Softwarearchitekt, -Ingenieur und technischer Projektleiter. Seine 15-jährige Erfahrung hat er hauptsächlich im Bereich von Java-basierten Informations- und Transaktionssystemen für sichere und geschäftskritische Umgebungen. gesammelt. Corsin Decurtins hat an der ETH Zürich Informatik studiert und als Forschungsassistent gearbeitet.
 
(Interessenbindung: Netcetera ist Technologie-Partner unseres Verlags.)