Archiv für Mai, 2009

Rezension: Coding for Fun

Posted in IT on Mai 12, 2009 by echofalko

Verlag: Galileo Computing, 2008
Diesen Artikel schrieb ich für freiesmagazin.
Womeringer möchte, dass der Leser allen Ernstes Spaß mit dem Computer hat. Dies ist kein Widerspruch. Mit dem nötigen mathematischen und technischen Hintergrundwissen ausgerüstet, tritt der Leser eine Reise durch die Geschichte der Programmierung an und stößt dabei auf ungewöhnliche, nostalgische, lehrreiche oder auch einfach nur unterhaltsame Programme, die stets zum Nachmachen und Mitmachen einladen.

cover

Allgemeines

Zum Lieferumfang des über 500 Seiten starken Softcover-Buches gehört eine umfangreiche Begleit-DVD, die alles nötige beinhaltet, um die vorgestellten Programme selbst auszuprobieren und weiterzuentwickeln. Auf der DVD befinden sich u.A. Quelltexte, vorkompilierte Programmbeispiele, hilfreiche Tools für die Erstellung von Diskettenabbildern, FreeDOS und die Desktop-CD von Ubuntu. Letztere entspricht in der ersten Auflage leider noch der Version 7.10, sodass man mittlerweile lieber eine aktuellere Version installieren sollte. Es sei noch angemerkt, dass einige mitgelieferte Programme als .exe vorliegen, und damit eine fehlerfrei Ausführung mit Wine nicht immer garantiert ist.
Neben den vielen anschaulichen Beispielen zu nahezu jedem Programmierparadigma, vermittelt der Autor zunächst unabdingbares theoretisches Wissen. Hier wird auch die eigentliche Zielgruppe bereits deutlich: Ohne Interesse an Mathematik und Technik wird man an diesem Buch wohl keine Freude haben, obwohl der Titel und die jungen Menschen auf dem Cover vielleicht den Eindruck eines jugendfreundlichen Buches vermitteln. So wird der Leser bereits im ersten Abschnitt mit vermeintlichen Schreckgespenstern aus der theoretischen Informatik wie der Turing-Maschine, der Turing-Vollständigkeit oder dem Gödelschen Unvollständigkeitssatz konfrontiert. Die Erläuterungen sind gemessen an der Kürze der Ausführungen aber schlüssig, logisch und auch für Hobbyisten nachvollziehbar, wobei im gesamten Buch auf mathematischen Formalismus wohlwollend verzichtet wird. Der Gebrauch von einschlägigen Tools zur Virtualisierung wird dringend empfohlen und ist im Anhang des Buches freundlicherweise genau beschrieben, sodass hier keine Vorkenntnisse nötig sind. Die Gratwanderung zwischen Einsteigerfreundlichkeit und Anspruch versucht der Autor durch Kenntlichmachung von einzelnen Abschnitten zu meistern. Es werden Abschnitte für Kenner mit einem Pacman und Abschnitte für Könner, etwas humoristisch, mit einem Geist gekennzeichnet. So kann man getrost mal einen Abschnitt überspringen, dem man sich nicht gewappnet fühlt, um an späterer Stelle noch einmal zurückzukommen. Zwischendurch dienen immer wieder Abschnitte über die geschichtliche Entwicklung der Auflockerung.

BASIC und Assembler

Die Zeitreise beginnt mit der Sprache BASIC. Hierzu bedient man sich zunächst eines virtuellen DOS, welches man zuvor z.B. mit VirtualBox angelegt hat. Hier erlent man spielerisch das GOTO-Prinzip und bekommt einen großen Happen Nostalgie und ein Erfolgserlebnis als Belohnung. Als nächstes kann man mit dem Emulator x64 die alten Zeiten richtig wieder aufleben lassen und mit dem legendären Commodore 64 samt eingebautem BASIC-Interpreter Retroluft schnuppern. Eine Laufschrift und eine grafische Spielerei mit geometrischen Figuren werden hier vorgestellt, anhand derer man den Umgang mit zählenden Schleifen lernt.

Wer sich schon immer einmal mit seiner CPU unterhalten wollte, erhält eine kleine Einführung in die Assembler-Programmierung. Auch hier nutzen wir wieder eine virtuelle DOS-Machine und einen mitgelieferten hübschen grafischen Debugger, der es uns ermöglicht, Schritt für Schritt einzelne Befehle auszuführen. Dabei hält uns die mehrfach geteilte Ansicht stets auf dem Laufendem was den Stack, die nächsten Befehle und die Register angeht.

Wer den letzten Satz nicht vollständig verstanden hat, ist genau auf dem richtigen Wissensstand für dieses Kapitel. Die wichtigsten Befehle und Register werden erklärt, wobei die Erläuterung des Stacks, dessen Verständnis unabdingbar ist, leider kaum angerissen wird. Hier sind also Vorkenntnisse, oder die Bereitschaft sich über das Buch hinaus mit diesem Thema zu beschäftigen nötig.

Spiele und bunte Landschaften

Selbstverständlich kommen die von so vielen Menschen geliebten Computerspiele nicht zu kurz. Hier ist der erste Halt der Klassiker Pong. Während die Urfassung noch in Hardware realsiert war, wird uns hier der komplette Quellcode als Java-Projekt für die Entwicklungsumgebung Eclipse zur Verfügung gestellt. Etwas verruchter wird es beim Spiel „Hack The Game V. 1.21“. Hier kann man seine kriminelle Energie entladen und Daten von fremden Hosts stehlen, löschen und weitere Schandtaten begehen. Auf alle Fälle ein sehr unterhaltsames Spiel, das trotz der eindeutigen Ziele des Protagonisten pädagogisch wertvoll ist, da man beinahe zwangsläufig langjährige virtuelle Haftstrafen antreten muss. Für Grafikinteressierte ist auch eine Anleitung für das Tool Blender, sowie ein Programmbeispiel in Java3D gegeben.

Das Apfelmännchen und das Chaos

Besondere Erwähnung gebührt dem Abschnitt über Fraktale. Neben der durchaus lesenswerten Erklärung dieser Muster mit Selbstähnlichkeiten und Skaleninvarianzen, wird auf das Programm <> verwiesen, welches man als Mathematik- und/oder Kunstfreund nicht auslassen sollte. Alternativ kann man auch die neuste Version direkt von der Projektseite kostenfrei herunterladen. Es bietet sehr aufschlussreiche Präsentationen zu diesem Thema und eine verblüffende Zoom-Funktion für die angezeigten Fraktale. Dies schafft einen nahtlosen Übergang zu rekursiven Programmen, die beispielhaft anhand eines kleinen Java-Programms vorgestellt werden, welches ein einfaches Fraktal mit erstaunlich wenig Code erzeugt. Könner werden auch eingeladen, ihre eigenen Visualisierungen mit Java zu realisieren. Was zunächst wie eine Spielerei wirkt, ist in der Realität Grundlage dafür, naturgegebene Strukturen in Programmen nachzubilden und aus der heutigen Informatik nicht mehr wegzudenken.

Betriebssysteme – Vergessene Legenden

Beim Thema Betriebssysteme wird etwas weiter ausgeholt. Mit einem flüssig zu lesenden Abriss über die Geschichte erhält man Einblicke in längst vergessene Kapitel, insbesondere der GUI-Historie. Oberflächen wie Smalltalk 80, GEM (zum ausprobieren auf der DVD mitgeliefert) oder das Echtzeitsystem QNX werden vorgestellt. Über den C64 bis zu modernen Linux-Distributionen (als Beispiel wird Ubuntu vorgestellt) erhält man einen Überblick über die Entwicklung von Betriebssystemen und der Programmiersprachen, die mit den Systemen einhergingen. Besonders anschaulich ist ein in Java implementierter Netzgraph, der die Verwandtschaftsbeziehungen zwischen den Prorgammiersprachen verdeutlicht.

KI – Ist Skynet möglich?

Der Traum vom denkenden Rechner ist noch älter als die Informatik. Dieses Kapitel bringt dem Leser die unterschiedlichen Ansätze näher, mit denen man versucht, schwache oder gar starke künstliche Intelligenzen zu erzeugen. Die Simulation von neuronalen Netzen wird unter anderem anhand des Tools MemBrain erklärt. Hiermit kann man beispielsweise einem Sytem aus nur sechs Neuronen Wissen antrainieren, welches auf Abfrage auch korrekt wiedergegeben wird. Mit einer solchen assoziativen Speicherung erhält man sogar Antworten auf Fragen, die dem System nie explizit beigebracht wurden. Die Antwort lässt sich nicht vorhersehen. Hier liegt die Analogie zum menschlichen Verstand: Wissen wir etwas nicht, so versuchen wir Schlüsse zu ziehen. Hier ist also sehr viel Spielraum für weiterführende Experimente mit diesem Tool. Eine andere Herangehensweise bieten die vorgestellten Programmiersprachen Smalltalk, Lisp und Prolog. Letztere gibt beispielsweise die Möglichkeit, eine Wissensbasis mit allgemein gehaltenen Aussagen zu schreiben, anhand derer dann konkrete Fragen an das Programm gestellt werden können. Hier ergeben sich allerdings keine unvorhersehbaren Antworten, da z.B. durch Rekursion oder Backtracking so lange Aussagen abgeleitet werden, bis eine verlässliche Antwort gefunden ist, oder bis die Unmöglichkeit einer verlässlichen Antwort bewiesen ist. Anschaulich dargestellt: Wenn ich nur weiß, dass die Straße immer glatt ist, wenn sie kälter als 0°C ist, kann ich stets bejahen, dass die Straße glatt ist wenn es friert. Andererseits kann ich nicht mit Sicherheit sagen ob es friert, nur weil die Straße glatt ist.

Programmieren lernen

Der letzte Abschnitt ist eine Einführung in die Programmierung in der Sprache BASIC mit Hilfe der unfreien Entwicklungsumgebung VB Express von Microsoft. Anhand eines Ameisenvolkes kann man spielerisch mit der Umgebung und der Sprache vertraut werden. Praktischerweise liegt das umfassende Buch „Visual Basic 2005“ als html Version bei, sodass man sich tiefgründig mit der Sprache auseinandersetzen kann.

Fazit

Womeringer überzeugt mit guter Auswahl seiner Beispiele und mit einem sehr flüssigen Schreibstil. Man lässt sich gern mit auf die Reise nehmen und möchte alles ausprobieren und verstehen. Dies wird aber leider nicht jedem gelingen. Die Materie ist durchaus anspruchsvoll und nicht immer einsteigerfreundlich. Für den ambitionierten Einsteiger, der bereits wenigstens eine moderne Programmiersprache in Grundzügen verstanden hat, beiten sich Herausforderungen, die ihn stets fordern. Experten der Programmierung finden zumindest spannende Beispiele in ungewohnten Gefilden, die ihnen vielleicht bis dato verborgen blieben. Anfänger können angesichts der Fülle an thematisch völlig unterschiedlichen Kapiteln leicht den Überblick verlieren. Auch die Tatsache, dass die Kapitel nie erschöpfende Ausführungen enthalten, tragen hierzu bei. Man darf aber nicht vergessen, dass das Buch nicht den Anspruch hat ein Lehrbuch zu sein. Dazu treffend im Vorwort:

Es wäre schön, wenn sich Leser finden würden, die das Buch als Sammlung von Anregungen verstehen.

Erfahrenen Linux-Benutzern könnte noch negativ auffallen, dass von den 573 Seiten stolze 182 auf den Anhang fallen, der Anleitungen zur Installation von VirtualBox, Xen, FreeDOS, Ubuntu, Java und weiterer Software enthalten. Für weitere Informationen und Leseproben bietet sich ein Besuch der Seite des Verlages an.

Advertisements