Das richtige Handwerkszeug für Programmierprojekte

Aus LinuxUser 06/2010

Das richtige Handwerkszeug für Programmierprojekte

© Anorak33, sxc.hu

Richtig gerüstet

Wer sich mit dem Programmieren beschäftigt, sieht sich rasch mit einer Vielzahl von Tools konfrontiert. Wir helfen bei der Auswahl der richtigen Werkzeuge.

Zum Programmieren braucht es nicht viel: Ein Editor reicht aus, und schon geht es los. Hat das Programm aber eine bestimmte Größe erreicht oder entwickeln plötzlich drei Leute an der Software, gerät die Arbeit zunehmend komplexer. Hier helfen zahlreiche Tools bei Koordination und Kommunikation. Aber auch in einem Ein-Mann-Projekt brauchen Sie nicht auf nützliche Hilfsmittel zu verzichten: Ein Linux-System bietet Werkzeuge für alle Fälle.

Ausgezeichnet

Viele Editoren unter Linux verfügen über ein Feature, das sich Syntax Highlighting nennt: Über eine Steuerdatei erkennt das Programm die Struktur von vielen Skript- und Programmiersprachen, aber auch von HTML, CSS oder XML-Formaten, und färbt in diesen bestimmte Bestandteile ein. Damit gewinnen Sie auf einen Schlag mehr Übersicht. Falls möglich, empfiehlt es sich auch, das Nummerieren der Zeilen einzuschalten. Das geschieht dabei nur in der Darstellung, der Programmcode enthält die Ziffern nicht. So haben Sie beim Gespräch über den Sourcecode schnell die entsprechende Zeilennummer zur Hand.

Sowohl Gnomes Standard Gedit [1], als auch dessen KDE-Pendant Kwrite [2] verfügen bereits über eine Reihe von Features, die beim Schreiben einfacher Skripte und Programme helfen (Abbildung 1). Diese fallen allerdings sehr rudimentär aus. Im Falle von Gedit rüsten Sie bei Bedarf zusätzliche Plugins nach, um neue Features zu nutzen.

Abbildung 1: Der Editor Kwrite bietet mit Syntax Highlighting, Zeilennummern und Code Folding schon einige Funktionen, die das Programmieren erleichtern.

Abbildung 1: Der Editor Kwrite bietet mit Syntax Highlighting, Zeilennummern und Code Folding schon einige Funktionen, die das Programmieren erleichtern.

Kwrite bietet die Möglichkeit, über ein Komponentensystem ein Editormodul für den Einsatz innerhalb der Applikation zu wählen. Es bietet sich an, hier KatePart zu wählen, das zum KDE-Editor Kate gehört [3]. Er verfügt über umfangreiche Funktionen, die Sie beim Programmieren unterstützen.

Etwa auf der gleichen Flughöhe arbeitet das Gtk-Programm Geany [4]. Es verbindet die Funktionen eines Editors mit den grundlegenden Features ein echten Entwicklungsumgebung. So beherrscht das Programm beispielsweise Code Folding, also das Einklappen von Textteilen, die Funktionen oder andere gekapselte Sprachelemente enthalten. Außerdem unterstützt das Syntax Highlighting zahlreiche Sprachen, über eine Snippet-Verwaltung fügen Sie häufig benutzte Codeteile ein und die Vervollständigen-Funktion schließt zum Beispiel XML- oder HTML-Tags.

Etwas außerhalb dieser Konkurrenz laufen die Editoren Emacs [5] und Vim [6]. Sie arbeiten als Konsolenprogramme und bieten daher nicht auf Anhieb den gleichen Komfort, den manch einer von grafischen Oberflächen gewohnt ist. Allerdings verfügen beide über zahlreiche Features, die das Schreiben von Programmcode vereinfachen.

Zudem weisen sowohl Emacs als auch Vim eine Plugin-Schnittstelle auf, die es erlaubt, neue Funktionen hinzuzufügen. Die umfangreiche Dokumentation auf der Homepage des jeweiligen Projektes liefert eine Menge Hinweise zum individuellen Konfigurieren der beiden Urgesteine unter den Editoren.

Noch eine Nummer größer fallen integrierte Entwicklungsumgebungen aus, die sogenannten IDEs. Zu den Platzhirschen unter Linux gehören Kdevelop [7] aus dem KDE-Projekt sowie Anjuta [8], das in Gnome-Umgebungen zum Einsatz kommt. Darüber hinaus steht unter Linux mit Eclipse [9] ein Development-Framework bereit, mit dem Sie die für Ihr Projekt wichtigen Bestandteile einer Entwicklungsumgebung individuell zusammenstellen.

Dokumentation

Zu einem guten Programm gehört auch eine vernünftige Dokumentation, denn sie hilft dem Leser die Funktionen richtig zu verstehen und einzusetzen. Wer sich noch nicht an das in Open-Source-Projekten traditionell sehr verbreitete Docbook-Format [10] herantraut, dem bietet sich als Alternative zum Beispiel Restructured Text aus dem Python-basierten Docutils-Projekt [11] an.

Hier schreiben Sie mit einer Wiki-ähnlichen Syntax alle wichtigen Informationen in ein einfaches Textdokument. Als Exportformate unterstützt der Parser derzeit XHTML, XML oder LaTeX, wobei letzteres zum Beispiel sehr leicht das Umwandeln nach PDF erlaubt. Scheuen Sie sich nicht davor, einige Zeit auf das Schreiben der Dokumentation zu verwenden: Anwender, die nicht verstehen, wie eine Software funktioniert, schauen sich schnell nach einer Alternative um.

Nützliche Helfer

Wer beim Testen und Installieren von Software stets die gleichen Schritte ausführt, dem sei das Helferlein Make ans Herz gelegt. Einige kennen es aus dem klassischen Dreisprung ./configure; make; make install beim Installieren von Programmen aus dem Sourcecode. Zwar erfordert Make viel Einarbeitungszeit, um die Features voll auszunutzen, aber ein einfaches Makefile haben Sie schnell geschrieben. Am häufigsten treffen Sie wahrscheinlich auf die Implementation aus dem Gnu-Projekt [12]. Mehr Informationen finden Sie in der ausführlichen Online-Dokumentation des Tools [13].

Als Alternativen zu Make bieten sich das in Perl programmierte Makepp [14] sowie das in Python geschriebene Scons [15] an. Beide lösen einige lästige Probleme von Make, die sich unter anderem aus Schwierigkeiten bei Rekursionen ergeben. Darüber hinaus bieten Makepp und Scons die Möglichkeit, die Makefiles in der jeweiligen Skriptsprache zu erweitern, was umfangreiche Möglichkeiten eröffnet.

Beim Vergleich zwischen zwei Versionen einer Quellcodedatei hilft klassischerweise das Werkzeug Diff [16]. Es vergleicht Dateien zeilenweise und zeigt die Änderungen mit entsprechenden Hinweisen zu Zeilennummern und Kontext. Aus der Differenz von zwei Dateien erstellen Sie bei Bedarf einen sogenannten Patch, der nur Unterschiede zwischen beiden Files enthält.

Diesen Flicken verschicken Sie dann bandbreitenschonend einfach per Mail zu jemandem, der noch mit einer älteren Version der entsprechenden Datei arbeitet. Der nutzt das Programm Patch, um die Unterschiede auf seine Version anzuwenden und so mit Ihrer auf den gleichen Stand zu gelangen.

Beide Programm finden sich auf den Standard-Distributionen in den Repositories, von wo Sie sie bequem installieren. Wenn Sie gerade dabei sind, werfen Sie doch gleich einen Blick auf das Programm Ctags [17]: Es liest Quellcodedateien ein und stellt einen Index bereit. Der erlaubt es einer Reihe von Editoren, von einer im Sourcecode verwendeten Funktion oder Klasse in die Datei auf die Zeile zu springen, an der Sie diese definiert haben. Das hilft vor allem bei umfangreichen Projekten mit vielen Quellcode-Dateien.

Versionen

Meist verläuft die Arbeit an einem Projekt zyklisch. Sie schreiben an dem Programm, testen die Funktionen und veröffentlichen anschließend eine neue Version. Wer nur ein einfaches Shell-Skript schreibt, dem reicht es oft, für eine neue Version eine Kopie des Programms mit einer inkrementierten Versionsnummer abzuspeichern und dann daran weiter zu schreiben. Professioneller und in vielen Fällen nicht komplizierter arbeiten Sie aber mit einem Sourcecode-Managementsystem (SCM).

Für kleine Projekte reicht dabei das Revision Control System RCS [18],das heute zum Gnu-Projekt gehört [19], vollkommen aus. Um es zu nutzen, legen Sie am besten im Projektordner ein Verzeichnis mit dem Namen RCS an. Jede Projektdatei checken Sie dann einmal mit ci -i Datei ein, und holen sich diese dann mittels co -l Datei aus dem Repository, um sie zu bearbeiten. Haben Sie die gewünschten Änderungen implementiert, checken Sie wieder ein – diesmal mit ci -m"Kommentar" Datei. Ein Artikel aus einer älteren Ausgabe hilft Ihnen beim Einstieg in das System [20].

Da sich mit diesem System größere Projekte nur schwer verwalten ließen, entstanden zum Beispiel mit dem Concurrent Version System [21] oder Subversion [22] bald Systeme, die es einfacher machten, Verzeichnisbäume und sogar Binärdaten zu verwalten. Beide benötigen aber für ein vernünftiges Arbeiten einen zentralen Server und eigenen sich damit am besten für einen klar definierten Kreis von Entwicklern.

Einen anderen Ansatz verfolgen sogenannte verteilte SCMs, zu deren bekanntesten Kandidaten das von Linus Torvalds initiierte Git [23] gehört. Es löste das kommerzielle System Bitkeeper ab [24]. Parallel zu Git entwickelte Matt Mackall das System Mercurial [25], bei dem Entwickler ebenfalls jeweils eine komplette Kopie des Projektes auf ihrem Rechner anlegen. Das in Python geschriebene Mercurial setzt vor allem auf Effizienz, Robustheit und Skalierbarkeit.

Git bietet sich in erster Linie für den Einsatz in großen Projekten an. Die komplexen Kommandos und Möglichkeiten zum Absichern von Revisionen übersteigen leicht den Bedarf von kleinen Projekte. Bliebe also Mercurial oder das von Canonical geförderte Bazaar [26]: Das ebenfalls in Python geschriebene Sourcecode-Managementsystem arbeitet sowohl auf einem Server als auch ausschließlich lokal. Zu den Designzielen gehört vor allem ein einfaches Bedienkonzept.

Online-Repositories

Sobald Ihr Projekt eine gewisse Größe oder Bekanntheit erlangt, lohnt es sich darüber nachzudenken, den Quellcode in einem Online-Repository zu hosten. Solche Projektseiten bieten den Vorteil, dass sie neben einem zentralen Server oft auch Kommunikationsmittel bereitstellen: etwa einen Bugtracker zum Erfassen von Fehlern oder auch Mailinglisten und Wiki-Seiten.

Da sich diese Projekt-Hoster manchmal auf ein bestimmtes Sourcecode-Managementsystem stützen, gilt es hier im Vorfeld genau zu prüfen, ob der Anbieter der Wahl alle wichtigen Funktionen mitbringt. So lohnt es sich zum Beispiel kaum, auf Launchpad (Abbildung 2) einen Account anzulegen, wenn Sie Ihren Quellcode lieber mit Subversion verwalten. Die von Canonical betriebene Site spielt eben mit dem im gleichen Haus entwickelten Bazaar am besten zusammen.

Abbildung 2: Projektseiten, wie der populäre Hoster Launchpad, bieten Ihnen über das reine Sourcecode Management eine Reihe weiterer nützlicher Funktionen, wie Bugtracker oder Wikiseiten.

Abbildung 2: Projektseiten, wie der populäre Hoster Launchpad, bieten Ihnen über das reine Sourcecode Management eine Reihe weiterer nützlicher Funktionen, wie Bugtracker oder Wikiseiten.

Einen recht guten Überblick finden Sie in der englischsprachigen Wikipedia [27]. Hier sehen Sie nicht nur, welche Features der jeweilige Anbieter mit im Paket hat, sondern auch, welche Voraussetzung die Betreiber an ein Projekt stellen und wie populär eine Site ist.

Eine Projektseite fördert in vielen Fällen die Bekanntheit einer Software. Planen Sie daher auch mit ein, dass Sie sich nach einem solchen Schritt eventuell mit verstärkten Nachfragen von Anwendern, Fehlerreports und Feature-Wünschen konfrontiert sehen. Nicht jeder mag die Zeit mitbringen, um all dies in einer für den Außenstehenden zufriedenstellenden Weise zu bewältigen. Damit die Lust nicht zur Last gerät, lohnt es sich manchmal, eine Nummer kleiner zu arbeiten. 

LinuxUser 06/2010 KAUFEN
EINZELNE AUSGABE
ABONNEMENTS
TABLET & SMARTPHONE APPS
E-Mail Benachrichtigung
Benachrichtige mich zu:

Hinweis: Dieser Artikel ist älter als ein Jahr, enthaltene Informationen sind möglicherweise veraltet.

0 Kommentare
Älteste
Neuste Beste Bewertung
Inline Feedbacks
Alle Kommentare anzeigen
Nach oben