(Source/Info)
Popularität von Programmiersprachen – C++ stabil
(Quelle: http://pypl.github.io/PYPL.html)
Was ist Programmieren ?
Ein Programm ist eine Reihen von Anweisungen, die bestimmen wie eine Datenverarbeitung
abläuft. Dazu sind nur wenige grundlegende Funktionen§ nötig, die im Prinzip
allen Programmiersprachen gemeinsam sind:
-
Input: Daten von Tastatur, File, Netzwerk, Sensor, ...
-
Output: Daten auf Bildschirm, Datei, Drucker, Steuergerät, ...
-
Operation: mathematischer Ausdruck, Zuweisung, ...
-
Testen und Verzweigen: Überprüfen von Bedingungen, unterschiedliche
Abläufe
-
Schleifen: Wiederholte Ausführung bestimmter Abschnitte
C/C++: Main Features
- C ist höhere, portable Programmiersprache.
Ursprünglich (70er) entwickelt als Alternative zu Assembler für hardware/systemnahe
Programmierung.
- C++ ist objekt-orientierte Erweiterung,
erzwingt
strong-typing und Prototypes.
- C/C++ ist Compiler–Sprache, wie Fortran, Pascal, etc.
D.h. Quellcode wird zunächst
kompiliert,
dann werden
externe libraries ge–linkt.
Im Gegensatz zu Interpreter–Sprachen oder Skriptsprachen wie
-
Basic, Java
-
Perl, Python, php, Shells
Pros:
- Riesiger Funktionsumfang, alles möglich von kleinen Hardware–Treibern mit wenigen
Zeilen bis komplexen S/W Projekten mit vielen Millionen Zeilen.
- Direktes Ansprechen der Hardware mit Pointern
- Volle objektorientierte Funktionalität, einschliesslich Templates
- Gute Performance
- Detaillierte Kontrolle als Programmierer über Programmablauf, Speichermanagement, etc.
- Vielzahl von Tools und Hilfslibraries erhältlich
Cons: Zu viel Features, zu viele Freiheiten
- Code oft unleserlich und chaotisch
- Schwer zu pflegen
- Steile und lange Lernkurve für vollen Überblick
- Hilfspakete
(I/O, Networking, Graphik, Databases, ...) nicht in
Standarddistribution integriert.
C++ vermutlich mächtigste aber auch komplexeste Programmiersprache
C++ Variante für diesen Kurs
- C++ hat lange Historie und viele Varianten
- In den letzten ca 10 Jahren viele Modernisierungen – C++-11, C++-14, C++-17, C++-20, ...
- In diesem Kurs
Fokus auf moderne Konzepte
- Klassische Konstrukte wie
Pointer, Arrays, new/delete, C–I/O, ... nur im Anhang