Die Programmiersprache/n C/C++

Die Programmiersprache C/C++

Zielgruppe sind StudentInnen und ambitionierte Informatik-Amateure

Grundkenntnisse der Informatik werden vorausgesetzt, Kenntnisse einer beliebigen Programmiersprache sind hilfreich.



Interpreter und Compiler


Interpreter-Sprache wie z.B. PHP

Compiler-Sprache wie z.B. C/C++



Der Compiler-Prozess ist komplizierter, erfordert mehr Resourcen, und kostet wesentlich mehr Zeit und Geld:

Der Quelltext (hier *.cpp) wird von einem Compiler-Programm in Maschinensprache übersetzt. Als Zwischen-Produkte werden dabei Objekt-Dateien erzeugt.

Die Objekt-Dateien werden von einem Linker-Programm mit den Bibliotheken des jeweiligen Betriebssystems verknüpft. Als End-Produkte werden ausführbare Programme erzeugt (z.B. *.exe), jedoch nicht ausgeführt.

Das Diagramm zeigt, dass der Compiler-Prozess für jedes Betriebssystem individuell ausgeführt werden muss. Man muss für jedes System und sogar für die meisten System-Versionen eigene (ausführbare) Programme herstellen, testen, verwalten und verteilen.

Zur Ausführung (run) wird das fertige Programm gestartet und sofort ausgeführt.
Man verliert keine Zeit, weil das Programm bereits fertig in Maschinensprache vorliegt.
Compiler-Programme sind daher aufwändiger herzustellen, laufen jedoch (fast) mit der maximalen Geschwindigkeit, die mit dem jeweiligen Prozessor uznd Betriebssystem möglich ist.



Nach der Änderung eines Compiler-Programms muss man alle Produkte (für verschiedene Betriebssysteme und -Versionen) erneut compilieren, speichern und verteilen. Erst danach werden die neuen Programm-Versionen ausgeführt.



Compiler-Programme werden als binäre Dateien (z.B. *.exe) verbreitet und verwendet. Nur die EntwicklerInnen verfügen über den Quelltext.
Der hohe Entwicklungs-Aufwand lässt sich daher einfach und effizient schützen. Der kommerzielle Anspruch wird allerdings oft durch illegale Kopien der Programme unterlaufen.



Compiler-Programme wie C/C++ sind meist zur Ausführung an Arbeits‑PC vorgesehen. Betriebssysteme, Hardware-Treiber und typische AnwenderInnen-Programme (Textverarbeitung, Kalkulation, Grafik, Browser, oft verwendete Apps ...) sind in dieser Variante programmiert.

Daher findet man zum Download meist eigene Programm-Versionen für jedes Betriebssystem und meist auch für mehrere System-Versionen.

Die Compiler-Technik eignet sich gut für Programme, die längere Zeit hindurch (z.B. einige Monate) von vielen AnwenderInnen genutzt werden.
In diesem Fall zahlt es sich aus, individuelle Versionen der End-Produkte herzustellen, zu verwalten und zu verteilen.
Seit es die Möglichkeit für automatische Updates gibt, kann man compilierte Programme auch in kurzen Intervallen herstellen und verteilen. Das hat die Qualität der Programme leider nicht verbessert...

In wenigen Fällen ist es sinnvoll, auch Server-Programme mit Compiler-Programmiersprachen herzustellen: In diesem Fall muss man nur eine einzige oder wenige Versionen für Linux-Server-Systeme herstellen, kann jedoch die gegenüber Perl oder PHP wesentlich schnellere Verarbeitung nutzen. Das ist für Anwendungen sinnvoll, die intensive Prozessor-Arbeit erfordern und oft nachgefragt werden.

C/C++ Minimal-Beispiel


Beispiel einer Quelltext-Datei demo.cpp
#include <stdio.h>
int main() {
printf("Hier ist C \n");
return 0;
}
Nach dem Compilieren und Linken wird ein ausführbares Programm erzeugt, z.B. auf Windows eine (binäre) Datei demo.exe mit Anweisungen in Maschinensprache.
Dieses einfache Programm enthält kein User-Interface, daher kann man es (nur) an einer Konsole ausführen, z.B. an der Windows-Konsole cmd.exe durch Eingabe von
C:\> demo.exe
Als Ergebnis gibt das Programm diesen Text im Konsolen-Fenster aus:
Hier ist C



Die Programmierung mit C/C++ ist wesentlich einfacher, wenn man bereits Erfahrung mit einer anderen modernen Programmiersprache hat:
In diesem Fall kennt man alle wesentlichen Elemente und Methoden und braucht sie nur in die Syntax ('Grammatik') von C/C++ zu übertragen.

Die klassische Variante C bietet alle Elemente der einfachen Programmierung, mit Ausnahme von Objekten und Klassen. Pointer sind Variable, die Speicher-Adressen verwalten. Das Verständnis von Pointern gilt als schwierig, man kann dieses Thema jedoch (nur) für Anfängerinnen weglassen.
Der Schritt von C zu C++ ist nur für fortgeschrittene EntwicklerInnen sinnvoll, die bereits Erfahrung mit Objekten, Klassen usw. haben.
Die von Microsoft entwickelte Programmiersprache C# (C-Sharp, Visual-C) ist zwar theoretisch ungebunden, wird jedoch in der Praxis nur auf Windows-Systemen eingesetzt und hier nicht weiter kommentiert.

Berechnung von Primzahlen mit C/C++



Der Aufwand ist groß, um an unterschiedlichen (Linux)-Webservern jeweils die passende Version von C/C++ Programmen einzusetzen und bei Updates der Betriebssysteme allenfalls neu zu compilieren.

Man kann compilierte Programme auf den eigenen Arbeits-PC herunterladen und dort ausführen. Diese Möglichkeit wird hier für das Primzahlen-Programm angeboten.



  Das Web-Programm (Web-App, CGI-Programm) 'Primzahlen' kann man (nur dann) Live ausprobieren, wenn der von ihnen verwendete Webserver die Ausführung von binären Programmen erlaubt:

Auf diesem Server wird die Ausführung von mit C/C++ erzeugten Programmen nichtunterstützt.

Dieses Beispiel ist etwas aufwändiger in C++ programmiert: Auch dieses Programm ist frei verwendbar, jedoch ohne Gewähr. Das Programm ist zur Zusammenarbeit mit einem Webserver konzipiert und läuft nicht auf einem typischen Arbeits-PC.

Das Web-Programm 'Primzahlen' wurde mit mehreren Programmiersprachen hergestellt und bietet mit diesen Live-Anwendungen einen realistischen Leistungs-Vergleich: Man kann zwar (z.B. mit RechtsKlick) den Quelltext anzeigen, dabei wird jedoch nicht das Primzahlen berechnende Programm angezeigt sondern nur sein HTML-Ausgabe-Text. Diese Web-Apps sind nur zusammen mit einem Webserver verwendbar.
Nur die mit Javascript programmierte Version des Web-Apps wird auf ihrem Arbeits-PC ausgeführt: Diese Web-App lässt sich herunterladen und als einzige der hier vorgestellten Versionen auf jedem PC (unabhängig vom Betriebssystem) mit jedem gängigen Browser öffnen und verwenden.
Zu diesem Zweck können sie den ↗ Quelltext in einer Text-Datei primzahlen.html am eigenen Arbeits-PC speichern und verwenden.