Liebe Listenmitglieder,
 
mit großem Interesse habe ich die Diskussion über mein neues Buch "Objektorientierte Programmierung mit Python" gelesen. Ich habe sie per Zufall im Archiv der Mailingliste (4. Quartal 2003) gefunden (http://starship.python.net/pipermail/python-de/2003q4/thread.html#4385). 
 
Vielleicht interessien Sie einige Anmerkungen und Hintergrundinformationen des Autors.
Ich nehme die "Intialisierungsmail" des Diskussionsfadens von  Klaus Meyer als Ausgangspunkt.
 
>>> Das Buch "Objektorientierte Programmierung mit Python" hat knapp 600
Seiten. Das Layout ist übersichtlich und klar, das Inhaltsverzeichnis
ausführlich. Der Index scheint mir etwas knapp zu sein. <<<
 
MW: Ich glaube auch, dass ein guter Index ein wichtiges Qualitätsmerkmal ist und werde ihn bei der Zweitauflage gründlich überarbeiten und -soweit es der Verlag mir erlaubt - erweitern. Mit über 900 Stichwörtern hat der Index von "OOP mit Python" aber durchaus einen Umfang, der bei Lehrbüchern dieser Art üblich ist.

>>> Etwa die Hälfte des Buches ist eine Einführung in Python (es wird schon V
2.3 verwendet), wobei der Autor einen Schwerpunkt "auf die Erarbeitung von
Konzepten der Objektorientierung" gelegt haben will.
In der zweiten Hälfte wird relativ ausführlich Tkinter behandelt, außerdem
einige andere Themen, zB CGI-Programmierung, Internet, Datenbanken,
Threads, Fehlerbehandlung usw...
Außer den unvermeidlichen Listings enthält das Buch auch einige erklärende
Grafiken, einfache UML-Diagramme und einige EBNF-Grammatiken zur Syntax
von Python. <<<
 
MW: Das Buch soll eine Einführung in die Objektorientierte Programmierung sein, also damit auch eine Einführung in die Programmierung als solche. Und damit müssen auch Konzepte wie Operatoren, Kontrollstrukturen etc.  besprochen werden, die nichts "spezifisch objektorientiertes" in sich bergen. Die "richtige" objektorientierte Programmierung beginnt ja eigentlich erst dann, wenn man eigene Klassen definiert. Damit beginnen wir in der Mitte des Buches. Im ersten Teil werden nur vorgegebene Klassen verwendet. Ich habe Wert darauf gelegt, von Anfang an die Begrifflichkeit der Objektorientierten Programmierung möglichst sauber zu verwenden. So ist die Rede von "Objekten der Klasse File", der Begriff des "Datentyps"  wird in Beziehung zum Begriff der "Klasse" gesetzt, wir gehen auf die Identität von Objekten ein, es werden Methoden von String- oder Dictionary-Objekten verwendet ..., um nur einige wenige Beispiele zu nennen. Insofern zieht sich die objektorientierte Denkweise wie ein roter Faden durch das ganze Buch - auch im ersten Teil.
 

>>> Der Autor pflegt einen sachlichen Still, die Beispiel, soweit ich sie mir
angesehen habe, wirken aber etwas "hölzern", so wie man sie aus manchen
Schulbüchern kennt. Jedes Kapitel hat am Schluß einen Aufgabenblock und
die Lösungen gibt es auch gleich dahinter. <<<
 
MW: Ich glaube, ich habe so eine ungefähre Ahnung, was mit "hölzern" gemeint ist, vielleicht: nüchtern, ohne Verzierungen ... Grundsätzlich: Ein Lehrbuch lebt von guten Beispielen.  Ich habe versucht, die Beispiele thematisch so zu wählen, dass sie reale Anwendungsfelder der Informatik berühren. Auf der anderen Seite sollten die Listings möglichst kurz und übersichtlich bleiben, um eine optimale Lesbarkeit zu gewährleisten. Bei der Entwicklung der Beispiel war es manchmal so, dass der erste Entwurf vielleicht fünf Seiten Programmtext umfasste, dann immer weiter gekürzt und auf das Wesentliche reduziert wurde, bis dann am Ende nur noch eine Seite übrig blieb.  Beim Leser sollte die Idee entstehen, dass man das Beispielprogramm zu etwas wirklich Brauchbaren weiterentwickeln könnte.
 
>>> Auf Grund des Titels hätte ich ein Buch erwartet, welches schon von
Python-Grundkentnissen beim Käufer ausgeht und nun die ganzen
Besonderheiten der "Objektorientierung" vertieft. Der Autor mag die
"Objektorientierung" mehr im Fokus haben, als das in anderen Büchern der
Fall ist, aber im Grunde scheint es mir im wesentlichen eine allgemeine
Einführung in Python (+ einiger Python-Libs wie zB Tkinter) zu sein. <<<
 
MW: Viele Universitätscurricula gehen so vor. Zuerst ein Kurs über (imperative) Grundkonzepte der Programmierung, dann ein Fortgeschrittenenkurs über OOP. Wir haben versucht, sowohl (ambitionierte) Einsteiger als auch Fortgeschrittene anzusprechen. (So steht es übrigens auch auf dem Buchumschlag) Das bedeutet aber auch (wie schon gesagt), dass zunächst grundlegende Konzepte  angesprochen werden, die für Fortgeschrittene vielleicht stellenweise langweilig sind.  Allerdings habe ich auch schon von erfahrenen Programmierern gehört, dass sie auch im ersten Teil des Buches etwas dazu gelernt hätten :-)
 
>>> Obwohl schon Pyton V2.3 verwendet wird, werden neue Python Funktionen -
wie zB Generatoren - nicht behandelt.
 
MW: Das Buch sollte maximal 600 Seiten haben. Es mussten also Schwerpunkte gesetzt werden. Ein Zusatzkapitel ist noch auf der CD. Aber viele spezielle Themen fielen dem "Rotstift" zum Opfer, darunter etwa die Anbindung von Python-Skripten an MySQL-Datenbanken und C-Programme, XML, Generatorfunktionen, Iteratoren etc. Um die Generatorfunktionen tut es mir schon deswegen Leid, weil ich jahrelang an einem Lehrstuhl gearbeitet habe, bei dem das Rechnen mit unendlichen Objekten ein zentrales Forschungsgebiet war.

>>> Zum Schluß noch eine merkwürdige Sache (die wohl kein Zufall sein kann!):
In allen Programmen werden keine Umlaute verwendet und es gibt auch keine
tieferen Informationen zum Thema Unicode (trotz eines eigenen Kapitels
über Zeichenketten)! Überall werden die Umlaute konsequent umschrieben
(ae, ue usw.). Beim Buch ist auch eine CD dabei, auf der alle
Beispielsourcen enthalten sind. Ich habe die durchsucht, keine Umlaute!
Warum das so ist, weiß ich nicht, aber gerade über Unicode hätte ich mir
ein ausführliches Kapitel gewünscht. <<<
 
MW: Entscheidend für mich ist die Lesbarkeit von Programmbeispielen. Deshalb habe ich die Umlaute und ß meist umschrieben. Beachten Sie: Listings in einem Buch sind Texte, die gelesen werden.
Es bereitet einfach gr\xf6\xdfere M\xfche einen Text zu lesen, in dem Nicht-ASCII-Zeichen durch Escape-Sequenzen codiert sind.
Zum Thema Unicode: Ich hatte gedacht, mit einer Seite die Essentials ausreichend gut behandelt zu haben. Aber interessant zu erfahren, dass hier mehr Information gewünscht wird.
 
Soweit meine Anmerkungen.
Wenn Sie Fehler finden oder sonstige kritische Kommentare haben, können Sie mir auch gerne direkt schreiben.
Es wird in Kürze auf der Web-Site von mitp eine Errata-Seite zu diesem Buch angelegt.
 
 
Frohe Weihnachten und alles Gute im Neuen Jahr
 
Michael Weigend
 
 
 
michael.weigend@fernuni-hagen.de