Die Leserumfrage hat ein ziemlich deutliches Ergebnis ergeben: eine Artikelserie zum Thema Programmieren ist erwünscht. Das freut mich natürlich, da in diesem Bereich meine hauptsächlichen Kompetenzen liegen. In den nächsten Wochen (und vermutlich Monaten) möchte ich mich hier im Blog also mit dem Thema Programmieren beschäftigen und eine Einführung in selbiges geben.
Da es, wie einige Leser natürlich zu Recht angemerkt haben, bereits genügend Bücher und Leitfäden zum Programmieren an sich gibt, möchte ich mich in dieser Artikelserie nicht allein auf das reine Programmieren beschränken, sondern immer wieder Exkurse in damit verwandte Themen machen, die aber in einer reinen Programmier-Anleitung so meist nicht behandelt werden. Wie immer gilt: besondere Themen-Wünsche einfach in den Kommentaren äußern. Ein Lesen der Artikelserien “Wie Rechner rechnen” und “Programmierung” ist sicherlich hilfreich, aber hoffentlich nicht nötig, um diese Artikelserie zu verstehen.
In diesem ersten Artikel soll es hauptsächlich um das ganze “Drumherum” beim Programmieren gehen, vor allem: welche Programmiersprache soll verwendet werden und was muss gemacht werden, um damit wirklich etwas auf dem Bildschirm zu sehen. So richtig programmiert wird diesmal noch nicht – Vorbereitung muss aber leider sein. Aber keine Angst, der nächste Artikel folgt bald.
Fangen wir mit der Wahl der Programmiersprache an. In der Informatik-Welt existieren mittlerweile tausende von Programmiersprachen, die für die unterschiedlichsten Zwecke entworfen wurden. Die Programmiersprachen lassen sich dabei nach den unterschiedlichsten Kriterien in Kategorien einteilen. Eine sehr grobe Einteilung ist dabei die Einordnung einer Sprache als sogenannte General Purpose Language (GPL) oder als Domain Specific Language (DSL). GPLs sind Sprachen, die ohne einen speziellen Anwendungszweck entworfen wurden und daher für alle möglichen Zwecke einsetzbar sind; demgegenüber sind DSLs “domänengebunden”, das heißt für die Anwendung in einem ganz bestimmten Anwendungsgebiet gedacht und daher in ihrer Funktionalität in der Regel sehr eingeschränkt. Zum Lernen des Programmierens eignen sich GPLs in der Regel besser, da mit ihnen viel mehr Konzepte umgesetzt werden können – wir wollen uns in dieser Artikelserie daher auch vorrangig mit GPLs beschäftigen.
Über die konkrete Wahl der Programmiersprache könnte man stundenlang philosophieren, da es unzählige Argumente gibt, die für oder gegen eine bestimmte Sprache sprechen. In dieser Artikelserie werde ich vorrangig die Sprache C++ verwenden, und zwar aus den folgenden Gründen:
- C++ ist eine Multi-Paradigmen-Sprache, das heißt, sie unterstützt mehrere Programmierparadigmen (was das ist, erkläre ich in einem späteren Artikel), wodurch mehrere Sachen in einer Sprache gezeigt werden können.
- Sie ist relativ maschinennah, wodurch auch technischere Details erklärt werden können.
- Entgegen häufig gelesener Behauptungen ist C++ größtenteils maschinenunabhängig; jeder kann sie auf seinem System nutzen.
- Egal, welche Sprache gewählt wird: es wird immer jemanden geben, der mit der Wahl unzufrieden ist. Daher wähle ich die Sprache aus, in der ich mich am besten auskenne und potentiell am wenigsten Unsinn schreibe.
Da nun die zu nutzende Programmiersprache geklärt ist, noch ein paar einführende Worte zur Entwicklungsumgebung. Mit Entwicklungsumgebung wird typischerweise die Menge an Programmen bezeichnet, die zur Entwicklung mit einer bestimmten Programmiersprache verwendet wird. Üblicherweise umfasst das einen Editor zum Schreiben des Programmtextes und einen Compiler – das Programm, das den geschriebenen Programmtext in z.B. in ein ausführbares Programm übersetzt. Sind Texteditor und Compiler in einem einzelnen Programm zusammengefasst, das dann auch noch weitere Funktionalität zur Entwicklung mit der Sprache bereitstellt, spricht man von einer integrierten Entwicklungsumgebung, kurz IDE. Ohne Entwicklungsumgebung ist natürlich kein Programmieren möglich!
Die Auswahl für C++ ist hier auf Grund der weiten Verbreitung der Sprache naturgemäß ziemlich groß. Im folgenden möchte ich einige Möglichkeiten vorstellen und kurz erläutern, wie man damit aus einer Quelltextdatei ein ausführbares Programm erzeugt – wer die Inhalte der Artikelserie ausprobieren möchte und noch keinen Compiler installiert hat, sollte sich für eine der folgenden Lösungen entscheiden. Wenn in zukünftigen Artikeln von kompilieren die Rede ist, dann ist damit gemeint, die im Folgenden beschriebenen Schritte zum Erstellen einer ausführbaren Datei durchzuführen. Die folgenden Beschreibungen erfolgen für Linux und Windows; für Mac OS kann ich mangels eines entsprechenden Rechners leider keine Anleitung geben (vielleicht kann einer meiner Leser mir eine kurze Anleitung für XCode und Clang oder GCC unter Mac OS zukommen lassen?)
Clang
Clang ist ein moderner Compiler für verschiedene Programmiersprachen, darunter auch C++. Installiert werden kann er zum Beispiel unter Ubuntu mit dem Befehl
Unter Fedora lautet der Befehl
Ob es den Compiler auch im Paketmanager anderer Linux-Distributionen gibt, muss jeder selber schauen (Meldung dazu bitte in den Kommentaren). Angenommen, wir haben eine Datei test.cpp
mit einigem C++-Code zum Testen, so lässt sie sich folgendermaßen kompilieren (gilt für alle Linux- und Mac-Varianten):
Der Bestandteil -o test
generiert eine Datei ausführbare Datei test
, die dann wie üblich mit dem Befehl ./test
ausgeführt werden kann.
g++
g++ ist der de-factor-Standard-C++-Compiler unter Unix-Betriebssystemen (und meines Wissens unter den meisten auch schon vorinstalliert). Nutzen lässt er sich analog zu Clang mit dem Befehl
Es gibt von g++ auch eine Portierung für Windows, genannt MinGW. Sie kann hier gefunden werden (eine Installations-Anleitung kann hier gefunden werden, unter dem Punkt “Command Line Interface Installer” – wichtig: bitte unbedingt den Hinweis beachten, dass MinGW nicht in ein Verzeichnis installiert werden sollte, welches Leerzeichen im Namen enthält).
Visual Studio Express
Eine kostenlose IDE für Windows ist Visual Studio Express von Microsoft. Sie bringt einen Compiler und einen komfortablen Text-Editor mit sich und kann zur Erstellung von Anwendungen für Windows genutzt werden. Downloads sind hier für Windows 7/8 (Visual Studio Express 2012 für Windows Desktop) bzw. hier für ältere Windows-Versionen (Visual C++ 2010 Express) erhältlich. IDEs werden normalerweise nicht über die Kommandozeile bedient, sondern über Tastenkombinationen und Menüeinträge in der Anwendung selber. Um eine ausführbare Datei mit Visual Studio zu erstellen, muss zuerst ein neues Projekt angelegt werden (Menü Datei
-> Neu
-> Project...
-> Win32-Konsolenanwendung
; in den folgenden Einstellungen am besten ein leeres Projekt erzeugen). Diesem wird nun anschließend Dateien hinzugefügt (Rechtsklick in der linken Spalte auf Quelldateien
-> Hinzufügen
-> Neues Element...
-> C++-Datei
). Das Projekt kann anschließend über die Menüpunkte Erstellen
-> Projektmappe erstellen
oder die Taste F7
erstellt und über den Menüpunkt Debuggen
-> Starten ohne Debugging
(beziehungsweise die Tastenkombination Strg+F5
) gestartet werden.
So, damit ist das Thema Entwicklungsumgebung erledigt (wer noch seine Lieblings-Entwicklungsumgebung gern mit in diese Liste aufgenommen sähe, kann mir gern eine Mail mit einer ausführlichen Nutzungsanleitung für Windows und Linux schicken). Um zu prüfen, ob auch alles funktioniert, legen wir uns eine Datei test.cpp
mit dem folgenden Inhalt an (den Inhalt bitte vorerst nicht hinterfragen – Details dazu kommen im nächsten Artikel in Kürze):
#include <cstdio>
int main()
{
printf( “Hello World!\n” );
return 0;
}
Diese Datei kompilieren wir und führen sie anschließend aus. Wenn alles geklappt hat, sollte nun ein optimistisches “Hello World!” auf dem Bildschirm prangen. Wenn dem so ist: gespannt sein auf den nächsten Artikel! Wenn es Probleme gibt: bitte in den Kommentaren melden.
Kommentare (36)