Title: Nachlese: Einführung in die Programmierung
Course: PAC++ SchülerInnen > Section: Willkommen in ASCII

Einführung

In diesem Modul werden wir uns mit der Geschichte und den Anwendungen von Programmiersprachen beschäftigen. Wir werden lernen, Konzepte zu unterscheiden und erfahren, wo man diese Programmiersprachen am besten anwendet. Auf geht’s!

Bemerkung: Du kannst links oben mit einem Klick auf Einstellungen/Buch-Administration/Buch drucken die gesamte Nachlese ausdrucken.

Motivation

Wir können Programme erschaffen, die für uns Aufgaben übernehmen und uns so das Leben erleichtern. Verschiedene Programmiersprachen werden in vielen Anwendungen eingesetzt. Hier ein paar Beispiele:

- Jede App in deinem Handy ist programmiert.
- Jede Software auf deinem Computer ist programmiert.
- Die Webseite, auf der du dich befindest, ist programmiert.
- Der Computer, an dem du arbeitest, ist programmiert.
- Alle neuen Autos sind programmiert.
- Flugzeuge sind sowieso programmiert.
- Fast überall steckt Software drinnen, die unser Leben einfacher und schneller macht.

Damit ein Programm eine Aufgabe übernehmen kann, müssen wir ihm Information, man nennt sie "Input", zur Verfügung stellen. So kann das Programm neue Informationen, man nennt sie "Output", erstellen.

Geschichte

Jetzt fragst du dich sicherlich, wie das Ganze funktioniert und wer das Programmieren überhaupt erfunden hat. Um diese Frage zu beantworten, begeben wir uns nun auf eine Zeitreise in die Vergangenheit - genauer in das Jahr 1950.

In den 1950er Jahren wurden in den USA drei höhere Programmiersprachen entwickelt. Diese waren FORTRAN im Jahre 1954, LISP im Jahre 1959 und COBOL von Grace Hopper im Jahre 1959.

In den 1960er und 1970er Jahren wurden neue Sprachen entwickelt -  die Programmiersprachen C und BASIC wurden entworfen. In diesen und den folgenden Jahren wurde der Begriff der objektorientierten Programmierung als neues Konzept vorgestellt.

Was das genau ist, werden wir uns später noch detailierter ansehen. Nur soviel sei gesagt: Mitte der 1980er Jahre begann objektorientierte Programmierung für viele ProgrammiererInnen und AnwenderInnen interessant zu werden - hauptsächlich durch die Programmiersprache C++, die eine Erweiterung der Programmiersprache C war und von Bjarne Stroustrup vorgestellt wurde.

Und so kam es, dass bisherige alte Programmiersprachen wie zum Beispiel LISP eine objektorientierte Erweiterung erhielten.

Seitdem finden sich immer wieder neue Konzepte von Programmiersprachen, zum Beispiel JAVA, SWIFT oder C#.

Als das Internet immer wichtiger wurde, musste man sich auch dieser Herausforderung stellen und allen voran eine Sprache entwickeln, mit der man das Aussehen "des Internets" leicht gestalten konnte. Und so kam es dazu, dass HTML - die Hypertext Markup Language - entwickelt wurde.

Anwendungen

Mit Programmiersprachen können wir verschiedene Anwendungen gestalten. Viele Aufgaben, besonders wirtschaftliche und mechanische, sind damit einfacher bewältigbar. Bei vielen Berufen, besonders in der Wissenschaft, wird das Beherrschen von Programmiersprachen erwartet.

Für uns ist nun nur eine Programmiersprache wirklich wichtig und von Bedeutung. Das ist die Programmiersprache C++.

Objekt vs. Prozess

Wenn wir von Programmiersprachen sprechen, können wir diese in zwei große Gruppen unterteilen: prozedurale und objektorientierte Programmiersprachen.

Eine prozedurale Programmiersprache orientiert sich immer an der Arbeitsweise von Computern. Schritt für Schritt wird jede Zeile abgearbeitet und ausgeführt.

Hauptaufgabe einer objektorientierten Programmiersprache ist es, uns das Programmieren zu vereinfachen. Hier versuchen wir Modelle aus der Realität und Wirklichkeit umzusetzen.

Sehen wir uns das an einem Beispiel an:

Beispiel Allgemein

Stellen wir uns vor, wir möchten eine mehrtägige Autoreise machen und benötigen hierfür ein Auto - einen Audi. Dieses Auto verfügt über etliche Eigenschaften wie zum Beispiel fahren, bremsen, nach links lenken, nach rechts lenken, Gang wechseln, rückwärtsfahren usw.

Beispiel Prozedurale Programmiersprache

Würden wir das Auto in einer prozeduralen Programmiersprache beschreiben, müssten wir ganz genau wissen, wann das Auto nach links lenken, nach rechts lenken, den Gang wechseln, fahren und bremsen müsste, damit wir ein passendes Kochrezept und somit die Anweisungen fürs richtige Fahren verfassen könnten.

In der Wirklichkeit ist es sehr unwahrscheinlich, dass wir genau wissen, in welchen Momenten wir z. B. bremsen müssen, weil wir nicht für jeden einzelnen möglich zutreffenden Fall ein Kochrezept schreiben können. Es gibt ja auch noch andere Autos, die auf der Straße fahren, oder Ampeln, die vielleicht einmal ausfallen.

Und hier kommt uns die objektorientierte Programmiersprache zugute!

Beispiel Objektorientierte Programmiersprache

In der Welt der objektorientierten Programmiersprache müssen wir nicht in die Zukunft blicken, um unser Kochrezept zu verfassen. Wir schreiben einfach verschiedene Fälle auf, die dann im entsprechenden Momenten aufgerufen werden können, damit wir schließlich unser Reiseziel erreichen. Wie kann man sich das nun genau vorstellen?

Wir versuchen, die Realität in möglichst guten 1:1 Modellen zu erfassen, d. h. wir beschreiben die grundlegenden Eigenschaften eines Autos und definieren so, was ein Auto alles kann. Wenn wir dann unsere Reise starten, sagen wir einfach, dass unser Audi ein Auto ist. Sobald wir das definiert haben, besitzt unser Audi alle Eigenschaften, die ein Auto besitzt. So können wir jederzeit bremsen, nach links lenken, nach rechts lenken oder den Gang wechseln und damit dynamisch mit und in der Umwelt agieren, ohne einen genauen zukünftigen Ablauf kennen zu müssen.

Nun kennen wir den Unterschied zwischen der prozeduralen und der objektorientierten Programmiersprache. Aber wie programmiert man das? Und was benötigen wir, damit wir ein Programm schreiben können?

Um objektorientiert zu programmieren, müssen wir vorher verstehen, wie Programme an der Basis funktionieren. Wir lernen in diesem Kurs Programmierstrukturen für das prozeduale Programmieren, da eine objektorientierte Sprache immer aus kleinen Prozessen besteht. Später können die Elemente "Schleife" oder "Anweisung" beim objektorientierten Programmieren umgesetzt werden.

Ausblick

In diesem Abschnitt haben wir etwas über die Geschichte der Programmiersprachen erfahren und den Unterschied zwischen einer prozeduralen und einer objektorientierten Programmiersprache kennengelernt.

Im nächsten Video steigen wir tiefer in die Materie ein und stellen uns die Fragen “Was ist eigentlich ein Algorithmus?” und “Was benötigen wir, um ein Programm zu schreiben?”