Buchtipp: Beginning Linux Programming - Second Edition

ArticleCategory: [Es gibt verschiedene Artikel Kategorien]

Software Development

AuthorImage:[Ein Bild von Dir]

[Photo of the Author]

TranslationInfo:[Autor und Übersetzer]

original in en Katja Socher 

en to de Katja Socher 

AboutTheAuthor:[Eine kleine Biographie über den Autor]

Katja ist die deutsche Redakteurin von LinuxFocus. Sie wurde zum Linuxbenutzer als sie vor ein paar Jahren Gimp kennenlernte. Ihre Homepage findest du hier.

Abstract:[Hier sollte eine kleine Zusammenfassung stehen]

Dies ist eine Buchbesprechung des Buches:
Beginning Linux Programming - Second Edition,
geschrieben von Richard Stones und Neil Matthew,
erschienen bei Wrox press

ArticleIllustration:[Das Titelbild des Artikels]

[tuxreading]

ArticleBody:

Das Buch

"Beginning Linux Programming - Second Edition" ist eine Einführung in die Linuxumgebung für erfahrene C-Programmierer, die schon über ein grundlegendes Wissen über Linux verfügen. Das Buch beschreibt die Konzepte und Ideen, die die Linuxumgebung für Programmierer zu bieten hat und führt den Leser außerdem in einige ausgezeichnete Programmierwerkzeuge ein, die unter Linux verfügbar sind, wie Perl, Tk oder Gtk+.

[Book cover] Durch den Kauf des Buches bekommt man nicht nur ca. 2kg Papier, sondern auch jede Menge Informationen über eine große Reichweite an Themen. Es ist kein Buch für Anfänger, sondern ein "Anfang" zu einem weiten Spektrum an Konzepten und Werkzeugen, die unter das Gebiet Linuxprogrammierung fallen. Jedes Kapitel gibt eine tiefgreifende Einführung, so daß man nach dem Lesen schon eine ganze Menge über das Thema weiß und in der Lage ist, viele Aufgaben damit zu lösen. Natürlch ist man nach dem Lesen in keinem der Themen ein Experte, aber oft reicht das erworbene Wissen völlig aus und man ist auf jeden Fall in der Lage, sich durch Lesen der man pages oder anderer Dokumentation weiterzuhelfen, die viel aktueller ist, als es ein Buch über ein sich so schnell erneuerndes Thema jemals sein kann.

Die Autoren geben uns einen Einblick, was mit einem speziellen Werkzeug am besten gemacht werden kann und wo jedes Werkzeug besonders gut und effizient ist. Man bekommt Ideen, was möglich ist und man weiß, welche Werkzeuge man benutzen muß und wo man anfangen muß, tiefer zu graben, um die benötigten Lösungen zu finden.

Man bekommt einen guten Überblick über die vielfältigen Möglichkeiten, die man als Programmierer unter Linux hat und kann dann entscheiden, welches Thema mehr Zeit verdient, welches die größte Relevanz für einen hat, so daß es ein weiteres Studieren verdient, damit man darin ein echter Experte wird.

Obwohl es nur ein Einstieg ist, enthält es so viel, daß man es nach dem Lesen immer wieder als Nachschlagewerk benutzen wird, um nach Lösungen für Programmierungsprobleme zu suchen oder danach, wie sie umgesetzt werden können.

Es ist eindeutig ein "Programmierer an Programmierer" Buch, wo zwei sehr erfahrene Linuxprogrammierer ihr Wissen mit anderen Programmierern teilen. Sie tun dies mit einer ganzen Menge an "Probier es aus" Beispielen, die sie sehr detailliert erklären. Durch diese Beispiele kommt man viel leichter in das Material herein und versteht, wie die erklärten Ideen und Konzepte praktisch angewendet werden können. Oft wirst du feststellen, daß du ihre Beispiele für deine Programme übernehmen kannst oder nur ein paar kleine Änderungen vornehmen mußt. Ich habe die Beispiele für mein Verständnis und Erforschen des Materials wirklich sehr begrüßt .

Zusätzlich zu den vielen Beispielen in jedem einzelnen Kapitel entwickeln die Autoren durch das gesamte Buch hindurch eine CD-Anwendung, wo die neu erlernten Konzepte implementiert werden und im Verlauf wird die Applikation immer mehr erweitert und verbessert. Ich weiß eine vollständig geschriebene Anwendung wie diese, die auch wieder detailliert erklärt wird, sehr zu schätzen.


Zusammenfassung

Das Buch beginnt mit einer kurzen Einführung darüber, was Linux und seine Philosophie ist und wie man C und seine Bibliotheken unter Linux benutzt, bevor es einen Abstecher zur Shellprogrammierung macht. Nachdem einige allgemeine Shell-Konzepte vorgestellt werden (wie redirection und pipes), führt uns das Buch in die Shell als Programmiersprache ein und die Konzepte z.B. von Variablen, Bedingungen, Programmsteuerung, Listen, Funktionen und "here dokumentes" werden erklärt.

Kapitel 3 erklärt das Linuxkonzept von Dateien, wo alles, sogar Hardwaregeräte, als Dateien abgebildet werden. Es beginnt mit low-level Systemcalls und im Verlauf des Kapitels fahren die Autoren damit fort, die Standard I/O Bibliothek zu erläutern.

Kapitel 4 betrachtet die Linuxumgebung. Die Autoren sprechen z.B. über Kommandozeilenargumente und Umgebungsvariablen, mit denen man das Default-Verhalten eines Programms verändern kann. Sie zeigen außerdem, wie ein Programm die Bibliotheksfunktionen benutzen kann, um die Datums- und Zeitwerte zu manipulieren sowie Informationen über sich, den Benutzer und den Computer, auf dem es läuft, zu bekommen.

Das nächste Kapitel ist über Terminals und verschiedene Aspekte, wie das Terminal gesteuert werden kann. Nach dieser Einführung in Terminals lernen wir die Curses Bibliothek kennen, die einen graphischen Weg bietet, um Ausgaben auf dem Terminalfenster anzuzeigen.

Kapitel 7 über Datenverwaltung spricht über dynamische Speicherverwaltung, file locking und das Locken von Bereichen von geteilten Dateien und gibt schließlich eine Einführung in die dbm Datenbank.

In Kapitel 8 werden Entwicklungswerkzeuge vorgestellt, die die Entwicklung und Verteilung von Programmen verwaltbar machen. Zuerst werden make und makefile zur Verwaltung verschiedener Quelldateien erklärt, bevor die Quellcodesteuerung betrachtet wird, für die RCS und CVS benutzt werden. Schließlich werden patch, tar und gzip erwähnt, die für das Verteilen und Updaten von Programmen benutzt werden.

Kapitel 9 behandelt das Debuggen. Nachdem über generelle Debugtechniken gesprochen wurde, wird der GNU debugger gdb vorgestellt. Statische Analysewerkzeuge wie cflow und lclint werden ebenfalls angesprochen. Schließlich werden Electric Fence und Checker erwähnt, zwei Programme, die helfen können, einen Speicherüberlauf zu verhindern.

Kapitel 10 handelt von Prozessen und Signalen, die fast alle Aktivitäten, die von einem Linuxcomputersystem ausgeführt werden, steuern. Es beginnt mit der Prozesstruktur und macht dann weiter mit dem Erklären wie neue Prozesse mit dem Fork System Call gestartet werden können. Dann wird die Programmschnittstelle für Signale dem Leser mit einigen Beispielen vorgestellt.

Kapitel 11 geht über Posix Threads. Es beginnt mit dem Erklären des Unterschieds zu Prozessen und stellt dann mutexes und semaphores vor, die gebraucht werden, um komplexere multithread Programme zu schreiben.

Die nächsten Kapitel handeln von der Kommunikation zwischen Prozessen. Zuerst werden Pipes erklärt. Es werden normale unbenannte Pipes, benannte Pipes (FIFOs) und wie Daten zwischen Programmen, die nicht miteinander in Beziehung stehen, weitergegeben werden können, diskutiert.

Dann werden semaphores, shared memory und message queues behandelt. Semaphores werden benötigt, um den gleichzeitigen Zugriff von zwei Prozessen auf einen kritischen Abschnitt zu vermeiden und werden für die Benutzung von shared memory gebraucht, was einen effizienten Weg zum Teilen und Weiterleiten von Daten zwischen mehreren Prozessen darstellt. Message queues stellen einen verhältnismäßig einfachen und effizienten Weg dar, um Daten zwischen zwei Prozessen, die nicht miteinander in Beziehung stehen, weiterzuleiten.

Schließlich werden Sockets erklärt, die wie Pipes benutzt werden können, aber auf einem Netzwerk laufen.

Kapitel 15 behandelt Tcl, die Tool Command Language. Die Autoren sprechen z.B. über die Befehle und Steuerungsstrukturen, Zeichenketten und Listen in Tcl, Eingabe und Ausgabe sowie Tclerweiterungen und -anwendungen.

Nach einem kurzen Überblick über X lernen wir im nächsten Kapitel Tk kennen, das graphische Toolkit von Tcl. Wir werden in die vielen Widgets, die Tk bietet, eingeführt, wie frames, labels, buttons, boxes, scrollbars, scales, text und canvas. Ein Beispiel eines aus 15 Teilen bestehenden Puzzles wird gegeben und die Konzepte von menus, dialoges, color schemes, fonts, binding, geometry management und focus und navigation werden erklärt.

Als nächstes lernen wir Gnome und GTK+ kennen. Wir hören über Gnomearchitektur, den Gnomedesktop und Programmierung für Gnome, wobei GTK+ benutzt wird und lernen dann das GTK+ Widgetset kennen. Die Möglichkeiten sind enorm und sogar noch größer als unter Tk. Die Autoren entwickeln auch eine Anwendung für Gnome: eine analoge Gnomeuhr.

Das nächste Kapitel ist eine sehr kurze Einführung in die grundlegende Perlprogrammierung.

Kapitel 19 lehrt die Grundlagen von HTML und dient als Hinführung zu CGI-Programmierung, die im folgenden Kapitel behandelt wird. Dort besprechen die Autoren, wie man die Formen in HTML erstellt, die auf der Clientseite gebraucht werden und dann, wie die Informationen zum Server übertragen, in C oder Perl dekodiert werden und dynamisch zurück an den Client antworten.

Das Buch endet mit einem Kapitel über Gerätetreiber, das einen Überblick darüber gibt, wie sie geschrieben werden. Es spricht z.B. über Charakter- und Blockdevices sowie darüber, wie man Code im Kernel debuggen kann.


Wenn du ein Systemadministrator, ein Programmierer oder ein echter Linuxfan bist, wird dir das Buch sicherlich gefallen.