Programmiersprachen werden in 2 große Hauptgruppen eingeteilt (siehe Abbildung unten).
Die sogenannten Hochsprachen und die Assambler-Sprachen. Assemblersprachen werden mittels eines Linkers in Maschinensprache übersetzt. Assembelrpragrammierung ist heute wieder aktuell geworden wie man am Beispiel der Pixel-Shader und Vertex-Shader von Nvidea und ATI feststellen kann. Diese Shader werden mittels Assemblercode programmiert und bieten den vollen Zugriff auf die Funktionalität der "Graphical Processing Unit" (GPU) der Graphikkarten. Damit ist nun Assembler-Programmierung plötzlich wieder seht aktuell. Es wird aber auch hier wieder zu einer Entwicklung einer einheitlichen Shade-Language kommen, welche die Programmierung erleichtern wird. Diese kleine Parabel schließt sich, durch den Verweis auf die Entwicklung weg von der Assemblerprogrammierung hin zu den Höheren Programmiersprachen, welchen nun im Detail besprochen werden.
Klassifikation
Die Hochsprachen können wieder von der Funktionalität in 3 Gruppen unterteilt werden, wobei zwei davon in der obigen Graphik angeführt sind. Compiler Interpreter Virtual Maschine
Der Sourcecode wird zur Compiletime in Maschinesprache übersetzt. Die Implementierung des Compilers und der entstandene Maschinecode sind plattformabhängig. Beispiel: C,C++, FORTRAN, ALGOL,etc. Interpeter: Der Sourcecode wird Zeilenweise zur Runtime vom Interpreter interpretiert. Der Interpreter ist zum ausführen des Programms notwendig. Die Implementierung des Interpreters ist plattformabhängig. Beispiel: PERL, BASIC,etc. Der Sourcecode wird zur Compiletime in Bytecode übersetzt. Dieser Bytecode ist ein Zwischenschritt zwischen Sourcecode und Maschiencode. Der Bytecode wird dann zur Runtime von der Virtual Maschine(VM) in Maschinencode umgewandelt. Der Bytecode ist im allgemeine plattformunabhängig. Die Implementierung der VM ist plattformabhängig. Es kann eine Einteilung in prozedurale und nicht-prozedurale Programmiersprache getroffen werden ( siehe Abbildung unten). Des Weiteren ist eine Unterteilung der Nicht- prozeduralen Sprachen folgendermaßen möglich.
- Funktionale Sprachen
- Deklarative Sprachen
- Objektorientierte Sprachen
Nun werden einzelne, besonders wichtige und einflussreiche Programmiersprachen in einer geschichtlichen Abfolge vorgestellt. Es wird auch auf die gegenseitige Einflussnahme eingegangen.
Diese exemplarischen Programmiersprachen sind:
FORTRAN (FORmula TRANslation)
Wurde entwickelt von IBM. Enthält floating point Zahlen und Arrays „Fortran 1“ wurde im April 1957 released. 1962 wurde FORTRAN IV herausgebracht. In der wissenschaftilchen Gemeinde war Fortran bis 1962 die beleibteste und am weitesten verbreitete Programmiersprache.
1977 wurde FORTRAN77 released wobei String-Verwaltung und IF-THEN-ELSE statements neu hinzu kamen. FORTRAN90 beinhaltete dann dynamische Arrays, Pointer und array-Operationen.
FORTRAN ist eine Compilersprache und erzeugt ausführbaren Code.
Der große Vorteil von FORTRAN kam auch mit seiner weiten Verbreitung. Es entstanden viele wichtige wissenschaftliche Bibliotheken und gerade die Mathematiker verwenden Fortran auch heute noch, weil eben diese exakten Bibliotheken vorhanden sind.
Auf der TU Wien wird FORTRAN90 auch heute noch als Pflichtveranstaltung im 1.Abschitt des Studiums der "Technischen Mathematik E860" vorgeschrieben. >[lzk]
"Lehrziel: EDV-Grundkenntnisse: mit einem UNIX-System kompetent umgehen können: Beherrschung der Programmiersprache FORTRAN 90."
Auf den >[webpages] zur VU kann man folgendes nachlesen:
"Lehrinhalte: Einführung in die insbesondere numerisch orientierte EDV. Das zentrale Thema ist Fortran, die im Bereich der Numerischen Datenverarbeitung bedeutendste Programmiersprache. Die Vorlesung bietet Einführung in den aktuellen Sprachstandard Fortran 90/95. [...] Als Ergänzung wird am Ende des Semesters auf weitere Themen wie Formelmanipulationssysteme eingegangen (Ausblick auf die weitere EDV-orientierte Ausbildung im 2. Studienjahr)[...]"
Wegen der Zuverlässigkeit dieser Module wurden auch Konverter von Fortran nach C/C++ geschrieben.
Verwandtschaft zu späteren Programmiersprachen:
- SNOBOL
- BASIC
- teilweise ALGOL 58
ALGOL
Wurde 1958 wurde ALGOL als universeller Standard und allgemeinere Form von FORTRAN 1 definiert. ALGOL sollte eine universale Programmiersprache für alle Maschinen und alle Landessprachen sein. Der Begriff Plattform-unabhängig war geboren!
ALGOL60 hatte bereits Blockstrukturen für Unterroutinen und Werte Übergabe mittels "pass by reference" und "pass by value" implementiert. Wegen des starken Einsatzes von FORTRAN wurde ALGOL nicht so schnell beleibt und verbreitet wie sein noch größer Gegenspieler.
ALGOL ist didaktisch für Studenten noch heute sehr wichtig, da anhand dieser Sprache Strukturen und Konzepte von Compilern erlernt und begriffen werden können. ALGOL stellte auch viel neue Konzepte vor und wurde wegen der Publikation von Algorithmen in ALGOL sehr wichtig.
COBOL:
Ab 1964 beginnt COBOL seines Siegeszug im Bereich der Wirtschaftlichen Applikationen.
Die Konzepte von COBOL sind:
- maschinen unabhängige Datenbeschreibungen
- rekursive Datendefinitionen
- mächtige IF-THEN-ELSE Konstrukte
- Spezifikation eine Makrosprache
- Strikte Trennung von prozeduralen Code und der Datenbeschreibung.
- sinnvolle Metasprache
- halbautomatische Segmentierung
- Eine maschinen unabhängige Sprache basierend auf echter Hardware
Punkt 2 wurde aus dem Konzept von LISP übernommen, die als erste Rekursionene verwendeten. Punkt 3 stellt eine Erweiterung von FORTRAN dar. Punkt 4 bringt das neue Konzept der Makrosprache ein. Punkt 5 entspricht eine Vorstufe zu dem späteren "Objekt Orientierten Paradigma" der Trennung von Daten und Programmcode.
Cobol wird heute bei neune Anlagen nicht mehr verwendet. Es sind aber noch eine große Anzahl von Mainframes und Großrechnern im Einsatz, die nach wie vor mit COBOL programmiert sind. Änderungsarbeiten müssen so in COBOL gemacht werden. Diese Großrechner sind noch bei Banken so wie bei Versicherungen im Einsatz.
Zum Beispiel verwendet die "Wiener Städtische" >[wienerstädtische] auf ihren Großrechner noch heute COBOL und APL2.
C
1970 wurde auch eine Neue Programmiersprache herausgebracht. Sie hatte als Ahnväter ALGOL 68 und CPL bzw. B.
|