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.