Bernd Leitenbergers Blog

Herr Leitenberger, warum gibt es so viele Programmierspachen?

Tja was antwortet man Maschinenbau-Studenten, die schon mit einer für die Lehre entworfenen Programmiersprache ihre Probleme haben, warum es noch so viel mehr Sprachen gibt?

Nun, es gibt natürlich einige Beantwortungsmöglichkeiten: Die eine ist weil bisherige Programmiersprachen etwas nicht hatten was gewünscht war. Diese allgemeine Aussage kann man in viele Unteraspekte unterteilen.

Betrachtet man es historisch, dann waren die ersten Programmiersprachen noch begrenzt: FORTRAN konnte nur Berechnungen, COBOL nur Datenverwaltung. Selbst so Basics wie die heutigen Schleifentypen, Parameter als Wert und Referenzparameter mussten erst noch entstehen. Das kam dann über Programmiersprachen wie Algol, Pascal und C.

Das eine ist der Grundstock an Sprachfeatures. Das zweite sind Konzepte. Nach der prinzipiellen Art sind drei Sprachtypen zu unterscheiden, nämlich prozedurale, funktionale und deklarative. Wenn man dann noch technische Randbedingungen hinzunimmt, kann man leicht zwischen Sprachen unterscheiden die interpretiert sind oder Maschinensprache erzeugen.

Und natürlich gibt es noch Weiterentwicklungen wie das Objektmodell, Modularisierung, Erweiterung fundamentaler Datenstrukturen wie das native Unterstützen von Bäumen, Listen oder assoziativen Arrays. Schon hier kann man über über Bibliotheken viel nachrüsten, ohne den Sprachkern zu erweitern.

Doch wenn ich mal von den grundlegenden technischen Basiseinschränkungen absehe (eine interpretierte Sprache hat einfach andere Möglichkeiten zur Laufzeit, z.B. kann sie viel einfacher Code interpretieren als eine schon übersetzte Sprache) und vielleicht auch, dass eine eierlegende Wollmilchsprache die sowohl deklarativ wie auch prozedural und funktional und objektorientiert ist nicht wünschenswert ist, dann gibt es trotzdem noch viel zu viele Sprachen.

Die Frage ist: warum? Nun ein Grund ist, dass Standards meistens drauf hinauslaufen dass Sprachen sich nur ganz langsam weiter entwickeln. Man sieht dass an den Oldtimern wie Cobol, FORTRAN oder C. Die Komptabilität zu alten Programmen führt dazu dass die Erweiterungen immer kleiner werden. Das scheint nun auch anderen Sprachen so zu gehen wie Ruby, Python oder Java. Schon dass führt dazu dass viele einfach was neues machen wie dies z.B. bei C++ der Fall war.

Das nächste und wahrscheinlich der Hauptgrund für neues Sprachen ist einfach der „Ich mach mein Ding“ Ansatz. Anstatt zu sehen wie man eine existierende Sprache weiterentwickelt werden kann, damit sie den Bedürfnissen entspricht, macht man einfach eine neue. Angesichts der Vorrede über existierende Standards ist das ja auch kein Wunder. Einen Compiler zu schreiben ist dank Lex und Yacc ja auch kein Problem. Wenn eine große Firma dahinter steht, dann wird das ganze sogar erfolgreich. Die Zahl der Beispiele ist endlos. So VbScript bei Microsoft als Alternative zu Javascript und Google macht es mit seinem Dart ja auch nicht anders oder C# als Alternative zu Java, nachdem es mit dem J++/J# nicht so richtig geklappt hat.

Man kann gegen Firmenstandards sagen was man will, aber sie entwickeln sich schneller weiter als offizielle Standards. Nehmen wir mal Delphi, das ja auf Pascal basiert. Pascal hat praktisch keine Marktbedeutung mehr und der einzige Hersteller von Delphi ist eben die Firma Embacederro (Ex-Borland). Das gab die Freiheit sich praktisch vom Standard zu verabschieden und erst Pascal objektorientiert zu erweitern und dann daraus ein komponentenbasierendes visuelles Programmiersystem zu machen, mit dem man erstaunlich viel machen kann. Bestimmte Teile wie die Möglichkeit es komponentenbasiert zu erweitern haben andere Sprachen noch immer nicht, wenn auch die Möglichkeiten der Kernsprache inzwischen gegenüber C# ein bisschen veraltet sind. Der springende Punkt ist dass es aber im Kern immer noch Pascal ist, für dasselbe Konzept muss man bei den C-ähnlichen Sprachen vier Generationen durchgehen nämlich C,C++,Java und C#.

Dann gibt es noch die Programmiersprachen als Selbstverwirklichung. Also jeder nur mittelmäßig begabte kann eine Programmiersprache erstellen. Von mir stammen auch zwei, die jeweils Messsysteme gesteuert haben. Eine für eine Demonstration an der Hochschule an der ich arbeitete und eine zweite für die automatisierte Ausführung von Tests bei einem Hersteller von sicheren Steuerungen. Von der letzten habe ich mal ein Programm abgedruckt, wie ihr seht ist es so ein Mischmasch zwischen BASIC und Pascal:

Die mobile Version verlassen