Die Arbeit gibt einen Überblick über Programmiersprachen und ihre Entwicklung am Beispiel von Bubblesort.
Programmiersprachen sind nötig, um mit dem Computer kommunizieren zu können, was sich schon an der Existenz des Compilers zeigt. Doch um die Kommunikation zwischen Mensch und Maschine für den Menschen wenigstens ein bisschen einfacher zu gestalten, wurden Programmiersprachen wie Pascal, BASIC, C, C++, Delphi, Java und auch JavaScript entwickelt, und diese Entwicklung geht kontinuierlich weiter.
Inhaltsverzeichnis
Abbildungsverzeichnis
Abkürzungsverzeichnis
1 Einleitung
2 Die Programmiersprache BASIC
3 Die Programmiersprache C und C++
4 Zusammenfassung
Literaturverzeichnis
Anhang
Abbildungsverzeichnis
Abbildung 1: Der BASIC-Interpreter des C64
Abbildung 2: Bubblesort-Quellcode auf dem C64
Abbildung 3: Ausführung von Bubblesort auf dem C64
Abbildung 4: Bubblesort-Quellcode in der Programmiersprache C
Abbildung 5: Ausführung von Bubblesort auf dem PC
Abkürzungsverzeichnis
Abbildung in dieser Leseprobe nicht enthalten
1 Einleitung
Seit es Computer gibt, existieren auch Programmiersprachen, um die Kommunikation zwischen Mensch und Maschine zu ermöglichen. Die erste höhere Programmiersprache der Welt hieß Plankalkül und wurde vom deutschen Ingenieur und Computerpionier Konrad Zuse entwickelt, der auch als Erfinder der ersten programmierbaren Rechenmaschine gilt. Da sie aber erst im Jahr 1972 erstmals komplett veröffentlicht wurde, mussten sich die ersten Programmierer mit anderen Mitteln behelfen.1
Die Rechenmaschine Zuse Z4 galt im Jahr 1950 als einziger funktionsfähiger Computer in Kontinentaleuropa und konnte mit einer anschaulichen und handlichen Programmiersprache, die sich Assembler nannte, programmiert werden. Es gab ein reichhaltiges Verzeichnis an Befehlen und separate Tastaturen, um die Befehle und Zahlen einzugeben. Es war möglich, kurze Befehlsfolgen auszuführen und die Maschine als Tischrechner zu verwenden.2
Die erste höhere Programmiersprache war Fortran, die von John Backus entwickelt wurde und sich als Akronym von „Formula Translator“ ableitete, was die Sprache überaus passend beschrieb, zumal sie sich gut für mathematische Berechnungen in der Wissenschaft und Forschung eignete. Ausgereift war sie aber freilich nicht und ein großer Nachteil war, dass sie unstrukturiert war und Zeilennummern verwendete, die per GOTO-Befehl angesteuert wurden. Die Begriff „Spaghetticode“ für schlecht strukturieren Programmcode ist ein Relikt aus dieser Zeit. Aufgrund der Schwächen, welche die frühen Programmiersprachen hatten, wurde weiter an der Entwicklung von Programmiersprachen gearbeitet und es entstanden schon bald die Sprachen COBOL (Common Business Orientated Language) und ALGOL (Algorithmic Language).3
Der schweizer Informatiker Niklaus Wirth entwickelte die Programmiersprache Pascal, die auf ALGOL aufbaute und die späteren Programmiersprachen nachhaltig beeinflusste, da sie eine strukturierte Programmierung ohne Zeilennummern ermöglichte und ihre Syntax stark an die englische Grammatik anlehnte. Pascal erschien 1970 auf dem Supercomputer CDC 6600 und ging später auf dem PC in der modernen Programmiersprache Delphi auf.4
Weitere erfolgreiche Programmiersprachen sind BASIC (Beginners All Symbolic Instruction Code), C und C++ sowie Java, die in den folgenden Kapiteln beschrieben werden sollen.
2 Die Programmiersprache BASIC
BASIC war eine sehr leicht zu erlernende und universell einsetzbare Programmiersprache, die ihren Siegeszug auf den Heimcomputern antrat. Auf dem überaus populären C64 von Commodore, der in den 80er Jahren in etlichen Haushalten zu finden war, wurde der BASIC-Interpreter sofort nach dem Einschalten gestartet. Programmiert wurde C64-BASIC von Bill Gates und ein C64-Nutzer musste sich mit der Programmiersprache auseinandersetzen, um überhaupt ein Programm starten zu können, da zu diesem Zweck Befehle wie LOAD, LIST oder RUN eingegeben werden mussten.
Abbildung in dieser Leseprobe nicht enthalten
Wie in Abbildung 1 ersichtlich, verfügte der C64 seinem Namen entsprechend über einen Arbeitsspeicher von 64 Kbyte RAM (Random Access Memory), von dem 38.911 für BASIC-Programme nutzbar waren. Die Version Basic V2, die auf dem C64 standardmäßig installiert war, konnte diese Systemanforderungen erfüllen, wenngleich der Sprachkern natürlich sehr einfach konstruiert war und keine strukturierte Programmierung zuließ.
Abbildung in dieser Leseprobe nicht enthalten
Wie Abbildung 2 zeigt, konnte man trotz der begrenzten Speicherkapazität mit BASIC arbeiten und Programme schreiben, die mit dem Befehl RUN ausgeführt werden konnten. Um den Quellcode sehen zu können, musste der Befehl LIST eingegeben werden. Ein noch unvollständiges oder bereits fertig entwickeltes Programm konnte mit dem Befehl SAVE gespeichert und mit LOAD wieder in den Hauptspeicher geladen werden, sofern man über ein Kassetten- oder Diskettenlaufwerk verfügte.
Obiges Beispiel zeigt den Sortieralgorithmus Bubblesort, der mit dem vorhandenen Satz an Befehlen schon in BASIC realisiert werden konnte. Nach dem Programmstart wird der Nutzer zunächst gefragt, wie viele Zahlen sortiert werden sollen, und als Antwort kann eine Zahl zwischen 2 und 10 eingegeben werden. Der Befehl INT(RND(1)*49)+1 erzeugt anschließend ganzzahlige Zufallszahlen zwischen 1 und 49, die untereinander aufgelistet werden. In einem nächsten Schritt wird der Nutzer dann gefragt, ob die Sortierung der Zahlen gestartet werden soll. Die möglichen Antworten sind „j“ (ja), um die Sortierung zu starten, oder „n“ (nein), um das Programm ohne Sortierung zu beenden.
Abbildung in dieser Leseprobe nicht enthalten
Abbildung 3 zeigt, wie das Programm „Bubblesort“ auf dem C64 ausgeführt wird. In obigem Beispiel entschied sich der Nutzer für sechs Zahlen analog zu einer Lotto-Ziehung 6 aus 49. Der Zufallsgenerator erzeugte nacheinander die Zahlen 16, 15, 28, 18, 44 und 8. Der Nutzer startete anschließend den Algorithmus, der die gezogenen Zahlen in die richtige Reihenfolge sortierte, von der kleinsten Zahl 8 bis zur größten Zahl 44.
Zwar funktioniert das Programm, welches als Quellcode im Anhang beigefügt ist, an sich fehlerfrei, doch analog zu Fortran ist einer der großen Nachteile mit BASIC die Tatsache, dass mit Zeilennummern programmiert wird und deshalb keine strukturierte Programmierung möglich ist.
Um eine bestimmte Funktion, z. B. die Anzeige der Zahlen, die mit einer FOR-NEXT-Schleife und dem Befehl PRINT (Zeilen 110 bis 130) implementiert wird, aufrufen zu können, muss sowohl der GOSUB-Befehl (Zeile 150) als auch der RETURN-Befehl (Zeile 140) verwendet werden. Um die Funktion zu überspringen, ist der GOTO-Befehl (Zeile 100) erforderlich, da die Programmzeilen normalerweise nacheinander abgearbeitet werden, beginnend mit der kleinsten Zeile 0.
Die Verwendung von Zeilennummern in einer Programmiersprache wirkt sich auch nachteilig aus, wenn bereits programmierter Code um zusätzlichen Code erweitert werden soll. Möchte man beispielsweise die IF-THEN-Bedingungen (Zeile 170 und 180) um weitere Bedingungen ergänzen, hätte man noch die Zeilen 171 bis einschließlich 179 zur Verfügung, was die Anzahl an zusätzlichen Bedingungen auf neun begrenzen würde. Um noch mehr Platz zu schaffen, müsste man viel Aufwand betreiben und die ersten zwei Bedingungen in andere Zeilen schieben, was ebenfalls nur begrenzt möglich ist.
Ein weiterer Nachteil von BASIC auf dem C64 ist die begrenzte Kapazität im Hauptspeicher. Würde man beispielsweise zulassen, mehr als 10 Zufallszahlen zu erzeugen, gäbe es einen sog. BAD-SUBSCRIPT-ERROR in Zeile 80, da das Array ZAHL ohne vorherige Deklaration maximal 10 Elemente aufnehmen kann. Um 100 Zufallszahlen für die Sortierung erzeugen zu können, müsste am Anfang eine weitere Zeile eingefügt werden: DIM ZAHL (100). Unabhängig vom verfügbaren Speicherplatz ist 0 die minimale und 32.767 die maximale Anzahl an Elementen, die für ein Array in einer DIM-Anweisung deklariert werden kann.
3 Die Programmiersprache C und C++
Die Programmiersprache C wurde in den frühen 1970er Jahren vom US-amerikanischen Informatiker Dennis M. Ritchie entwickelt und ist seither stetig verbessert worden. Im Gegensatz zu BASIC konnte sich C langfristig behaupten, zumal die Systemkernel vieler Betriebssysteme in C programmiert wurden. Die Syntax sowie andere Eigenschaften der neueren Programmiersprachen C++, Java und JavaScript orientieren sich an C.5
Um in C programmieren zu können, benötigt man jedoch einen Compiler. Ein Compiler ist ein Programm, das den in C erzeugten Code in Maschinensprache umwandelt. Der erste C-Compiler wurde noch von Ritchie selbst entwickelt. Zu den bekanntesten Compilern gehört MinGW, der kostenlos im Internet verfügbar ist.6
Zwar kann man den Quellcode eines Programms auch in einem einfachen Texteditor schreiben, doch eine IDE (Integrated Development Environment) ist sehr zu empfehlen, da sie eine integrierte Entwicklungsumgebung und damit nützliche Werkzeuge bereitstellt, die dem Programmierer die Arbeit erheblich erleichtert. Zu den Programmen, die für diesen Zweck häufig eingesetzt werden, gehört Code::Blocks, das kostenlos erhältlich ist, über eine IDE verfügt, und sogar zusammen mit einem Compiler heruntergeladen werden kann.
Für C-Programme sind üblicherweise eine oder mehrere Include-Dateien erforderlich, die Deklarationen von Funktionen enthalten, die im späteren Programmtext benötigt werden. So werden für das Bubblesort-Programm, das einschließlich der Leerzeilen 80 Programmzeilen hat, die beiden Dateien <stdio.h> und <string.h> inkludiert.7
Abbildung in dieser Leseprobe nicht enthalten
Die Zeilennummern dienen jedoch nur dazu, dem Programmierer einen besseren Überblick zu verschaffen, denn wie in Abbildung 4 zu erkennen ist, erlaubt C und C++ eine strukturierte Programmierung. Das Bubblesort-Programm ist in Funktionen gegliedert, die je nach Bedarf aufgerufen werden und sogar in Bibliotheken für andere Programme zugänglich gemacht werden können. Neben der Main-Funktion, die in jedem C-Programm zu finden ist, nutzt Bubblesort die Funktionen abfrage_zahlen, zufallszahlen_generieren, zahlen_schreiben, abfrage_sortierung und bubblesort_sortierung. Letztere Funktion (Zeile 69 bis 80) beschreibt den eigentlichen Sortiervorgang, bei dem in zwei verschachtelten For-Schleifen immer zwei benachbarte Zahlen miteinander verglichen und vertauscht werden, falls die rechte Zahl kleiner ist als die linke. Nach dem ersten Durchlauf befindet sich die größte Zahl aus dem Array auf der rechten Seite, dann folgt die zweitgrößte Zahl auf der zweiten Position von rechts und so weiter, bis sich schließlich alle Zahlen auf der richtigen Position befinden.
Im Gegensatz zu BASIC müssen die Arrays in der Programmiersprache C immer deklariert werden, jedoch ist es möglich, ein Array auch ohne vorher festgelegte Größe zu definieren, wenn man zwei eckige Klammern ohne Inhalt verwendet: int zahl[];. Der Inhalt eines Arrays kann zu einem späteren Zeitpunkt festgelegt werden.
Abbildung in dieser Leseprobe nicht enthalten
Nach dem Programmstart wird der Nutzer gefragt, wie viele Zahlen sortiert werden sollen, und als Antwort kann wieder eine Zahl zwischen 2 und 10 eingegeben werden. Dank der inkludierten Datei <stdlib.h> kann die Funktion rand() genutzt werden, um die Zufallszahlen zu erzeugen. Mit der Funktion zahlen_schreiben werden die generierten Zufallszahlen dann untereinander angezeigt.
Abbildung 5 zeigt, wie Bubblesort auf dem PC ausgeführt wird. In obigem Beispiel entschied sich der Nutzer erneut für sechs Zahlen analog zu einer Lotto-Ziehung 6 aus 49, woraufhin der Zufallsgenerator nacheinander die Zahlen 14, 25, 21, 8, 23 und 32 erzeugte. Der Nutzer wurde dann gefragt, ob die Sortierung der Zahlen gestartet werden soll und antwortete mit „j“ (ja). Die Funktion bubblesort_sortierung wurde aufgerufen und der Algorithmus sortierte die gezogenen Zahlen in die richtige Reihenfolge, von der kleinsten Zahl 8 bis zur größten Zahl 32. Nach Beendigung des Programms wurde sogar die Zeit angezeigt, in der das Programm ausgeführt wurde (2,9 Sekunden).
[...]
1 Vgl. Hellige, Hans Dieter (Hrsg.), Geschichten der Informatik - Visionen, Paradigmen, Leitmotive. Heidelberg (Springer) 2004, S. 216
2 Vgl. Hellige, a.a.O., S. 182
3 Vgl. Hellige, a.a.O., S. 250
4 Vgl. Hellige, a.a.O., S. 251
5 Vgl. Klima, Robert; Selberherr, Siegfried, Programmieren in C. Wien (Springer) 2010, 3. Auflage, S. 33
6 Vgl. Klima, Robert; Selberherr, Siegfried, a.a.O., S. 22
7 Vgl. Klima, Robert; Selberherr, Siegfried, a.a.O., S. 26
- Citation du texte
- Markus Giesecke (Auteur), 2020, Die Programmiersprachen BASIC und C UND C++, Munich, GRIN Verlag, https://www.grin.com/document/888986
-
Téléchargez vos propres textes! Gagnez de l'argent et un iPhone X. -
Téléchargez vos propres textes! Gagnez de l'argent et un iPhone X. -
Téléchargez vos propres textes! Gagnez de l'argent et un iPhone X. -
Téléchargez vos propres textes! Gagnez de l'argent et un iPhone X. -
Téléchargez vos propres textes! Gagnez de l'argent et un iPhone X. -
Téléchargez vos propres textes! Gagnez de l'argent et un iPhone X.