It's just me and the code, and for awhile, I feel like a real programmer again.— Charles Petzold 1)
Echte Programmierer schreiben
COPY CON: PROGRAM.EXE MZ ... ^Z
Nein, im Ernst. Programmierer sind Handwerker. Wir umgeben uns mit einigen Werkzeugen:
Teste, ob diese Umgebung arbeitsfähig ist. Bist Du mit den Werkzeugen vertraut, kann das Programmieren beginnen. Für Neulinge kommen jetzt die ersten Hürden. Wer wirklich programmieren lernen will, muss diese überwinden.
Die Betriebssystemkonsole hat je nach Betriebssystem unterschiedliche Namen:
Meist ist dieses häßliche schwarze Fenster unter grafischen Oberflächen irgendwo versteckt:
cmd
.Wir benutzen einige wenige Befehle, um uns im Dateisystem des Computers zurechtzufinden, Verzeichnisse (Ordner) anzulegen und mit Dateien umzugehen. Diese Aktionen lassen sich auch auf grafischen Oberflächen bewerkstelligen. Mit der Tastatur und etwas Fingerfertigkeit ist man aber häufig schneller als mit Maus und Zeigefinger:
Unix | Windows | |
zu Laufwerk X wechseln | X: |
|
Verzeichnis wechseln | cd name | cd name |
Verzeichnis anzeigen | ls | dir |
Verzeichnis anlegen | mkdir name | md name |
Datei anzeigen | more name | more name |
Datei kopieren | cp quelle ziel | copy quelle ziel |
Datei umbenennen | mv alt neu | move alt neu |
Datei löschen | rm name | del name |
Erstelle zum Üben ein Verzeichnis, in dem später die Quelltexte abgelegt werden. Mache Dich mit den Befehlen vertraut.
Der Editor ist das "Arbeitszimmer" des Programmierers. Hier werden die meisten Arbeiten erledigt. Über die beste Art, diesen Arbeitsplatz einzurichten, lässt sich endlos streiten.
Unter Unix kommen zwei Editoren in die engere Wahl,
emacs
, ein "Betriebssystem, dem nur noch ein brauchbarer Editor fehlt",vi
, das Urvieh unter den "visuellen" Editoren, fast überall vorhanden.
Beide Editoren sind sehr gewöhnungsbedürftig.
Einige wichtige Befehle für den vi
sind hier beschrieben.
Obwohl auch kedit
für den Anfang genügt,
sollte man wenigstens einen von beiden oben genannten Editoren kennen. Also
vi dateiname
Unter der Windows-Konsole lassen sich Dateien mit
edit dateiname
odernotepad dateiname
bearbeiten.
Edit wandelt Tabulatoren beim Abspeichern in Leerzeichen um. Das kann fatal sein.
Am Notepad stört das Beharren auf der Dateiendung *.txt
und die fehlende Zeilennummernanzeige (ab Windows XP im Menü Ansicht aktivierbar).
Ein paar Zusatzprogramme können unter Windows das Leben erleichtern. Der zweifenstrige Dateimanager FreeCommander kann
Strg+D
eine Konsole im aktuellen Verzeichnis öffnen, Der bevorzugte Editor ist einstellbar, etwa Notepad++ oder Programmer's File Editor (Freeware).
Entscheide Dich, welchen Editor Du nutzen willst. Mache Dich mit ihm vertraut. Wie wird Text geschrieben, verändert, gelöscht, auf der Festplatte gespeichert und wieder von dieser geladen?
Viele Linux-Systeme haben den GNU C++-Compiler vorinstalliert. Bei Distributionen für Heimanwender, z.B. SuSE Personal Edition, ist der Compiler nicht vorhanden. In diesem Fall müssen Entwicklungspakete nachträglich installiert werden. Wenn unter Linux der Befehl
g++
mit
g++: no input files
antwortet, ist der GNU-Compiler betriebsbereit. Der Befehl
make
auf der Linux-Konsole in einem leeren Verzeichnis bringt die Meldung
make: No targets specified and no makefile found. Stop.
(oder Sinngemäßes auf Deutsch) hervor. Linux-Nutzer können gleich zum ersten C++-Programm übergehen.
Windows bringt keinen Compiler mit. Den muss man selber installieren. Kostenfreie C++-Entwicklungssysteme sind im Internet verfügbar. Diese Systeme bringen eine Entwicklungsumgebung (Projektverwaltung, Editor, Debugger, Hilfesystem) mit. Ignoriere (zumindest fürs Erste) die mitgelieferte Umgebung! Die Compiler dieser Systeme können auch auf der Konsole genutzt werden. Dazu ist eine Datei make.bat hilfreich, besonders, wenn die Rechte des Nutzers soweit eingeschränkt sind, dass keine Umgebungsvariablen und Pfade änderbar sind. Der Windows-Konsolenbefehl
make
sollte dann eine Meldung ähnlich dieser bringen (Beispiel für Dev C++ / GNU make):
make.exe: *** No targets specified and no makefile found. Stop.
Es kann nun, fast wie unter Linux, mit dem ersten C++-Programm weitergehen.
Um von Beginn an Ordnung zu halten, sollte ein
Verzeichnis für Programme (Quelltexte) angelegt werden.
Wechsle mit dem Konsolenbefehl cd
in dieses Verzeichnis.
Dort entsteht ein erster Quelltext hallo.cpp
:
//: hallo.cpp : Compilertest - R.Richter 2006-12-27 /////////////////////////////////////////////////// #include <iostream> int main() { std::cout << "Hallo, Welt!\n"; return 0; } //~
Abspeichern. Editor verlassen. Das ausführbare Programm entsteht aus diesem Quelltext durch den Aufruf
make hallo
(make hallo.exe
für Windowsbenutzer mit Microsoft-Compiler).
Überprüfe, welche Dateien jetzt im aktuellen Pfad liegen.
Das Programm startet mit dem Befehl
hallo
(oder ./hallo
unter Unix,
wenn der aktuelle Pfad .
nicht in der Variable $PATH
eingetragen ist).
Gratulation! Soeben hat das erste Programm erfolgreich eine Meldung auf die Konsole ausgegeben:
Hallo, Welt!
Die Freude hält nicht lange an. Jetzt kommt der Ehrgeiz. Der Quelltext kann erneut mit dem Editor bearbeitet, gespeichert, übersetzt und ausgeführt werden (Edit-Compile-Run-Zyklus). Ein Programm ist nie fertig. Man hört nur auf zu programmieren…
Dann ist einer der vorangegangenen Schritte (Quelltext schreiben, speichern, übersetzen) schiefgegangen. Nicht aufgeben! Versuche die Fehler zu finden und zu korrigieren. Es ist jetzt günstig, mit zwei Konsolenfenstern in demselben Verzeichnis (!) zu arbeiten. In einem wird der Quelltext mit dem Editor bearbeitet und dann gespeichert (!). Im anderen Fenster wird der Befehl zum Übersetzen ausgeführt.
Achte auf die Ausschriften (Fehlermeldungen), die nach Deinen Kommandos auf der Konsole erscheinen. Lies! Versuche die Meldungen zu entziffern. Es gibt keinen anderen Weg, die Ursache des Fehlers einzugrenzen und die Ursache zu beseitigen. (Von Raten und Probieren abgesehen.)
Dann gehe nicht sofort weiter. Öffne den Quelltext nochmals, baue absichtlich Fehler in den Quelltext ein. Füge Zeichen ein, lasse Zeichen weg, ersetze einzelne Zeichen durch andere. Speichere den Quelltext, lass ihn übersetzen. Welche Fehlermeldungen liefert der Compiler? Mache Dich damit vertraut. Wenn Dir dieser Fehler wieder einmal begegnet, kannst Du Dich erinnern: Moment mal, den Fehler kenne ich … Erfahrungsgemäß begeht man immer wieder dieselben Fehler, obwohl man eigentlich etwas daraus lernen sollte.
hallo.cpp:1: error: expected `,' or `;' before '.' token
Welches Programm meldet den Fehler?
Fehlermeldungen des Compilers liefern neben dem Wort error meist noch den Namen des Quelltextes nebst der Zeile, in der der Fehler bemerkt wurde und eine Beschreibung, was der Compiler für falsch hält.
Sei beim Lesen der Fehlermeldungen aufmerksam. Die Zeile, in welcher der Compiler einen Fehler feststellt, ist manchmal gar nicht falsch. Der Fehler wurde nur erst dort bemerkt. Seine Ursache liegt vielleicht in der Zeile davor (Semikolon am Zeilenende vergessen?) oder noch weiter oben.
Auf Anfänger wirken schon einzelne Tippfehler einschüchternd, die beim Übersetzen gleich den ganzen Bildschirm mit Fehlermeldungen zumüllen. Das ist, als ob ein Auto auf kurvenreicher Strecke im Gebirge ausbricht:
Warnung: Glatteis! Fehler: Geschwindigkeit zu hoch Fehler: Antiblockiersystem aktiv Fehler: rechter Blinker ausgefallen Fehler: rechter Scheinwerfer defekt Fehler: Bodenkontakt rechtes Vorderrad verloren Fehler: Bodenkontakt rechtes Hinterrad verloren Fehler: Maximalgeschwindigkeit überschritten Aufprall ...
Keine Panik. Wichtig ist im Moment nur die allererste Fehlermeldung, die weiteren können Folgefehler des ersten sein.
Was, wenn soviele Meldungen über den Bildschirm rasselten, dass die erste Meldung nicht gelesen werden konnte? Dann übersetze noch einmal und lenke die Fehlerausschriften in eine Textdatei um.
make hallo 2> log.txt more log.txt
Lies den Anfang der Logdatei.
Wird z.B. in der Zeile mit dem Gruß "Hallo, Welt\n"
statt des Doppelpfeils <<
nur <
geschrieben,
dann kann sich der Compiler nicht mehr bremsen,
viele gut gemeinte Ratschläge zu erteilen…
Manche Fehlermeldungen sind schwer zu deuten. In einigen Fällen sind die Empfehlungen des Compilers schlicht irreführend. Nicht vergessen: Das ist und bleibt eine Maschine. Sie kann nicht für uns denken. Sie teilt uns mit der Fehlermeldung nur mit, dass unsere Eingaben nicht den geforderten Rechtschreibregeln entsprechen. Die Fehlerursache finden und beseitigen müssen wir selbst.
Weiter: Teil 2.