Problem- und Domänenspezifische Lösungen Warum und wie entwickelt man eine neue Programmiersprache?
Anbieter zum Thema
Lassen sich Probleme einer bestimmten Anwendungsdomäne mit einer bestehenden Programmiersprache nicht angemessen lösen, muss eine neue Sprache her. Neben der richtigen und strukturierten Herangehensweise muss einem eines klar sein: die Neuentwicklung macht auf lange Sicht viel Arbeit.

Der Zweck einer Programmiersprache ist es, eine allgemeine Lösung einer Problemklasse beschreiben zu können, welche auf einem Computer ausgeführt wird. Die Beschreibung einer allgemeinen Lösung heißt Programm.
Hierbei repräsentiert eine Problemklasse im Normalfall eine große Sammlung ähnlicher konkreter Probleme, die sich im Wesentlichen durch verschiedene Parameter unterscheiden. Jedes dieser konkreten Probleme wird durch das Programm gelöst, d.h. ein Computer führt das Programm aus, wobei das Programm die Parameter, die das konkrete Problem charakterisieren, beim Start der Ausführung als Eingabedaten erhält.
Warum man immer mehrere Programmiersprachen braucht
Der Einsatzbereich einer Programmiersprache ist durch eine Reihe von Aspekten charakterisiert. So unterstützt eine Programmiersprache zunächst einmal einen bestimmten Programmierstil, z.B. prozedural [etwa C], objektorientiert [etwa Java] oder logikbasiert [etwa Prolog]. Auch orientiert sich eine Programmiersprache oft an einer Anwendungskategorie, z.B. systemnah [etwa C], Geschäftslogik-orientiert [etwa COBOL], Mathematik-orientiert [etwa Fortran]. Unterschiedliche Programmiersprachen haben auch unterschiedliche Effizienzen, mit der sie ausgeführt werden.
Diese verschiedenen Charakteristika sind zudem nicht statisch, es kommen etwa neue hinzu, andere verlieren an Bedeutung. So ist der Energieverbrauch von Programmiersprachen in jüngster Zeit ein immer wichtigeres Kriterium. Auch entstehen neue Merkmale durch den Bedeutungszuwachs bestimmter Technologien wie etwa dem Cloud Computing oder durch neue Architekturstile wie etwa den Microservices.
Als Konsequenz können die bekannten Programmiersprachen nicht alle Kombinationen dieser (dynamischen) Eigenschaften abdecken – und somit entsteht die Notwendigkeit für neue Programmiersprachen.
Gründe für die Entwicklung einer neuen Programmiersprache
Ein typischer Grund für die Entwicklung einer Programmiersprache ist, dass mit einer bislang genutzten Sprache Probleme einer bestimmten Anwendungsdomäne nicht adäquat gelöst werden können. Solche Feststellungen können aus der Praxis kommen oder aber auch akademisch motiviert sein. Somit werden andere Programmiersprachen gesucht, um diese spezifischen Probleme zu lösen.
Findet sich keine geeignete Programmiersprache, ist dies ein starker Indikator, entweder eine bereits existierende Sprache zu erweitern oder eine neue Programmiersprache zu entwickeln. Hierzu werden nun die neuen Charakteristika bzw. die neue Kombination von Charakteristika, die diese Art von Problemen aufzeigen, identifiziert. Anschließend wird analysiert, ob eine existierende Programmiersprache erweitert werden kann, um die identifizierten Defizite zu beheben.
Bei dieser Analyse ist sehr wichtig festzustellen, ob durch die Berücksichtigung neuer Charakteristika die bislang abgedeckten Merkmale der betrachteten existierenden Programmiersprache negativ beeinflusst werden, die existierende Sprache also in ihrer angestammten Anwendungsdomäne schlechter nutzbar wird. Wenn das der Fall ist, kommt die Erweiterung einer existierenden Programmiersprache nicht in Frage. Es muss also eine neue entwickelt werden.
Selbstverständlich kommen für die Analyse auf ihre Erweiterbarkeit nur solche Programmiersprachen in Frage, die auch frei zu Verfügung stehen. Sprachen, die etwa durch Patente oder ähnliches geschützt sind, werden von vornherein ausgeschlossen.
Herangehensweise
Zunächst muss einem bewusst sein, dass die Entwicklung einer neuen Programmiersprache „Blut, Schweiß und Tränen“ über eine geraume Zeit bedeutet. Und man benötigt ein Team von hochspezialisierten Personen, die zum einen die Charakteristika der Anwendungsdomäne, die die Programmiersprache adressieren soll, zutiefst durchblicken und die zum anderen mögliche Sprachelemente von Programmiersprachen verstehen, sowie deren unterschiedliche Umsetzungsmöglichkeiten nebst deren Vor- und Nachteilen.
Anfänglich sollte das Team klein und sehr erfahren sein. Es legt die Grundlagen der neuen Programmiersprache fest und erstellt einen ersten Entwurf der Spezifikation. Wichtig dabei ist, dass permanent überprüft wird, dass die Probleme der Anwendungsdomäne tatsächlich stimmig gelöst werden können, d.h. die Sprachelemente notwendig und hinreichend sind.
Nachdem der erste Entwurf steht, sollte das Team vergrößert werden, um weitere Details der Programmiersprache auszuarbeiten und die Angemessenheit zur Lösung weiterer Probleme der Anwendungsdomäne sicherzustellen. Parallel dazu muss die Ausführungsumgebung der Programmiersprache erstellt und deren Effizienz gesichert sein. Denn Probleme bei der Realisierung der Ausführungsumgebung haben Einfluss auf die Sprachelemente. Außerdem muss eine entsprechende Werkzeugumgebung für die Nutzer der Programmiersprache entwickelt werden.
Herausforderungen und wie man sie angehen kann
Nachdem die Programmiersprache, deren Ausführungsumgebung und die zugehörige Werkzeugumgebung in einer ersten Version zur Verfügung stehen, beginnen die wirklichen Herausforderungen erst: die neu entwickelte Programmiersprache muss sich in der Praxis bewähren.
Hierzu müssen nicht an der Entwicklung beteiligte Programmierer und Programmiererinnen die Sprache verwenden, um die Probleme der adressierten Anwendungsdomäne zu lösen – und vor allem ihre Erfahrungen mit den Sprachentwicklern zu teilen sowie Anregungen zu Verbesserungen zu geben.
Die Sprache muss also entsprechend bekannt gemacht werden, etwa durch Beiträge in Entwicklerforen, Blogs, durch Vorträge auf Konferenzen usw. Parallel dazu müssen die Ausführungs- und Werkzeugumgebung der Programmiersprache frei zur Verfügung gestellt werden, damit interessierte Programmierer die Sprache ausprobieren können. Insbesondere die Durchführung von Hackathons gibt hier unmittelbares Feedback.
Nur wenn die neue Programmiersprache sich in der Praxis bewährt und Vorteile gegenüber anderen existierenden Programmiersprachen zeigt, wird eine nachhaltige Nutzergemeinschaft entstehen und die neue Programmiersprache eine Chance haben, sich langfristig zu etablieren.
Vorteile einer auf Open-Source-basierenden Programmiersprache
Eine Open-Source-Programmiersprache hat den entscheidenden Vorteil, dass Wissen und Erfahrungen einer diversen, großen Gruppe von Spezialisten in die Entwicklung der Programmiersprache einfließen kann. So können Fehler vermieden werden, die ansonsten später während der Nutzung entdeckt würden: solche Fehler würden die Sprache unnötig in Misskredit bringen und ihre Erfolgsaussichten schmälern.
Insbesondere wenn der erste Entwurf der Programmiersprache vorliegt, kann ihre Weiterentwicklung innerhalb einer Open-Source-Community sehr effektiv sein. Ein weiterer Vorteil einer Open-Source-Programmiersprache ist, dass der größere Kreis der beteiligten Entwickler als Multiplikatoren fungieren, die die neue Programmiersprache bekannt machen und andere wiederum anregen, die Programmiersprache zu nutzen.
* Christian Reuter ist General Manager und Vice President Europe bei WSO2.
(ID:48559442)