Will man eine Problemstellung mit Hilfe der elektronischen Datenverarbeitung lösen, so muss man den Lösungsweg (Algorithmus) in einer Sprache formulieren, die der Computer versteht. Sowohl System- als auch Anwendersoftware sind mit Hilfe einer ( oder mehrerer) Programmiersprachen verfasst.
Das Herz eines Computers ist die CPU, also der Microchip, der sämtliche Befehle verarbeitet. Jeder Chip versteht eine bestimmte Anzahl von Befehlen, die ihm in Form von Null-Eins-Befehlsketten übermittelt werden können.
Die Befehle werden direkt in Maschinensprache notiert, d.h. als Folge von Zahlencodes. Da sich der Befehlssatz von Rechner mit unterschiedlichen Prozessoren im Allgemeinen unterscheidet, sind in Maschinensprache geschriebene Programme nur sehr schwer auf verschiedene Prozessortypen übertragbar. (x86, M6800 Serie, usw.)
Beispiel:
Die Zahlenkette
0000 0
0000 0
0000 4
bedeutet für den Chip:
Reserviere eine Variable im Speicher und ordne ihr den Wert 0 zu. Addiere
danach den Wert 4 zu der Variablen.
Die direkte Programmierung in einer Maschinensprache wird heute kaum noch verwendet.
Zu Beginn der Computer-Ära wurden die riesigen Rechenmaschinen noch direkt, also mit den oben beschriebenen Befehlsketten programmiert. Da diese Form der Programmierung jedoch denkbar umständlich ist, kam man bald auf die Idee, Übersetzerprogramme zu entwerfen, die bestimmte Befehlsworte in die entsprechenden Zahlenketten übersetzen. Diese Programme heißen Assembler und bilden die unterste Stufe der Programmiersprachen.
Anstelle von Zahlencodes wird mit Hilfe von symbolischen Bezeichnern codiert.
Eine Assembleranweisung wird in genau einen Maschinenbefehl umgesetzt.
Assemblerprogramme sind deshalb im allgemeinen an einen bestimmten Prozessortyp gebunden.
Beispiel:
Maschinenbefehl |
Assembler-Programm |
|
|
|
|
|
|
Zwar waren
die Assembler schon ein großer Fortschritt, jedoch hatten sie zwei Nachteile:
Erstens war jedem Maschinenbefehl genau ein Assembler-Befehl zugeordnet, d.h.
die Programme waren immer noch genauso umständlich zu schreiben, nur konnte man
sich die Befehle besser merken und zweitens konnte man ein Programm immer nur
für einen bestimmten Chip gebrauchen. Hatte man z.B. ein Programm für die
IBM-PCs geschrieben, ließ es sich nicht auf Apple-Computer übertragen.
Aus diesen Gründen wurden die Programmiersprachen der 3. Generation (oder auch
Hochsprachen) entwickelt. Sie sind oft der menschlichen Sprache sehr ähnlich,
wodurch sie leichter erlernbar sind und haben den entscheidenden Vorteil, dass
mit einem einzigen Befehl oft eine ganze Reihe von Operationen ausgelöst werden
kann. Wenn man z.B. in Turbo Pascal den Befehl ClrScr verwendet so bekommt der
Chip des Computers den Befehl, den Bildschirm zu löschen, die Schreibmarke in
die linke obere Ecke zu stellen, die Text- und Hintergrundfarbe wieder auf die
Normalwerte einzustellen, usw. Außerdem kann man ein Hochsprachen Programm auch
auf einem anderen Computer verwenden, sofern es die verwendete
Programmiersprache auch auf diesem gibt. Da es z.B. Pascal auch für
Apple-Computer gibt, lassen sich viele Programme auch auf diesen verwenden,
wodurch die Arbeit der Programmierer oft halbiert wird. Das Problem der
Hochsprachen ist, das oft unnötig Befehle ausgeführt werden (vielleicht hätte
man z.B. bei ClrScr die Textfarbe gar nicht zurücksetzen müssen, weil man sie
vorher gar nicht verändert hat), wodurch die Programme unnötig groß und damit
langsam werden. Deshalb verwendet man Assembler auch heute noch, wenn ein
besonders schnelles Programm gebrauch wird. (z.B. Grafikprogrammierung für
3D-Spiele)
Während man immer nur einen Assembler für einen Microchip braucht, gibt es im
Bereich der Hochsprachen hunderte von Speziallösungen für bestimmte Bereiche.
So werden z.B. Industrieroboter oft mit extra entwickelten Sprachen gesteuert,
die dann eben nur Befehle wie greife, schweiße, nach_links, usw. haben.
Sprachen der 3. Generation unterstützen unmittelbar die Notation von Algorithmen, sie sind weitgehend anwendungsneutral und maschinenunabhängig.
Erste höhere Programmiersprachen entstanden ab Mitte der fünfziger Jahre (FORTRAN, COBOL, ALGOL-60). Weitere Sprachen dieser Generation sind zum Beispiel PASCAL(1968), MODULA-2, PL1, C, ADA, BASIC, SIMULA.
Im Folgenden werde ich etwas näher auf die verbreitetesten Hochsprachen für PC
und ihre speziellen Fähigkeiten eingehen.
Allgemein muss
man bei den Hochsprachen zwischen Compilern und Interpretern unterscheiden.
Während Compiler (wie Pascal) zuerst das ganze Programm übersetzen und es dann
ausführen (wenn kein Fehler vorliegt), arbeiten Interpretersprachen (wie BASIC)
das Programm Zeile für ab, wodurch die Wartezeit für das Übersetzen entfällt.
Jedoch haben diese Sprachen den Nachteil, dass sie die Programme nicht in
eigenständige Dateien (beim PC sind das die mit der .EXE - Endung) umwandeln
können, was bedeutet, dass man immer den Programmtext weggeben muss und auf dem
Computer, auf dem man das Programm verwenden möchte, auch der jeweilige
Interpreter vorhanden sein muss. Natürlich ist es für Softwareunternehmen in
der Regel völlig undenkbar ihre mit viel Zeit und Geld entwickelten
Programmtexte an den Benutzer weiterzugeben, weshalb Interpreter hauptsächlich
im privaten Bereich zu finden sind. Außerdem sind auch Privatcomputer
inzwischen so schnell, dass die Zeit, die der Compiler zum Übersetzen braucht,
kaum noch auffällt, wodurch die Interpreter immer mehr verdrängt werden.
Es gibt allerdings eine Ausnahme: Die Programmiersprache Java, die in den
letzten Jahren für viel Furore gesorgt hat, ist eine Mischform aus Compiler-
und Interpretersprache. Die Programme werden nicht in Maschinencode, sondern in
sogenannten Bytecode übersetzt, der für einen Interpreter optimiert ist.
So muss der Quelltext der Programme nicht weitergegeben werden und man kann ein
einmal entwickeltes Programm unter verschiedenen Betriebssystemen laufen
lassen, da für die meisten ein Java-Interpreter existiert. Dieser Ansatz wurde
erst nach der DOS-Ära möglich, da neuere Betriebssysteme alle ähnlich Konzepte
wie Mausbedienung und Fenstersystematik unterstützen, die der Interpreter
ansprechen kann.
BASIC |
( Beginners All-purpose Symbolic Instruction Code ) Die wohl bekannteste Interpretersprache überhaupt. War früher auf Homecomputern sehr verbreitet, ist jedoch für größere Programme kaum zu gebrauchen. als Anfänger-Programmiersprache Mitte der sechziger Jahre
konzipiert (T. Kurtz, J. Kemeny)
|
LOGO |
Eine sehr einfache Programmiersprache, die in den 60ern in Amerika entwickelt wurde, um auch kleinen Kindern schon Programmieren beibringen zu können. |
Lisp |
Inzwischen veraltete Sprache, die für Ingenieure einmal Bedeutung hatte. |
Ada |
Benannt nach Auguste Ada Byron (1815-1852), einer Pionierin im theoretischen Informatik-Bereich. Die Sprache wurde in der zweiten Hälfte der siebziger Jahre vom amerikanischen US-Verteidigungsministerium
entwickelt und ist deshalb heute noch im militärisch-technischen Bereich
teilweise wichtig.
|
C |
Eine sehr mächtige Programmiersprache, mit der viele Betriebssysteme geschrieben wurden (MS-DOS, IBM-DOS, UNIX, teilw. OS/2).
wurde Anfang der siebziger Jahre in den AT&T Bell Laboratories
als Systemprogrammiersprache im Zusammenhang mit dem Betriebssystem UNIX
entwickelt (D. Ritchie)
|
|
C++ |
Erweiterung von C um Ausdrucksmittel der objektorientierten Programmierung Anfang der achtziger Jahre in den AT&T Bell Laboratories (B. Stroustrup), Sprachstandardisierung in der Endphase. Ist die objektorientierte Nachfolgesprache von C, die heute wohl zu den am meisten verbreiteten gehört und so etwas wie einen Industriestandard darstellt. Die meisten großen Programme und Applikationen werden heute in C++ geschrieben.
|
|
Pascal |
Die von
Nikolaus Wirth an der ETH Zürich 1968 entwickelte Sprache (benannt nach dem
Mathematiker Blaise Pascal (1623-1662)) wird besonders im Lehrbereich
verwendet, da die Sprache dem Programmierer ein sehr diszipliniertes und
strukturiertes vorgehen abverlangt. Auch im privaten Bereich (besonders in
Deutschland) sehr verbreitet, vor allem für die Entwicklung von
Individualsoftware auf PC spielt im Bereich der professionellen Software-Entwicklung
nur eine geringe Rolle.
|
|
FORTRAN |
( Formula Translator ) Die 1954 von IBM entwickelte Sprache war besonders im naturwissenschaftlichen Bereich lange sehr verbreitet. universelle Programmiersprache, vor allem geeignet für den
wissenschaftlich-technischen Bereich
|
|
COBOL |
Abkürzung für Common Business Orientated Language. Die Sprache wurde um 1960 vom amerikanischen Verteidigungsministerium entwickelt und war lange Zeit im Kaufmännischen bereich bestimmend, da sie über sehr genaue Rechenoperationen verfügt. weit verbreitet im Bereich der kommerziellen Datenverarbeitung
|
|