Site hosted by Angelfire.com: Build your free website today!
undefined
undefined

Programmiersprachen

 

 

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.

Organigramm

 

1. Maschinensprache

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.

 

2. Assembler

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

0000 0

zaehler db ?

0000 0

mov zaehler, 0

0000 4

add zaehler, 4

 

3. Die 3. Generation höhere Programmiersprachen (high level language)

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.

 

4. Compiler und Interpreter

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.

 

5. Hochsprachen und ihre speziellen Fähigkeiten

5.1 Interpretersprachen

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)
BASIC-Systeme arbeiten häufig interpretativ
neuere BASIC-Systeme (z.B. Visual BASIC) bieten häufig eine große Leistungsbreite (strukturierte Programmierung, Grafik, Datenbankzugriff), gewährleisten jedoch keine Portabilität

 

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.
gute Standardisierung (1979, 1983), neuer Standard Ada 95
als universelle Programmiersprache konzipiert, sehr großer Sprachumfang

 

 


5.2 Compilersprachen

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)
heute auf allen Rechner- und Systemplattformen verfügbar, gute Standardisierung
wachsende Bedeutung im Bereich der professionellen Software-Entwicklung
großer Gestaltungsspielraum - im positiven wie im negativen - für den Programmierer, deshalb wenig geeignet als Ausbildungssprache

 

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.
Programmierung 'im Großen' wird durch den ursprünglichen PASCAL-Standard (1982) nicht unterstützt. Neuer Standard Extended Pascal (1992) hat bisher wenig Verbreitung gefunden.
. Am bekanntesten ist der Pascal-Compiler "Turbo Pascal" der Firma Borland, die die Nachfolgesprache Delphi auf den Markt brachte, die sich sehr an Pascal orientiert.

 

 

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
erste Version Mitte der fünfziger Jahre entwickelt (J. Backus),
Weiterentwicklung der Sprache über verschiedene Standards: FORTRAN 66, FORTRAN 77, Fortran 90, Fortran 95

 

 

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
für technische Aufgabenstellungen wenig geeignet
entstanden Ende der fünfziger Jahre (CODASYL Commitee),
Weiterentwicklung über verschiedene Standards: COBOL 74, COBOL 85, Object COBOL