Information Technology Reference
In-Depth Information
Die Programmierung in dieser Zeit erfolgte ausschließ-
lich in der sog. Maschinensprache. Hierbei handelte es sich
um Folgen von Nullen und Einsen, die unmittelbar von der
Maschine eingelesen und verarbeitet werden konnten. Diese
Sprache ist an der Hardware und nicht an der menschlichen
Sprache und Denkweise orientiert. Damit war dieser Binär-
code für den Menschen praktisch unlesbar und die Program-
mierung erforderte detaillierte Kenntnisse über den Maschi-
nenaufbau.
Der erste Schritt zur Vereinfachung der Programmierung
bestand darin, anstelle von 1en und 0en ganze Gruppen, co-
diert als Ziffern, einzugeben. Zuerst 3 Bits - die man mit den
Zahlen 0 bis 7 codieren konnte ( Oktettcode ) und später 4 Bits
- codiert durch die Ziffern 0 bis 9 und die Buchstaben A bis F
( Hexadezimalsystem ). Der Grund war, dass jeweils zwei die-
ser Gruppen ein Byte ergaben: Bis Anfang der 1970er-Jahre
war ein Byte nur 6 Bit breit - das reichte für die Großbuch-
staben, Zahlen und einige Sonderzeichen. Später nutzte man
8 Bit für ein Byte.
Mit diesem System war es nun möglich die Eingabearbeit
erheblich zu vereinfachen, denn anstatt acht Schalter rich-
tig einzustellen, mussten nur noch zwei Zahlen eingegeben
werden. Betrachtet man als Beispiel die Folge von Bytes
(Hexadezimal)
eines Assemblerprogramms zunächst nahezu eins zu eins in
Maschinensprache überträgt. Dieses Programm nennt man
Übersetzer ( Compiler ), bzw. speziell bei Assemblersprachen
„Assembler“.
Die Bezeichnung Compiler geht ebenfalls auf Grace
Hopper zurück. Bei ihrer Arbeit stellte sie fest, dass bei
komplexeren Berechnungen bestimmte Nebenrechnungen
immer wieder verwendet werden. Es wäre also sinnvoll,
diese nur einmal zu codieren und so abzuspeichern, dass
wiederholt auf sie zugegriffen werden kann. Der Mark I-
Rechner hatte jedoch noch keine Möglichkeit, dies zu
realisieren. Erst sein Nachfolger, der Mark III, besaß die
Möglichkeit, elektromagnetische Speichermedien einzu-
lesen. Hiermit konnte bei Bedarf mehrmals auf identische
Unterprogramme zugegriffen werden. Hopper erstellte ein
Programm, welches es ermöglichte, Unterprogramme (sub-
routines) von einem Band einzulesen und zusammenzustel-
len. Dieses Programm nannte sie „Compiler“. Von diesem
ersten Compilerprogramm wurden in den Jahren 1952-53
mehrere Versionen für den ersten UNIVAC-Computer ent-
wickelt. Die dritte Version mit dem Namen A-2 - die erste
Version hieß A-0 - wurde mit den UNIVAC-Rechnern an
die Kunden ausgeliefert.
Bei den Firmen entstand in den darauffolgenden Jahren
zunehmend Bedarf an speziellen unternehmensspeziischen
Programmen. Diese, durch eigene Mitarbeiter erstellt, sollten
daher ohne Spezialkenntnisse über die Architektur der Ziel-
maschine entwickelbar sein und ferner, aus ökonomischen
Gründen, auch auf Nachfolgerechnern eingesetzt werden
können. Hierdurch entstand der Bedarf an plattformunabhän-
gigen Programmiersystemen. Dies führte zur Entwicklung
von „höheren Programmiersprachen“.
Die ersten Ansätze für derartige Sprachen gehen auf Kon-
rad Zuse zurück. Er entwarf 1945 im Allgäu eine Notation zur
Steuerung der Z4, die er „Plankalkül“ nannte. Der Plankalkül
kam nie zum Einsatz, war aber nach unserem heutigen Ver-
ständnis eine vollwertige Programmiersprache und war damit
die erste höhere Programmiersprache. Die Sprache wurde erst
Ende der 90er-Jahre in Berlin vollständig implementiert.
Zuse verwendete für seine Überlegungen ausschließlich
die Boolesche Algebra, weil er erkannte, dass nur so eine
schnelle Übersetzung auf eine Rechenmaschine möglich
sei. Der Plankalkül umfasste unter anderem Zuordnungsan-
weisungen (assignment statements), Unterprogramme (sub-
routines), bedingte Anweisungen (conditional statements),
Schleifen, Gleitkommaarithmetik (loating point arithmetic),
Feldvariablen (Arrays), zusammengesetzte Datentypen, As-
sertions (Zusicherungen), Ausnahmebehandlungen und an-
dere besondere Merkmale wie zielgerichtete Ausführung.
Zuse wollte eine Sprache entwickeln, die einem Men-
schen eingängiger war als die bis dahin verwendeten Ma-
schinensprachen. Außerdem wollte er eine universelle
Programmiersprache schaffen, sodass die Programmierer
2100 1011 0020 1922 0030
so stellt man allerdings fest, dass diese Folge immer noch
nicht sehr verständlich ist. Daher entwickelte man Assembler-
sprachen, welche die Maschinensprachen der verschiedenen
speziischen Prozessorarchitekturen in einer für den Men-
schen lesbaren Form repräsentierten. Jede Computerarchi-
tektur hatte entsprechend ihre eigene Assemblersprache. Statt
der obigen Bytefolge konnte man z. B. beim Z80-Prozessor
die Befehlsfolge
LD HL,1000H
LD DE,2000H
ADD HL,DE
LD (3000H),HL
END
eingeben. Diese Befehlsfolge bewirkte eine einfache Addition
von Zahlen:
• Lade den Wert 1000H in das Prozessorregister „HL“
• Lade den Wert 2000H in das Prozessorregister „DE“
• Addiere die beiden Register HL und DE, sodass das
Ergebnis danach in HL steht
• Speichere das Ergebnis in der Speicherstelle 3000H im
Speicher ab.
Allerdings kann eine derartige Befehlsfolge nicht mehr
von dem Prozessor direkt gelesen und ausgeführt werden.
Man benötigt daher ein Programm, welches die Anweisungen
 
 
Search WWH ::




Custom Search