C-Programmierung



Ach wie schön waren noch die Zeiten, als man ein ganzen Betriebssystem nur aus tausenden von Nullen und Einsen zusammenbasteln konnte. Konnte man das? Ja, tatsächlich. Konrad Zuse hatte es noch drauf, den Binärcode für seine Z-Serie selbst zu schreiben. Natürlich waren diese Maschinen noch sehr simpel im Vergleich zu heutigen Rechenmaschinen. Nichtsdestotrotz hatte er keine Programmierschicht drübergelegt, die dem menschlichen Geiste näher ist.

Als sich dann Assembler etabliert hatte, den mittlerweile sehr komplex gewordenen Maschinencode zu ersetzen, hatten die Leute plötzlich nur noch push und pop im Kopf.

Dann kamen die ersten Hochsprachen, aus denen sich C, und später als objektorientierte Programmiersprache C++ entwickelt hatten. Natürlich parallel zu anderen auch nennenswerten Programmiersprachen.

Heutige Skriptsprachen setzen sogar noch eine Abstraktionsschicht drauf, und lassen den Entwickler schon fast gar nicht mehr wissen, wie die Maschine die Befehle abarbeitet.

Aber auch heute wird an zeitkritischen Stellen noch in Assembler programmiert, auch wenn dies sehr selten geworden ist. Man spricht sogar teilweise schon von einer "C"-Implementierung an zeitkritischen Stellen.

Zugunsten der Bequemheit, aber auch zugunsten der Struktur, wird die Rechenmaschine, der treue Sklave des Menschen, solange er nur mit Energie gefüttert wird, mit immer mehr und mehr "overhead" belastet. Er führt Routinen aus, die er eigentlich nicht ausführen müsste, um das Problem zu lösen.

Aber kritisch betrachtet liefert dies auch Vorteile, denn die Komplexität vieler moderner Programme setzt voraus, dass man eine enorme Struktur und Ordnung in den Programmtext einpflegt. Ohne die ganzen Abstraktionen wäre es einem durchschnittlichen Programmierer kaum möglich, diese Komplexe Software zu schreiben.

Wie ein php-interpreter genau eine foreach() Schleife zerlegt, kann ich mir nur denken. Den genauen Algorithmus kenne ich jedoch nicht. Auch weiss ich nicht, welcher Assembler-Code bei einer for() Schleife ausgeführt wird. Ich muss es für meine Programmierzwecke auch nicht wissen.

Aber auch der fortgeschrittene Programmierer mit Erfahrung in Assembler programmiert seinen Computer nicht exakt. Auch er sagt dem Compiler "mache mir IRGENDWO ein Speicherregister frei, und berechne dann mit dieser Variable, die IRGENDWO anders im Speicher liegt.

Die Compiler haben den Menschen diese Aufgabe abgenommen. Programmierung wurde massentauglich gemacht. Jeder durchschnittliche Absolvent einer Fachinformatiker-Ausbildung, oder auch nur derjenige, der sich aus Spass Privat mit Computern beschäftigt, kann höchst komplizierte Programme schreiben.

Die echte Elite, die echten Programmierer die noch von klein auf in Assembler oder gar Maschinencode geschrieben haben, beschränken sich auf verdammt wenige. Diese Leute sterben mehr und mehr aus, da Compilerprogrammierung für die meisten Menschen zu komplex ist. Ich habe nie einen Blick in den Quelltext von gcc geworfen, schon alleine aus Ehrfurcht vor diesem Programm.

Mein Respekt an die echten letzten Informatiker, die es noch gibt.

1 Kommentar: