Kritik/Fehler im Python Openbook zusammenfassen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
burli
User
Beiträge: 1156
Registriert: Dienstag 9. März 2004, 18:22

Hi,
das Python Buch von Galileo wir ja häufig kritisiert. Es wäre vielleicht mal interessant zu wissen was genau eigentlich falsch ist und wie es korrekt wäre. Ein Errata habe ich dazu allerdings noch nicht gefunden.

Könnte man das vielleicht mal an dieser Stelle machen? Eigentlich ist das Buch ja nicht schlecht und das mit Abstand umfassendste kostenlose Werk (in deutsch)
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

burli hat geschrieben:Hi,
das Python Buch von Galileo wir ja häufig kritisiert. Es wäre vielleicht mal interessant zu wissen was genau eigentlich falsch ist und wie es korrekt wäre. Ein Errata habe ich dazu allerdings noch nicht gefunden.

Könnte man das vielleicht mal an dieser Stelle machen? Eigentlich ist das Buch ja nicht schlecht und das mit Abstand umfassendste kostenlose Werk (in deutsch)
Guck mal hier:
http://www.python-forum.de/topic-13008.html

Und hier - insbesondere der lange Beitrag von BlackJack:
http://www.python-forum.de/topic-13797,30.html
Benutzeravatar
birkenfeld
Python-Forum Veteran
Beiträge: 1603
Registriert: Montag 20. März 2006, 15:29
Wohnort: Die aufstrebende Universitätsstadt bei München

"Eigentlich nicht schlecht"? Erinnert mich an Eva Herman...

Errata wären hier sinnlos: die korrigieren normalerweise Tippfehler, keine grundsätzlichen Fehler im logischen und thematischen Aufbau. Da ist es leichter, ein neues Kapitel zu schreiben.
Zuletzt geändert von birkenfeld am Sonntag 10. August 2008, 20:51, insgesamt 1-mal geändert.
Dann lieber noch Vim 7 als Windows 7.

http://pythonic.pocoo.org/
burli
User
Beiträge: 1156
Registriert: Dienstag 9. März 2004, 18:22

Zusammengefasst lese ich immer die gleiche Kritik. __init__() ist kein Konstruktor, __del__() ist nicht zuverlässig, Setter und Getter sind Unfug, 2 Unterschriche machen keine Private Member usw.

Alles OOP. Das Buch hat aber noch ein paar Kapitel mehr

EDIT: in A Byte of Python steht:
Anmerkung für C++/Java/C#-Programmierer
Die Methode __init__ entspricht einem Konstruktor in C++, C# oder Java.
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

burli hat geschrieben:Zusammengefasst lese ich immer die gleiche Kritik. __init__() ist kein Konstruktor, __del__() ist nicht zuverlässig, Setter und Getter sind Unfug, 2 Unterschriche machen keine Private Member usw.

Alles OOP. Das Buch hat aber noch ein paar Kapitel mehr

EDIT: in A Byte of Python steht:
Anmerkung für C++/Java/C#-Programmierer
Die Methode __init__ entspricht einem Konstruktor in C++, C# oder Java.
Das liest sich für mich auch anders als "__init__()" IST ein Konstruktor.
Der Bezug zu Java etc. dient doch dazu, jemandem, der mit diesen Sprachen vertraut ist, beim Verstehen von Python zu helfen. Und in der Praxis (jedenfalls in meiner) ist es ja in der Tat so, dass man __init__() WIE einen Konstruktor verwendet. Ein explizites __new__() habe ich noch nie benötigt.

Was das Openbook angeht, so wäre eben abzuwägen, ob man ein Buch, das in wichtigen Teilen (dazu zähle ich OOP, auch wenn man in Python nicht dazu gezwungen wird) schwere Mängel enthält und nach Einschätzung von eingefleischten Pythonics (dazu zähle ich mich ausdrücklich nicht) die Sprache Python nicht ihrem eigentlichen Wesen gemäß darstellt, empfehlen sollte - auch wenn es kostenlos ist.
Benutzeravatar
BlackVivi
User
Beiträge: 762
Registriert: Samstag 9. Dezember 2006, 14:29
Kontaktdaten:

Es entspricht dem, weil die Funktionalität und die Einsatzzwecke identisch sind, jedoch ist es grundsätzlich vom Aufbau her unterschiedlich.

Allgemein ist der Stil des Buches in anderen Kapiteln ein wenig unpythonisch. Auch die Reihenfolge wie gelehrt wird mag ich nicht sonderlich, aber das ist vielleicht ein wenig subjektiv. Das Beispiel unter Exception Handling find ich ein wenig unnütz und nicht wirklich natürlich... Niemand schreibt eine Funktion ``get(lst, n)``... Oder "eigene Exception"... da wird "DivisionByZero" gewählt, dass gibts doch schon. Die Beispiele sind allgemein nicht so super...

Außerdem ist OOP wohl eines der wichtigsten Kapiteln für Anfänger, meiner Meinung nach.
burli
User
Beiträge: 1156
Registriert: Dienstag 9. März 2004, 18:22

Ich finde das jetzt ein wenig Haarspalterisch. In A Byte of Python (was durchaus schon empfohlen wurde) steht zb auch drin das man mit einem doppelten Unterstrich Variablen und Methoden (praktisch) eine Variable machen kann und das "die __del__-Methode dem Konzept eines Destruktors entspricht.". Private Variablen stehen sogar im Tutorial auf python.org.

Grundsätzlich falsch kann es also nicht alles sein, nur eben häufig nicht "pythonisch".

Das sie verschweigen das der "Destruktor" nicht sofort sondern irgendwann aufgerufen wird kann man allerdings schon kritisieren. Mit Setter und Getter anzufangen um dann auf Properties zu kommen ist wohl auch eher der Versuch Umsteiger von anderen Programmiersprachen den Umstieg zu erleichtern.

Aber was ich mit diesem Post eigentlich erreichen wollte: ich will wissen wo sonst noch gravierende Fehler stecken. Speziell ab Kapitel 15 wäre das interessant da das Buch derzeit das einzige kostenlose deutschsprachige Material (zumindest in dem Umfang in einem Band gesammelt, von einzelnen verstreuten Tutorials mal abgesehen) zu Themen wie parallele Programmierung usw bietet. Publikationen wie A Byte of Python hören an der Stelle halt auf. Die meisten dieser Themen findet man sonst nur auf englisch.
Nocta
User
Beiträge: 290
Registriert: Freitag 22. Juni 2007, 14:13

Würde eigentlich eine reelle Chance bestehen, dass das OpenBook, wenn wir zu den "falschen" Kapiteln eine Korrektur zusammenstellen, geändert wird?
Den Thread könnte man in's OT setzen und dann dort ein paar dinge Diskutieren, die man ändern sollte.
Diese Dinge, die geändert werden müssen, werden wir vereint ja wohl noch Stichwortartig zusammenbekommen.
Dann müsste sich nur noch jemand dransetzen (oder auch mehrere) und die Kapitel entsprechend bearbeiten oder gegebenenfalls ganz ersetzen.
Imo auf ein ganzes Forum verteilt keine allzu aufwendige Aufgabe.

Ich fände es toll, wenn man dann endlich mal ein Buch uneingeschränkt, vorallem kostenlos empfehlen könnte.
Vielleicht weiß ja jemand, wie die da auf Korrekturen reagieren.
Immerhin steht da schonmal eine Aufforderung, Feedback zu geben.
Wie hat Ihnen das <openbook> gefallen? Wir freuen uns immer über Ihre freundlichen und kritischen Rückmeldungen.
BlackJack

@burli: `__del__()` kann auch *gar nicht* aufgerufen werden.
burli
User
Beiträge: 1156
Registriert: Dienstag 9. März 2004, 18:22

BlackJack hat geschrieben:@burli: `__del__()` kann auch *gar nicht* aufgerufen werden.
Du meinst diese Zeile?
It is not guaranteed that __del__() methods are called for objects that still exist when the interpreter exits.
Im gleichen Absatz steht aber auch
__del__( self)
Called when the instance is about to be destroyed. This is also called a destructor.
@Nocta: es gibt viele Bücher die von Auflage zu Auflage korrigiert und ergänzt werden. Es besteht zumindest die Chance das diese groben Schnitzer behoben werden. Aber nur wenn man etwas unternimmt. Ich hab leider zu wenig Ahnung um da mitreden zu können. Deshalb hatte ich hier gehofft mehr über die Fehler zu erfahren
BlackJack

@burli: Den Satz meinte ich plus die Objekte mit `__del__()`-Methode, die in einem Referenzkreis stecken und vom Garbage Collector nicht abgeräumt werden.

Das die Doku `__del__()` als Destruktor bezeichnet heisst nicht, dass man von ihm das deterministische Verhalten von Destruktoren in C++ erwarten kann. Und der Buchtext liesst sich im OOP-Kapitel sehr stark danach, dass dort C++-Programmierer am Werk sind, die sich mit Python nur oberflächlich auseinander gesetzt haben. In C++ werden Destruktoren sehr häufig benutzt -- wenn man solche Praktiken auf Python überträgt, schreibt man recht unzuverlässige Programme, deshalb gehört IMHO zu `__del__()` immer die Warnung, dass es im Grunde unbenutzbar ist, wenn da etwas wirklich wichtiges drin stehen soll.
LivingOn
User
Beiträge: 33
Registriert: Montag 11. August 2008, 07:53

Hallo Nocta,
Nocta hat geschrieben: Vielleicht weiß ja jemand, wie die da auf Korrekturen reagieren.
Immerhin steht da schonmal eine Aufforderung, Feedback zu geben.
mit dem Feedback ist es meiner Erfahrung nach nicht weit her. Ich habe mir dieses Buch als Python-Einsteiger auch "angetan" und nach den ersten Kapiteln schon einige Schreibfehler mittels Feedback gepostet ==> Null Reaktion <==

Nach der Lektüre von "Dive Into Python" von Mark Pilgrim sehe ich nun aber auch schon den ein oder anderen Kritikpunkt. Etwas falsch zu lernen kann unter Umständen schädlicher sein, als es überhaupt nicht zu erlernen.

<Vorschlag>
Auch wenn alles wissenswertes hier bereits im Forum (verstreut) vorliegt, wäre meiner Ansicht nach eine "Kurzzusammenfassung von empfehlenswerter Literatur" am Anfang überaus sinnvoll. Der Beitrag sollte nur vom Moderatur bearbeitbar sein und mit Hilfe eines "Sticky's" als erster Beitrag fest verankert werden (wenn möglich).
</Vorschlag>
burli
User
Beiträge: 1156
Registriert: Dienstag 9. März 2004, 18:22

@ BlackJack: Ich stimme dir zu. Allerdings müsste man an dieser Stelle dann auch "A Byte of Python" kritisieren. Die warnen zwar davor das man nicht garantieren kann "wann" __del__() aufgerufen wird, aber nicht davor das es in gewissen Situationen gar nicht aufgerufen wird. Und sie schreiben "dass die __del__-Methode dem Konzept eines Destruktors entspricht."

Lange Rede, kurzer Sinn. es gibt praktisch kein deutschsprachiges Material das umfangreich UND pythonisch ist (mit Umfangreich meine ich alles was über die Grundlagen der Sprache hinaus geht). Ich sehe nur zwei Möglichkeiten dem Abhilfe zu schaffen, bestehendes Material versuchen zu korrigieren oder selber schreiben. Nur Kritisieren bringt nicht viel
Benutzeravatar
Whitie
User
Beiträge: 216
Registriert: Sonntag 4. Juni 2006, 12:39
Wohnort: Schulzendorf

Hallo alle zusammen,
ich werfe mal noch drei deutschsprachige Projekte ein, wo Korrektur und Mitarbeit deutlich einfacher sind:
http://de.wikibooks.org/wiki/Python-Programmierung
http://de.wikibooks.org/wiki/Python_Referenz
http://de.wikibooks.org/wiki/Python_unter_Linux

Vielleicht ist da was dabei, wo man eine gute (pythonische) Basis schaffen kann.

Gruß
Whitie
Benutzeravatar
birkenfeld
Python-Forum Veteran
Beiträge: 1603
Registriert: Montag 20. März 2006, 15:29
Wohnort: Die aufstrebende Universitätsstadt bei München

burli hat geschrieben:Lange Rede, kurzer Sinn. es gibt praktisch kein deutschsprachiges Material das umfangreich UND pythonisch ist (mit Umfangreich meine ich alles was über die Grundlagen der Sprache hinaus geht). Ich sehe nur zwei Möglichkeiten dem Abhilfe zu schaffen, bestehendes Material versuchen zu korrigieren oder selber schreiben. Nur Kritisieren bringt nicht viel
Wir kritisieren ja nur, weil ständig neue Leute auftauchen und das Openbook anpreisen.

Es gibt übrigens noch eine dritte Möglichkeit: Englisch lernen. Ja, das ist nicht so einfach, aber wer ernsthaft mit Python programmieren will, muss zumindest auch die Library Reference lesen und verstehen können.
Dann lieber noch Vim 7 als Windows 7.

http://pythonic.pocoo.org/
burli
User
Beiträge: 1156
Registriert: Dienstag 9. März 2004, 18:22

birkenfeld hat geschrieben: Es gibt übrigens noch eine dritte Möglichkeit: Englisch lernen. Ja, das ist nicht so einfach, aber wer ernsthaft mit Python programmieren will, muss zumindest auch die Library Reference lesen und verstehen können.
Logisch, aber es fällt ja wohl leichter die englische Referenz zu lesen wenn man überhaupt erstmal weiß wovon die Rede ist. Wenn man bei Null anfängt und Englisch nur durchschnittlich kann macht es das ungleich schwerer
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Meine Kritik zum Modulkapitel wo sie Module in verschiedene Kategorien einteilen (die es so nicht gibt) ist übrigens immer noch gültig.

Letztendlich würde auch ich den birkenfeld-Ansatz empfehlen. Denn ganz ehrlich, Computerbücher haben eine einfachere Sprache als irgendwelche Prosa und das was man an Englisch gelernt hat, das kann einem auch bei anderen Sachen nützlich sein, wie etwa dem Lesen von Tutorials oder Dokumentation zu Modulen die eben nicht vom Openbook abgedeckt sind.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
uwe_holst
User
Beiträge: 12
Registriert: Samstag 26. Februar 2005, 06:25

Siehe

http://www.python-forum.de/topic-13008,15.html

ist das noch das gleiche Buch, das hier kritisiert wird?

Nein ich bin nicht der Autor, mir ist nur aufgefallen, daß das was ich vor einem Jahr runtergeladen (und dann auf diesen u.a. Threads hin ignoriert habe) etwas anders aussieht.

Gruß - Uwe
lunar

Die kritisierten Stellen zumindest haben sich nicht verändert. Das Buch empfiehlt auch in seiner jetzigen Form noch allerlei Dinge, die ich als unpythonisch erachten und in meinem Code so nie implementieren würde.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Ein weiterer Kritikpunkt kommt dazu, da Django 1.0 inkompatibel zu dem ist, was im Buch steht. Meiner Meinung nach ist es generell nicht so schlau in ein Einsteigerbuch eine Beschreibung von etwas zu geben was die Version 1.0 noch nicht erreicht hat, im Wandel ist und wo immer behauptet wurde, dass sich bis 1.0 noch einiges ändert.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Antworten