Um effektiv Programmieren zu lernen, ist es sinnvoll sich einen etwas tieferen Einblick in die Funktionsweise eines Computers zu verschaffen. Hierzu werden wir nun für einen Augenblick sehr tief in die Materie eintauchen aber nur um die Wurzel des Ganzen kurz zu beleuchten.
Bei den kleinsten Schaltkreisen im Computer handelt es sich um sogenannte Logikgatter. Stellen wir uns dazu einen geraden Draht vor, der an zwei Stellen durch Drahtbrücken verbunden ist. Am Ende ist eine Leuchtdiode (LED) angebracht:
Diese Drahtbrücken können offen oder geschlossen sein. Im offenen Zustand ist der Stromfluss unterbrochen, im geschlossenen nicht.
Dadurch ergeben sich folgende Möglichkeiten:
Drahtbrücke 1 | Drahtbrücke 2 | LED leuchtet |
offen | offen | nein |
offen | geschlossen | nein |
geschlossen | offen | nein |
geschlossen | geschlossen | ja |
Wenn wir 0 setzen wenn kein Strom fließt und 1 wenn Strom fließt haben wir eine sogenannte Wahrheitstabelle.
Drahtbrücke 1 | Drahtbrücke 2 | LED leuchtet |
0 | 0 | 0 |
0 | 1 | 0 |
1 | 0 | 0 |
1 | 1 | 1 |
Das elektronische Bauteil hierzu nennt man Logikgatter. Genau gesagt handelt es sich um eine sogenannte UND-Schaltung, weil am Ende nur dann eine 1 ausgegeben wird, wenn beide Schalter geschlossen sind. In null und eins (nennt man binär) ausgedrückt, ergibt diese Wahrheitstabelle also:
000
010
100
111
Ein Computer kennt nur zwei Zustände. Strom oder kein Strom. Abgebildet durch 0 oder 1.
Mit dieser Schaltung kann man theoretisch bereits 1+1=2 realiseren. In der Realität ist es allerdings so, das es neben den UND-Schaltungen, eine Vielzahl ähnlicher Schaltungen gibt. Unter anderem auch ODER, NICHT usw. Durch eine Vielzahl solcher verschachtelter und raffiniert angeordneter Schaltungen, kann man zum Beispiel Zahlen addieren. Durch eine andere Anordnung subtrahieren usw.
Diese Anordnungen können dann mit verschiedenen Reihen von Stromimpulsen angesteuert werden und geben je nach Muster der Impulse ein anderes Ergebnis aus. Bei den ersten Computer wurde diese Eingabemethode z.B. durch Lochkarten gelöst. Die Ein- und Ausgabedaten sind dabei in Bits & Bytes organisiert. Ein Bit ist entweder 0 oder 1, Ein Byte 8 Bits. 1024 Bytes 1 Kilobyte usw.
Binär und Hexadezimalsystem
Die ersten Programme wurden also direkt auf diese Karten gestanzt. Man programmierte den Computer direkt mit Zahlenreihen auch Bitfolgen genannt. Z.B. wäre ‚ABC‘ binär: 01000001 01000010 01000011.
‚0123‘ wäre: 00110000 00110001 00110010 00110011
Da dies relativ verwirrend wirkt, hat man die Hexadezimale Schreibweise eingeführt, da man mit ihr sehr effektiv binäre Zahlen abbilden kann. Mit zwei Hexadezimalzeichen kann man genau ein Byte abbilden. Was angenehm kurz ist. Diese Schreibweise beruht auf 16 Ziffern 0-9 und A-F. Man zählt ganz einfach nach der 9 nicht 10, sondern A dann B .. bis 15 das dann als F dargestellt wird. die 16 wird dann mit der nächst möglichen kleinsten Zahl dargestellt also die 10. Das geht dann so weiter bis man nach der nach der 19 (dezimal 25) nicht 20 sondern 1A schreibt, was dann die 26 im Dezimalsystem wäre. Ein ‚Hexwert‘ hat auch den Vorteil das man meist sofort erkennt das es sich um eine Darstellung von binären Werten handelt und nicht um Dezimalzahlen.
Wird in der Programmierung nur ein einziges Bit, also 0 oder 1 benötigt, spricht man von einem Boolean wobei die beiden Zustände normalerweise in allen Programmiersprachen mit TRUE und FALSE symbolisiert werden (In der Regel ist TRUE 1 und FALSE 0, könnte theoretisch aber auch andersrum sein).
Die ersten ‚richtigen‘ Programmiersprachen waren sogenannte Assembler. Mit einer solchen Sprache wurden die 0 und 1 Reihen, in Befehlen, sogenannten Mnemonics zusammengefasst. Ausserdem wurden verschiedene häufig gebrauchte Aktionen wie das Laden und speichern von Daten in sogenannten Interrupts organisiert. Der Programmierer konnte dann neben direkten Befehlen auch diese Interrupts aufrufen und Daten übergeben.
Mit dieser Art von Programmierung wollen wir uns kurz im nächsten Kapitel beschäftigen.
Zusammenfassung
- Ein Computer rechnet mithilfe von logischen Schaltungen, Logikgatter genannt.
- Ein Computer rechnet binär, mit 0 und 1
- Die Ein- und Ausgabe erfolgt mit Bitfolgen
- Bitfolgen können einfacher mit dem Hexadezimalsystem dargestellt werden.
- Assembler ist eine Programmiersprache in der Bitfolgen in Mnemonics zusammengefasst werden
- Über Interrupts werden in Assembler häufig benutzte Aktionen z.B. das Einlesen von Daten ausgeführt.
- Ein Boolean ist in die Beschreibung eines Zustands der entweder TRUE für 1 oder FALSE für 0 sein kann