Es hat sich bestimmt jeder schon einmal gefragt wie genau eigentlich ein Computer funktioniert. Sicher, eine ungefähre Vorstellung davon haben die meisten vielleicht. Es gibt einen Prozessor, eine Grafikkarte, verschiedene Arten von Speicher und meistens auch ein Display, eine Maus und eine Tastatur.
Aber was genau macht der Prozessor eigentlich? Irgendetwas mit Nullen und Einsen. Rechnen halt. Da endet dann auch oft die Vorstellungskraft. Dieser Text soll keine spezifische Einführung in die Benutzung von Computern sein und er soll auch nicht durch allzu viele Details von der eigentlichen Idee hinter Computern ablenken. Dieser Text soll einfach das intellektuelle Bedürfnis befriedigen einfach wissen zu wollen was denn dahintersteckt. Und das ohne sich allzu sehr mit der Technik selbst befassen zu müssen. Ausserdem wird bei dem ein oder der anderen vielleicht ein wenig Faszination an der Informatik geweckt, die nicht mehr mit Computern zu hat als Astronomie mit Teleskopen (Zitat Esdger Wybe Dijkstra).
Eigentlich ist es nämlich egal, ob ein Prozessor jetzt mit Nullen und Einsen oder den Zahlen im normalen Dezimalsystem rechnet. Es handelt sich dann nur um eine andere Darstellung. Die Zahlen bleiben die gleichen. Es ist im Prinzip ja auch egal, ob man die Zahl »vier« in ihrer arabischen Schreibweise als »4« darstellt, oder als römische Zahl »IV«. Es hat sich nur herausgestellt, das sich mit der arabischen Schreibweise einfacher rechnen lässt. Noch einfacher lässt es sich in der Binärdarstellung (also mit Nullen und Einsen) rechnen. Insbesondere wenn man die Rechenoperationen auf einem Computerchip implementieren will. Also nutzt man anstatt der »4« das binäre Äquivalent »100«.
Da aber beide Darstellungsformen äquivalent sind, nehmen wir jetzt einfach vereinfacht an, alle Zahlen sind immer im Dezimalsystem dargestellt. Aber was genau rechnet ein Prozessor denn mit diesen Zahlen? Man will ja nicht nur einen einfachen Taschenrechner, sondern möchte Texte schreiben, im Web surfen oder Videos bearbeiten können. Dazu werden zunächst einmal alle diese Daten in Zahlen umgewandelt. Das ist z.B. bei einem Text sehr einfach. Man ordnet einfach jedem Buchstaben, jeder Ziffer und jedem Satzzeichen eine Zahl zu. Um einen Text zu speichern, schreibt man diese Zahlen dann einfach hintereinander auf und kann sie so später für die Ausgabe am Bildschirm wieder in Buchstaben umwandeln.
Bei Bildern ordnet man zunächst jeder Farbe eine Zahl zu. Dazu beschränkt man sich auf eine begrenzte Anzahl von Farben. Zum Beispiel alle Farben die auf einem Monitor oder mit einem Drucker darstellbar sind. Üblich sind etwa 16 Millionen verschiedene Farben. Dann schreibt man einfach für jeden Punkt in einem Bild die dazugehörige Farbe in eine lange Liste. Die Anzahl der Bildpunkte und das Format des Bildes kann man vorher auch als Zahlen an den Anfang der Daten schreiben. Man kann sich vorstellen, dass die Dateien – also die Listen von Zahlen – auf diese Weise sehr schnell sehr groß werden. Deswegen gibt es auch verschiedene Arten um Bilder darzustellen. Teilweise kann so enorm viel Speicherplatz gespart werden. Prinzipiell lassen sich aber alle Daten als Listen von Zahlen darstellen. Diese werden dann wieder als Listen von Ziffern gespeichert. Wieviele Ziffern dann eine Zahl ergeben hängt vom jeweiligen Kontext ab. Bei Bildern dann zum Beispiel genügend Ziffern um die 16 Millionen Farben darzustellen. Bei der tatsächlichen Darstellung im Computer hat sich eingebürgert als Basis die Zahlen von 0 bis 255 zu nehmen (genannt ein Byte). Um alle Farben darstellen zu können muss man dann einfach mehrere Byte zusammennehmen.
Man kann also alle Daten als Folgen von Zahlen darstellen. Wie kommt man damit aber zu dem Programm das im Computer ausgeführt wird? Zum Beispiel zu einer Textverarbeitung? Ein Computer kann ja nicht nur eine fest vorgegebene Anzahl von Programmen ausführen, sondern man kann mit demselben Prozessor prinzipiell unbegrenzt viele verschiedene Programme ausführen. Ein Programm kann aber auch wieder als eine Folge von Zahlen dargestellt werden. Man kann zum Beispiel jedem Befehl den ein Prozessor ausführen kann (zum Beispiel Addition, Multiplikation, etc.) wieder eine Zahl zuordnen. Also kann der Prozessor die Liste der Befehle eines Programmes und die Daten die bearbeitet werden sollen aus dem Speicher lesen und dann der Reihe nach einen Befehl nach dem anderen ausführen.
Damit so sinnvolle Programme ausführbar sind, gibt es noch ein paar mehr Befehle als die Grundrechenarten. Zum Beispiel um zu erlauben zu steuern, welche Zahlen wie oft multipliziert werden und was dann mit dem Ergebnis gemacht werden soll. Häufig will man dann auch abhängig vom Ergebnis einer solchen Operation bestimmen welcher andere Befehl als nächstes ausgeführt wird. Dazu gibt es Möglichkeiten direkt zu einem bestimmten Befehl im Programm zu springen.
Im nächsten Teil werde ich dann erklären wie aus solch einfachen Befehlen sinnvolle Programme zusammengesetzt werden können und was zwischen einem Tastendruck bis zur sichtbaren Änderung auf dem Monitor alles passiert.