Überblick über die historische Entwicklung und die Klassierung von Programmiersprachen in Generationen
Inhaltsverzeichnis
1. ALLGEMEINE INFORMATIONEN
1.1. Definition der Programmiersprache
1.2. Einführung
1.3. Schematischer Ablauf eines Programmiervorgangs
2. HISTORISCHE ENTWICKLUNG DER PROGRAMMIERSPRACHEN
2.1. Einführung
2.2. Die erste Generation: Maschinensprachen
2.3. Die zweite Generation: maschinenorientierte Sprachen
2.4. Die dritte Generation: höhere Programmiersprachen
2.4.1. Einführung
2.4.2. ADA
2.4.3. ALGOL
2.4.4. BASIC
2.4.5. C
2.4.6. COBOL
2.4.7. FORTRAN
2.4.8. PASCAL
2.5. Die vierte Generation: nicht-prozedurale Sprachen
3. KLASSIERUNG DER PROGRAMMIERSPRACHEN
3.1. Einführung
3.2. Die Unterscheidung in objektorientierte und wissensbasierte Sprachen
3.3. Die Unterscheidung in imperative, funktionale und prädikative Sprachen
4. LITERATURVERZEICHNIS
1. Allgemeine Informationen
1.1. Definition der Programmiersprache
Eine Programmiersprache ist eine zum Formulieren von Verarbeitungsvorschriften für Computer geschaffene Sprache. Sie ist damit eine Schnittstelle zwischen dem EDV-System und dem Anwender.[1]
1.2. Einführung
Der Computer versteht im Grunde nur eine Sprache, die aus einer Folge von Nullen und Einsen besteht, die Maschinensprache (vgl. Kap. 2.2). Das ist darauf zurückzu- führen, dass er beim heutigen Stand der Technik nur unterscheidet zwischen Strom und Nicht-Strom (bzw. an/aus, offen/geschlossen, magnetisiert/nicht magnetisiert). Es ergibt sich also eine kleinstmögliche Informationseinheit (0 oder 1), die Bit (binary digit) genannt wird.
Zur Bildung von Zahlen, Buchstaben und Sonderzeichen benötigt man mehrere Bits. Diesen verschiedenen Bitkombinationen werden dann die einzelnen Zeichen zu- geordnet, man macht eine sogenannte Codierung der Zeichen (z.B. ASCII: American Standard Code for Information Interchange). Die ASCII-Codes belegen 8 Bits, es er- gibt sich eine neue Informationseinheit, genannt ein Byte.
Für einen Benutzer eines Computers wäre es nun sehr umständlich, seine Probleme in der Maschinensprache einzugeben. Deshalb erfand man Abkürzungen - die As- semblersprachen (vgl. Kap. 2.3.) - für eine leichtere Problemformulierung. Durch ein Übersetzungsprogramm (Assemblierer) werden diese Abkürzungen wieder in die Maschinensprache umgesetzt.
Um die Formulierung der Anwenderprobleme noch einfacher zu machen, schuf man später höhere Programmiersprachen (vgl. Kap. 2.4.), die meistens auf ein spezielles Gebiet zugeschnitten sind. Auch für diese Programmiersprachen braucht der Rech- ner ein entsprechendes Übersetzungsprogramm.
Ein wesentlicher Unterschied zwischen Programmiersprachen besteht darin, ob ein erstelltes Programm compiliert oder nur interpretiert wird. Im ersten Fall erhält man nach dem Compilieren den direkt ablaufbaren Maschinencode. Das Programm wird erst in einem weiteren Schritt gestartet. Im zweiten Fall wird jede Programmzeile ein- zeln zuerst übersetzt und dann sogleich ausgeführt. Die Interpreter-Variante ist des- wegen wohl praktisch, aber langsamer als die Compiler-Variante.
Es gibt mehrere hundert in der Literatur dokumentierte Programmiersprachen.[2]
1.3. Schematischer Ablauf eines Programmiervorgangs
Abbildung in dieser Leseprobe nicht enthalten
Abbildung 1: Schematischer Ablauf eines Programmiervorgangs
2. Historische Entwicklung der Programmiersprachen
2.1. Einführung
Die nachfolgende Gliederung der Programmiersprachen in Generationen stellt einer- seits eine mögliche Klassierung dar, weil sich jede Generation qualitativ und struktu- rell von der vorhergehenden abhebt. Andererseits zeigt der Ablauf in Generationen auch zumeist die historische Entwicklung auf. Vertieft wird darauf in den einzelnen Abschnitten eingegangen.
Dass die gleichzeitige Klassierung nach historischen und qualitativen Merkmalen be- rechtigt ist, zeigt sich auch daran, dass durch die fortschreitende historische Entwick- lung niemals eine Generation durch eine nachfolgende obsolet wurde. Je nach An- wendungsgebiet variiert der Gebrauch.
2.2. Die erste Generation: Maschinensprachen
Wie bereits in Kapitel 1.2. erwähnt, versteht jeder Computer unmittelbar nur eine be- stimmte, für sein System geschaffene Sprache. Diese Sprache ist binär verschlüsselt und besteht demnach nur aus Folgen von "1" und "0". Nur in dieser Form ausged- rückt können Algorithmen vom Rechner direkt umgesetzt werden.
Beispiel: Der Befehl "Addieren" für den Prozessor INTEL 80486 lautet: "10000110".[3]
Der immense Vorteil der Maschinensprache ist ihre Schnelligkeit in der Verarbeitung und der geringe Speicherbedarf. Jedoch überwiegen die Nachteile offensichtlich:
- Der Maschinencode ist für einen Menschen praktisch unverständlich, äusserst mühsam und zeitaufwendig zu programmieren und einmal geschriebene Prog- ramme können faktisch nicht mehr ausgebaut werden.
- Aus diesen Gründen entstehen hohe Fehlerquoten.
- Programme in Maschinensprache können nur auf einem System angewendet werden.
Dennoch erfolgte bis Mitte der fünfziger Jahre die Programmierung der Computer be- inahe ausschliesslich in Maschinensprache. Heute ist dies dank sehr effektiver Com- piler (vgl. Kap. 1.2.) zum Glück nicht mehr erforderlich.[4]
2.3. Die zweite Generation: maschinenorientierte Sprachen
Die maschinenorientierten Sprachen oder Assembler sind eine direkte Weiterent- wicklung der Maschinensprachen. Statt in Binärcodes werden hier einzelne Befehle in verständlichen Worten ausgedrückt.
Beispiel: Der in Kapitel 2.2. genannte Befehl "Addieren" lautet in Assembler "ADD M".[5]
Dennoch bestehen auch bei der Assemblersprache die Nachteile der maschinen- orientierten Sprachen (Unübersichtlichkeit, Fehlerquote, Systemgebundenheit etc.), lediglich die Verständlichkeit für den Menschen ist besser. Assembler werden heute punktuell in Programmen eingesetzt, wo ihr grosser Vorteil, die hohe Geschwindig- keit, benötigt wird. Auch der Speicherbedarf bleibt gering.
2.4. Die dritte Generation: höhere Programmiersprachen
2.4.1. Einführung
Man bezeichnet die höheren Programmiersprachen auch als problemorientierte Sprachen. Höhere Programmiersprachen bieten ein hervorragendes Ausdrucksmittel für den Programmierer. Befehle sind meistens englische Wörter oder Ableitungen davon, so dass die Anweisungen an die Maschine auch für Menschen relativ einfach nachvoll- ziehbar sind.
Beispiele: PERFORM UNTIL auswahl = "0" (COBOL), PRINT "Hello" (BASIC)
Die dritte Generation der Programmiersprachen ist erstmals systemunabhängig, ob- wohl es einzelne Dialekte gibt, die versuchen, die Kapazität eines Rechnermodells besser auszunutzen.
[...]
[1] vgl. Becker, Mario, Haberfellner, Reinhard, Liebetrau, Georg, EDV-Wissen für Anwender, Zürich, 1997, S. 43
[2] Weber, Wolfgang J., Hainer, Karl, Programmiersprachen für Mikrocomputer, Stuttgart, 1990
[3] Becker, Mario, Haberfellner Reinhard, Liebetrau, Georg, EDV-Wissen für Anwender, Zürich, 1997, S. 44
[4] vgl. Breuer, Hans, dtv-Atlas zur Informatik, München, 1995, S. 127
[5] Becker, Mario, Haberfellner Reinhard, Liebetrau, Georg, EDV-Wissen für Anwender, Zürich, 1997, S. 44
-
Laden Sie Ihre eigenen Arbeiten hoch! Geld verdienen und iPhone X gewinnen. -
Laden Sie Ihre eigenen Arbeiten hoch! Geld verdienen und iPhone X gewinnen. -
Laden Sie Ihre eigenen Arbeiten hoch! Geld verdienen und iPhone X gewinnen. -
Laden Sie Ihre eigenen Arbeiten hoch! Geld verdienen und iPhone X gewinnen. -
Laden Sie Ihre eigenen Arbeiten hoch! Geld verdienen und iPhone X gewinnen.