Warum es die "ideale" Programmiersprache nicht gibt
Einleitung
Je nachdem, wie viel Ahnung sie von Computern haben kennen sie sicher eine
oder mehrere Programmiersprachen - vielleicht nur dem Namen nach. Fast jeder hat einmal von C++,
Java oder BASIC gehört. Wer sich näher mit Computern beschäftigt, kennt vielleicht noch
Assembler, Pascal, FORTRAN oder COBOL. Doch es handelt sich nur um die Spitze eines Eisberges aus
Programmiersprachen. Der Autor kennt etwa 20 Sprachen, die meisten allerdings nur dem Namen nach,
doch es gibt mit Sicherheit weit über 100 Programmiersprachen. Warum sind es so viele? Warum
lernt der Autor in einem 4 Jahre Studium an der FHT Esslingen nicht weniger als 9 Programmier-,
Datenbank und Skriptsprachen? Und warum streiten sich Programmierer über die "richtige" Sprache?
Diesen beiden Fragen geht dieser Aufsatz nach.
Die Schaffung einer Programmiersprache - Auch eine Möglichkeit der
Selbstverwirklichung
Man könnte meinen, es sei schwierig eine
Programmiersprache zu schaffen, doch dem ist nicht unbedingt so. Es ist sicher schwierig eine
Programmiersprache zu schaffen mit der man alles lösen kann und die noch dazu schnell ist. Dazu
gehört schon ein gutes Wissen über Hardware und Systemprogrammierung. Doch der Grundschritt - Ein
Parser der einen Quelltext analysiert und daraus Code bastelt, ist Grundlage einer beliebten
Vorlesung an allen Universitäten und vielen Fachhochschulen namens "Compilerbau". Es ist ja nicht
gesagt, das ihre neue Sprache gleich Maschinencode produziert, es reicht wenn Sie ein C oder
Pascalprogramm erzeugt das dann an einen C oder Pascal Compiler weitergegeben wird... (So werden
unter Linux z.B. einige Programmiersprachen implementiert indem man einen Parser vor den
C-Compiler legt).
So sind neue Programmiersprachen ideale Möglichkeiten sein Ego zu verwirklichen. Wer in seinem
Betrieb durch Programmierrichtlinien daran gehindert ist, unleserlichen, kryptischen Code zu
produzieren, erfindet eben eine Programmiersprache!
Damit ihr neues Geschöpf aber Erfolg hat muss es einige Bedingungen erfüllen:
- Eine Firma mit weltweiter Bedeutung veröffentlicht eine neue Programmiersprache und kann
diese mit ihrer Marktmacht durchsetzen: So COBOL von IBM. Doch nicht immer gelingt dies. Bei
PL/1 konnte IBM dies nicht wiederholen und ob C# von Microsoft ein Erfolg wird kann an dieser
Stelle noch nicht gesagt werden
- Ein internationales Komitee standardisiert ihre Sprache und empfiehlt diese: Das vermeidet
Inkompatibilitäten zwischen verschiedenen Herstellen. Nahezu alle großen Programmiersprachen
haben im Laufe ihrer Entwicklung verschiedene Standards durchgemacht, die meist als Zahl an die
Sprache angehängt werden. Von FORTRAN gibt es die Standards von 1966,77 und 90, COBOL, C, C++
sind ebenso standardisiert. Ein Standard gewährleistet Portabilität der Programme.
- Doch auch dies ist kein Gewähr für den Erfolg: ALGOL ist Anfang der sechziger Jahre die erste
strukturierte Programmiersprache. Sie wurde von einem Komitee geschaffen und standardisiert.
Doch anders als ihre Kinder Pascal oder C hatte sie nie Marktbedeutung. Vielleicht weil sie aus
Europa kam - Die Amis übernehmen nichts von anderen.
- Ihre Erfindung ist so genial das sie sich einfach durchsetzt - Selten der Fall, doch
immerhin 4 Fälle sind bekannt: Pascal weil Sie leistungsfähig und leicht lesbare Programme
produziert, C weil schnell und maschinennah, C++ weil es die Mängel von C abschaffte, BASIC
weil es als einzige Sprache in die kleinen Speicher der Heimcomputer in den siebziger und achtziger
Jahren passte.
- Die Sprache wird am grünen Tisch entworfen und von Amts wegen verordnet: So bei ADA vom
amerikanischen DoD. Allerdings eben nur im militärischen und Luft/Raumfahrtbereich.
Gründe warum sich Programmiersprachen durchsetzen
Historie
FORTRAN und COBOL gelten heute als
"Dinosaurier" unter den Programmiersprachen: Sie waren einfach die ersten. Es sind
Spezialsprachen: COBOL erlaubt es Daten und Dateien zu verwalten, sortieren, selektieren und
formatiert auszugeben. Man kann damit nur beschränkt rechnen. (Es gibt nicht die bei
naturwissenschaftlichen und technischen Anwendungen wichtigen transzendenten Funktionen und die
Syntax ähnelt gesprochenem Englisch anstatt Formeln.) FORTRAN ist dagegen für Berechnungen
geeignet, aber nicht wie COBOL für die Datenverwaltung. Aber das ist kein Hindernis gewesen. Mit
FORTRAN wurden Simulationen des Wetters, von Atomwaffen oder Raketen programmiert, mit COBOL die
Verwaltung von Bankkonten oder die Gehaltsabrechnung. Die NASA hätte sicherlich nicht mit ihren
Großrechnern die Lagerverwaltung eines Betriebes in COBOL gerechnet und ein Betrieb keine
Klimaprognose in FORTRAN laufen lassen. In dem Anwendungsbereich waren also beide Sprachen ideal
und weil Software zwar immer erweitert aber selten neu erstellt wird haben beide Sprachen auch
heute noch Bedeutung.
Ein neues Anwendungsgebiet
Es gibt neben dem Mainstream - Programmiersprachen die sich
mehr oder weniger für alles eignen, gibt es auch Spezialsprachen. Ein paar seien hier genannt:
- APL: Vielleicht die ungewöhnlichste Sprache die es gibt: Es gibt keine Befehle sondern
Operatoren ähnlich mathematischen Symbolen, keine Schleifen, keine Datenverwaltung. APL ist
eine Dialogsprache mit der man Rechnen kann - mit sehr mächtigen Befehlen. Allerdings kenne ich
niemand aus Physikern und Mathematikern die in APL programmieren.
- LISP, Prolog: Wenn sie in C oder Pascal programmieren dann geben Sie den Algorithmus ein.
Anders in LISP und Prolog, diese arbeiten Regelbasiert: Sie geben die Fakten und Verknüpfungen
ein und das Programm ermittelt selbstständig die Lösung des Problems. Als in den achtzigern KI groß
in Mode war wurde beiden Sprachen eine große Zukunft vorhergesagt, doch es kam nicht so.
- Ein ungewöhnliches Konzept: Im Mittelpunkt von FORTH stand der Stapel als Speicher, bei
PEARL war es die Echtzeitsteuerung und bei OCCAM die Fähigkeit ein Programm auf vielen
Computern gleichzeitig laufen zu lassen. Diese Konzepte fielen und standen mit den
Randbedingungen. Als die Computer kleine Speicher hatten und langsame CPUs war Forts populär,
doch ihr Konzept unterschied sich von allen anderen Sprachen. PEARL war populär als noch nicht
soviel Rechenzeit zur Verfügung stand und setzte sich in Steuerungsaufgaben durch, aber eben
nicht weiter. Heute ist PEARL von C verdrängt worden. OCCAM war eng an eine Prozessorfamilie
die Transputer T212,414 und T800 von Inmos. gebunden und wurde nicht von anderen Herstellern
übernommen.
- Eine leichte Erlernbarkeit: BASIC setzte sich vor allem deswegen durch. Doch viele
benutzten BASIC nur als Sprungbrett zu anderen Programmiersprachen. Es fehlten einfach zu viele
syntaktische Elemente anderer Sprachen.
Gründe warum sich Konzepte nicht durchsetzen
Nun die meisten
Schöpfungen sind der Welt und auch einem Großteil der Programmierer unbekannt. Kennen Sie SNOBOL
oder Pilot? Aber es gibt auch prominente Beispiele von Sprachen die sich nicht durchsetzten:
Sie erfinden eine neue Sprache - anstatt eine alte zu verbessern
1970/71 entstanden
Pascal und C - zwei strukturierte Programmiersprachen mit unterschiedlichem Anspruch. Pascal als
leicht lesbare Lehrsprache und C als hardwarenahe "Superassembler" Sprache. Der Erfinder von
Pascal Niklaus Wirth schuf dann Modula - mit dem Konzept das eine Modul nur wichtige
Informationen nach außen hin sichtbar macht und später die objektorientierte Sprache Oberon.
Dagegen wurde C++ als objektorientierte Erweiterung von C konzipiert und erlaubte es den
Programmierern langsam einzusteigen ohne umzusteigen. Modula und Oberon inspirierten andere
Sprachen, doch setzten sich nicht durch. Dagegen ist der Hersteller Borland, der die Konzepte von
Modula und C++ in Pascal übernommen hat, damit sehr erfolgreich.
Ihre Sprache ist zu groß
PL/1 und ADA sind zwei Sprachen, die als sie vorgestellt wurden
für ihre Zeit sehr mächtig und umfangreich waren - das limitierte ihren Einsatz auf große Systeme
und viele Programmierer scheuten den Umstieg. Als sie auf kleineren Rechnern liefen, hatten
andere Sprachen die Konzepte übernommen und es gab keinen Grund mehr sie einzusetzen. PL/1 ist
heute ganz verschwunden. ADA wird im militärischen Bereich und in der Luft- / Raumfahrt
eingesetzt und ist Lehrsprache an Universitäten - weil jede andere Sprache eine Teilmenge von ADA
ist.
Ihr Konzept ist zu radikal
Smalltalk ist eine objektorientierte Sprache und zwar rein
Objektorientiert. Es gibt nur Objekte und keine einfachen Variablen. Smalltalk ist revolutionär
aber es gibt eben nur wenige Revoluzzer. Viele Sprachen haben das Konzept der Objekte übernommen,
aber Smalltalk ist eine Nischensprache geblieben.
Warum sich Programmierer so trefflich streiten
Wenn zwei
Programmierer zusammenkommen und verschiedene Programmiersprachen sprechen so gibt es meist
Streit. Ja es scheint so als fände der eine an der anderen Programmiersprache nur Nachteile. Ein
paar Äußerungen über Programmiersprachen seihen hier mal wiedergegeben:
- FORTRAN: Dinosauriersprache, gerade gut genug für Berechnungen
- COBOL: Keine Programmiersprache, sondern was für Wirtschaftswissenschaftler die gut
Englisch können
- C: Ideal für Programmierer die für Assembler und saubere lesbare Programme zu blöd sind und
APL nicht kapieren
- C++: Für C Programmierer die objektorientiert programmieren wollen, aber eigentlich doch
nicht
- Pascal: Für Ordnungsfanatiker
- LISP: Ohne Klammern so lustig wie Beuys ohne Hut
- BASIC: Spaghetti Code für Anfänger
- APL: Nur für Mathematiker und Physiker verständlich
Warum dies? Nun bei einer Programmiersprache wie sie heute vorliegt, benötigt man etwa 2
Jahre um nicht nur alle Elemente dieser Sprache zu beherrschen, sondern auch sicher anzuwenden
und Programme in den Elementen dieser Sprache zu schreiben. Natürlich ist der Einstieg schneller
zu schaffen, aber jede Sprache hat andere Konzepte und diese zu verinnerlichen dauert. Diese Zeit
ist vergleichbar der eine Fremdsprache zu lernen und danach will man natürlich nicht nochmals
soviel Zeit investieren für eine andere Sprache.
Das ganze ist nun ein physiologisches Problem: Man sieht sofort die Mängel der neuen Sprache,
die Elemente welche die neue Sprache aufweist die neu sind dagegen weniger. Wenn man mit der
Alten zufrieden ist so will man eigentlich nicht umsteigen. Man findet immer Gründe warum die
neue Sprache schlimm ist. Selbst bei Sprachen die alles können wie ADA oder C++ - sie sind dann
einfach zu umfangreich...
Nicht verheimlichen sollte man auch das jede Sprache irgendwo Elemente hat die einen
ansprechen. Der Autor z.B. ist von BASIC zu Pascal gekommen und ihm gefallen die gut lesbaren
Programme, die Trennung von Variablendeklarationen und Code. C dagegen wirkt für ihn wie das
Produkt eines schreibfaulen Programmierers. Überall die geschweiften Klammern {} und Operatoren
die man geistig erst mal umsetzen muss. Andere finden das gerade an C toll - vor allem weil man
damit nahezu unleserliche Programme schreiben kann. (Viele Programmierer sehen es als ein
wesentliches "künstlerisches" Element sich selbst in trickreichen Programmen zu verewigen).
Es ist daher nicht verwunderlich wenn sich neue Programmiersprachen an alte anlehnen und es
ganze Abstammungsbäume gibt. Es wird sicherlich nie die eine Programmiersprache geben und jede
die heute noch im Einsatz ist hat ihre Existenzberechtigung - sie hat sich gegenüber vielen
anderen durchgesetzt.
© des Textes: Bernd Leitenberger. Jede Veröffentlichung dieses Textes im Ganzen oder in Auszügen darf nur
mit Zustimmung des Urhebers erfolgen.
|
|
Zum Thema Computer ist auch von mir ein Buch erschienen. "Computergeschichte(n)" beinhaltet, das was der Titel aussagt:
einzelne Episoden aus der Frühzeit des PC. Es sind Episoden aus den Lebensläufen von Ed Roberts, Bill Gates, Steve
Jobs, Stephen Wozniak, Gary Kildall, Adam Osborne, Jack Tramiel und Chuck Peddle und wie sie den PC schufen. Das Buch wird
abgerundet durch eine kurze Erklärung der Computertechnik vor dem PC, sowie einer Zusammenfassung was danach geschah, als
die Claims abgesteckt waren. Ich habe versucht ein Buch zu schreiben, dass sie dahingehend von anderen Büchern abhebt,
dass es nicht nur Geschichte erzählt sondern auch erklärt warum bestimmte Produkte erfolgreich waren, also auf die
Technik eingeht.
Mehr über das Buch auf dieser eigenen Seite.
|