Eine Frage: Was hat ein Editor mit einer Maurerkelle gemein?
Eine Beantwortung der Frage sollte nicht sonderlich schwerfallen, da die Maurerkelle genauso zum Handwerkzeug
eines jeden Maurers gehört, wie ein Editor zum Handwerkzeug eines jeden Programmierers. Kein Maurer
könnte ohne Material und Handwerkzeug eine Wand aus Ziegelsteinen errichten und ebenso könnte kein Programmierer
ohne einen geeigneten Editor einen Quellcode für ein Programm schreiben. Der Maurer wurde in diesem
Zusammenhang nur stellvertretend für alle handwerklichen Berufe erwähnt, in denen keine Arbeit so richtig
befriedigend ohne berufsspezifisches Handwerkzeug gelingen würde.
Im einfachsten Fall wird sich ein Programmierer mit einem reinen Texteditor begnügen, der lediglich
den ASCII Zeichensatz oder einem mit diesem verwandten ANSI Zeichensatz darstellen und speichern kann.
Wesentlich besser ist hingegen ein Editor geeignet, der die Syntax der bevorzugten Programmiersprache
hervorheben kann und noch besser ein Editor mit Syntax- und Klammerhervorhebung. Vor allem bei verschachtelten
Anweisungen erleichtert ein Editor mit Klammerhervorhebung zuweilen sehr die Fehlersuche. Der kostenlos
erhältliche Notepad++
wäre zum Beispiel als Allround-Editor für Windows Betriebssysteme durchaus geeignet, da er die Syntaxen
einer Vielzahl von Auszeichnungs-, Script- und Programmiersprachen unterstützt.
Je nachdem, ob es sich um eine Auszeichnungssprache wie HTML oder XML, um eine
Scriptsprache wie JavaScript oder PHP, oder um eine Programmiersprache wie C oder C++ handelt, ist mindestens
noch ein Parser, Interpreter oder Compiler erforderlich. Bei den Auszeichnungssprachen HTML (Hypertext
Markup Language) und XML (Extensible Markup Language) sowie bei der Scriptsprache JavaScript
schlüpft der clientseitige Webbrowser in die Rolle des Parsers, wobei in früheren Jahren unterschiedliche
Browser zu unterschiedlichen Interpretationen bei der Darstellung von Webseiten neigten.
PHP (Hypertext Preprocessor) wird hingegen bereits vom Webserver geparst und interpretiert.
Ein kleiner Codeschnipsel ließe sich sicherlich noch mit einem beliebigen Editor fertigen, in eine HTML-Seite
einfügen und nach dem Upload einer Datei auf einem Server testen, eine ganze Anwendung hingegen nicht.
Um PHP- Anwendungen auf einem PC testen zu können, muss auf dem Computer ein Server, ein Parser, ein
Interpreter und ein Browser installiert sein. Anders als bei einer Auszeichnungssprache, wird der Quellcode
nicht an einen clientseitigen Browser übermittelt, sondern zuerst von einem Parser für den serverseitigen
Interpreter aufbereitet und das fertige HTML-Dokument (ebenso andere mit PHP generierte Dateitypen
bzw. Dateiformate) an den Browser übermittelt. Das Softwarepaket
XAMPP enthält neben einem
Apache Server alle erforderlichen Tools, um PHP- Anwendungen erfolgreich mit einem heimischen Computer
testen zu können.
Gänzlich anders verhält es sich bei den Programmiersprachen C und C++, sowie
bei vielen weiteren Hochsprachen. Bei diesen Programmiersprachen wird der Quellcode der Programmdateien
durch einen Compiler in ein für Maschinen lesbares Programm übersetzt. Der Vorgang des Übersetzens wird
bei diesem Vorgang als Kompilierung bezeichnet. Zum Compiler gehören ein Präprozessor und ein Linker,
wobei die Aufgabe des Präprozessors darin besteht, Quellprogramme für die Kompilierung vorzubereiten.
Diese Vorarbeit des Präprozessors besteht unter anderem in der Einbindung von Headerdateien, in der
Entfernung von Kommentaren und von überflüssigen Leerräumen (Whitespace) aus dem Quellcode,
sowie in der Auswertung und Umsetzung sonstiger, mit einer # Raute gekennzeichneter Präprozessor-Direktiven.
Nach dem der Präprozessor den Quellcode der Programmdatei vorbereitet hat, wird der Compiler selbigen
in einen von Maschinen lesbaren Code übersetzen und diesen Code im Zuge der Übersetzung optimieren.
Vom Compiler wird bei erfolgreicher Kompilierung eine Objektdatei angelegt. Besteht ein Programm aus
mehr als eine Programmdatei, wird der Compiler auch mehr als eine Objektdatei anlegen.
Nach dem Compiler ist der Linker an der Reihe. Dieser führt mehrere Objektdateien zusammen (falls
das Programm aus mehreren Quelldateien besteht) und verlinkt zu benötigten Laufzeitbibliotheken,
insofern diese in den entsprechenden Headerdateien deklarierte Funktionen enthalten. Funktionen, die
in der C-Standard-Bibliothek enthalten sind, werden hingegen nicht dynamisch verlinkt, sondern statisch
gebunden.
Verlief die Kompilierung reibungslos und der Präprozessor, der Compiler und der Linker haben die jeweiligen
Obliegenheiten verlässlich erledigt, sollte ein fertig gestelltes Programm mit der Extension "exe"
vorliegen, zumindest insofern es sich um ein normales Computerprogramm handelt. Etwas anders verhält
es sich mit einem Programm für einen Mikrocontroller, da das fertiggestellte Programm noch mit Hilfe
einer speziellen Hardware (Brenner) zum Mikrocontroller übertragen werden muss, um es in dessen
Speicher zu schreiben.
Grafik: Vereinfachte Darstellung der Kompilierung eines C-Programms in der Reihenfolge programm.c -> Präprozessor -> Compiler -> Linker -> programm.exe.
Wesentlich besser als einzelne Compiler sind integrierte Entwicklungsumgebungen
zur Programmierung von umfangreicheren Software-Anwendungen geeignet. In der Regel enthält so eine integrierte
Entwicklungsumgebung (in der Kurzform IDE genannt) alle erforderlichen Tools zur Programmierung
und Fehlersuche, wie Editor, Compiler, Linker, Debugger und Projektmanager. Im Hobbybereich erfreut
sich die kostenlos erhältliche Visual C++ Express Edition von Microsoft großer Beliebtheit. Für den
Bereich Mikrocontroller ist unter anderem die ebenfalls kostenlos erhältliche Entwicklungsumgebung MPLAB
von Microchip erwähnenswert. Beide IDEs möchten wir Ihnen (in absehbarer Zeit) noch etwas näher
vorstellen.
Erstellen eines C-Programms mit:
Tools
Übersicht