Programmiersprache Pascal

Mir sind Sprachen lieber, die von Anfang an die Gewähr bieten:
Programme werden als geistiges Eigentum geschützt, weil sie nur der Autor versteht.

C.Isab, Software-Archäologe

Überblick über Programmiersprachen

Programmiersprache:
Sprache zur Formulierung von Rechenvorschriften, d.h. von Datenstrukturen und Algorithmen, die von einem Computer ausgeführt werden können.
Häufig werden heute 5 Generationen von Programmiersprachen unterschieden:

1. Generation: Maschinensprachen
Befehle werden direkt in einer 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 übertragbar. Die direkte Programmierung in einer Maschinensprache wird heute kaum noch verwendet.

Einige Programmiersysteme für höhere Programmiersprachen gestatten es, Maschinenbefehle in den Quelltext zu integrieren. Die Anwendung beschränkt sich dann auf solche Fälle, in denen es aus funktionalen oder Effektivitätsgründen unumgänglich oder nützlich ist, maschinennah zu programmieren.

2. Generation: Assembler
Anstelle von Zahlencodes wird mit Hilfe von symbolischen Bezeichnern codiert. Eine Assembleranweisung wird in genau einen Maschinenbefehl umgesetzt. Auch Assemblerprogramme sind deshalb im allgemeinen an einen bestimmten Prozessortyp gebunden.
Makroassembler gestatten die Bildung von parametrisierbaren Befehlsgruppen. Eine Makroanweisung wird im allgemeinen in mehr als einen Maschinenbefehl umgesetzt.

Der Anteil der Assemblerprogrammierung ist im Sinken. Der Möglichkeit der Erstellung effektiver Programme steht die erschwerte Wartbarkeit von Assemblerprogrammen gegenüber. Maschinennahe Programmierung - die Domäne von Assembler - kann heute überwiegend durch höhere Programmiersprachen abgedeckt werden. Hierfür kommt z.B. C in Frage, auf dem PC zum Teil auch Turbo Pascal.

Einige Programmiersysteme für höhere Programmiersprachen gestatten es, Assemblerbefehle in den Quelltext zu integrieren. Die Anwendung kann sich dann auf die Situationen beschränken, in denen es aus funktionalen oder Effektivitätsgründen notwendig oder nützlich ist, maschinennah zu programmieren.

3. Generation: höhere Programmiersprachen (high level language)
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, MODULA-2, PL1, C, ADA, BASIC, SIMULA.

4. Generation: Fourth Generation Language (4GL)
Sprachen der 4. Generation sind anwendungsbezogen (applikative Sprachen). Sie stellen i.a. die wichtigsten Gestaltungsmittel von Sprachen der 3. Generation zur Verfügung, zusätzlich jedoch Sprachmittel zur Auslösung von relativ komplexen, anwendungsbezogenen Operationen, beispielsweise zum Zugriff auf Datenbanken und zur Gestaltung von Benutzeroberflächen.

Sprachen der 4. Generation gehören häufig zum Umfeld von Datenbanksystemen. Eine relativ weit verbreitete Sprache dieser Art ist z.B. NATURAL.

5. Generation: (Very High Level Language, VHLL)
Sprachen der 5.Generation gestatten das Beschreiben von Sachverhalten, von Problemen. Sie kommen vor allem im Bereich der KI (künstliche Intelligenz) zum Einsatz. Die Wahl des Problemlösungsweges kann (entsprechend dem Sprachkonzept) dem jeweiligen System (weitgehend) überlassen werden.

Bekanntestes Beispiel für eine Sprache der 5. Generation ist PROLOG.

Sprachen der 1. Generation sind zwangsläufig hardwareabhängig. Auch Sprachen der 2. Generation sind stark hardwarebezogen. Sprachen beider Generationen werden daher auch als maschinenorientierte Sprachen bezeichnet.
Mit den Sprachen der 3. bis 5. Generation wird eine weitgehende Hardwareunabhängigkeit angestrebt. Die Darstellung der Problemlösung (3. Generation) bzw. des Problems selbst (4. und vor allem 5. Generation) rückt stärker in den Mittelpunkt. Diese Sprachen lassen sich auch als problemorientierte Sprachen kennzeichnen.

Das folgende Schema skizziert aus subjektiver Sicht die wichtigsten Programmiersprachen in ihren Verwandschaftsverhältnissen. Die zeitliche Abfolge der Entwicklung wird angedeutet.
Achtung:
Die Verwandschaftsverhältnisse sind in sich sehr verschieden und keineswegs komplett erfaßt.

			   +------------------+
			   | Maschinensprache |
			   +------------------+
				    |
				    v
			     +-------------+
			     |  Assembler  |
			     +-------------+
				    |
	    +-----------------------+--------------+---------------+
	    |                       |              |               |
	    |                       |              v               |
	    |                       |        +-------------+       |
	    |                       |        |  FORTRAN    |       |
	    V                       V        +-------------+       V
     +-------------+          +-------------+   |        |  +-------------+
     |  ALGOL 60   |          |    LISP     |   |        |  |    COBOL    |
     +-------------+          +-------------+   |        |  +-------------+
	    |                                   |        |      |
	 +--+-------------+---------------+-----+--+---+ |      |
	 |                |               |     |  |   | |      |
	 v                v               v     v  |   v v      v
 +-------------+  +-------------+  +-------------+ | +-------------+
 |  SIMULA 67  |  |  ALGOL 68   |  |    BASIC    | | |    PL/1     |
 +-------------+  +-------------+  +-------------+ | +-------------+
	 |                |                        |
         |                +---------------+        |
	 |                v               V        v
	 |         +-------------+     +-------------+    +-------------+
	 |         |      C      |     |   Pascal    |    |    Prolog   |
	 |         +-------------+     +-------------+    +-------------+
	 |            |      |  |            |
	 |            |      |  +------------+-----+
	 v            |      v  v                  v
+--------------+      |  +-------------+       +-------------+
| Smalltalk-80 |      |  |     Ada     |       |   Modula-2  |
+--------------+      |  +-------------+       +-------------+
	 |            |                          |         |
	 +----------+ |                          |         |
	 v          v v                          v         v
+-------------+   +-------------+      +-------------+   +-------------+
|    Eiffel   |   |     C++     |      |   Oberon    |   |   Modula-3  |
+-------------+   +-------------+      +-------------+   +-------------+
		      |
		      v
		  +-------------+
		  |    Java     |
		  +-------------+
Gegenwärtig spielen vor allem die folgenden Programmiersprachen eine Rolle, die alle als prozedural einzustufen sind (die Reihenfolge ist alphabetisch):
Ada
Ergebnis einer Ausschreibung des USA-Verteidigungsministeriums in der zweiten Hälfte der siebziger Jahre
gute Standardisierung (1979, 1983), neuer Standard Ada 95
als universelle Programmiersprache konzipiert, sehr großer Sprachumfang
BASIC ( Beginners All-purpose Symbolic Instruction Code )
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 sehr große Leistungsbreite (strukturierte Programmierung, Grafik, Datenbankzugriff, Netzzugriffe), gewährleisten jedoch keine Portabilität
C
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
starke Verbreitung 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 im fortgeschrittenen Stadium
drängt teilweise C zurück
COBOL ( Common Business Oriented Language )
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
FORTRAN ( Formula Translator )
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
Pascal
universelle Programmiersprache
Ende der sechziger, Anfang der siebziger Jahre speziell für Ausbildungszwecke entwickelt (N. Wirth)
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 (1983) nicht unterstützt. Neuer Standard Extended Pascal (1991) hat bisher wenig Verbreitung gefunden.
PL1 oder PL/I (Programming Language 1)
Mitte der sechziger Jahre bei der IBM entwickelte universelle Programmiersprache
vereinigt Elemente von ALGOL-60, COBOL und Fortran, sehr großer Sprachumfang
spielt im Mainframe-Bereich eine Rolle, hat über diesen Sektor hinaus jedoch kaum Bedeutung erlangt
Siehe auch:

P. Böhme, 02.09.1996