« Battlefield 2 Patch 1.5 ist rausLinuxfeeling unter Windows »

Python machts mir schwer

01.09.09 | von hoergen [mail] | Kategorien: Programme, Linux

PythonIch programmiere von Zeit zu Zeit ganz gerne. Früher hatte ich mal einen Basic Kurs und ein Jahr später habe ich mir dann selber x86er Assembler beigebracht. Dann folgte Turbo Pascal, RexX und schliesslich C. Seit Jahren programmiere ich so für meine Bedürfnisse kleine Applikationen mit php und MySQL. Ab und zu kommt dann noch die eine oder andere Skriptsprache dazu, weil sie eben mal gebraucht wird.
Und immer mal wieder will ich Python lernen. Mehre Bücher habe ich schon und auch die Online Doku liegt standardmäßig auf meiner Platte.
Also was hält mich ab Python zu lernen. Die Antwort ist relativ simpel: Die Dokumentation ist meines Erachtens richtig schlecht.
Letztens brauchte ich mal eben schnell wieder ein neue Skriptsprache, weil ein Kunde unter Windows einige Spezialwünsche hatte. Dabei bin ich auf Autoit gestossen. Ok, der Vergleich ist nicht ganz fair, wenn man die Möglichkeiten beider Skriptsprachen vergleicht, aber im Endeffekt würde das nur die Dicke (Kilobyte) des Handbuchs beeinflussen.
Ich finde Python einfach sehr klasse. Mir gefällt das Konzept und mir gefällt es, dass diese Sprache so viele Möglichkeiten bietet, aber wenn ich stundenlang in der Doku nach einer Lösung suche und erst durch weiteres Suchen im Internet irgendwann mal fündig werde, dann ist das sehr ermüdend und hilft meiner Motivation nicht wirklich. Um mal eine winzigen Vergleich zwischen der Dokumentation von Autoit und Python zu geben. In Auotit ist immer ein Beispielquellcode bei dem Befehl dabei. Bei Python muss ich meistens irgendwelche Foren absuchen, um ein kleines Praxisbeispiel zu finden. Und wenn mal ein Beispiel dabei ist, dann ist das meist nicht wirklich Praxisnah. Einfach mal beide Dokumentationen vergleichen, dann wird einem sehr schnell klar was ich meine.

Gibt es vielleicht eine alternative Dokumentation für Autodidakten wie mich?

Nachtrag aus den Kommentaren für weitere Pythondokumentationen

Das Script
Das Ergebnis in Form eines Skriptes.

24 Kommentare

Kommentar von: Betz Stefan [Besucher] E-Mail · http://blog.stefan-betz.net
Nun, ich bin bestimmt kein "Power-Coder", dennoch finde ich das die Dokumentation von Python gut ist. Sehr gut wäre übertrieben, aber gut ist sie wirklich.

Natürlich gibt es aber auch Maintainer die Libraries rausbringen die eben überhaupt nicht Dokumentiert sind, das ist aber nicht das Problem einer Programmiersprache.

mfg Betz Stefan
01.09.09 @ 22:17
Kommentar von: stein [Besucher] E-Mail
Ich kann deine Erfahrungen nicht teilen...

Hast du eventuell ein Beispiel, wo die online-Dokumentation "versagt" hat?
01.09.09 @ 22:20
Kommentar von: Ice Polar [Besucher] E-Mail
Guckst Du: http://fullcirclemagazine.org/issue-27/
und: http://fullcirclemagazine.org/issue-28/

Nur mal so als erstes, ist halt englisch...
01.09.09 @ 22:23
Kommentar von: Ice Polar [Besucher] E-Mail
Hi,
als da wären noch die Bücher von Swaroop CH.
In Google zu finden unter byte of python pdf.
"byteofpython_120"
"byte_of_python_v191*

Viel Spass bei der Lektüre
Ice
01.09.09 @ 22:29
Kommentar von: Ice Polar [Besucher] E-Mail
Moin, moin,

Einen hab' ich noch, zu finden auf http://diveintopython.org/

Ich muss sagen, ich habe mich auch schon mit vielem herumgeschlagen, BASIC, PASCAL, COBOL, ASSEMBLER und jetzt geht es mir ähnlich wie Dir; Gerne würde ich wieder ein bisschen Programmieren und zwar mit PYTHON, aber der Einstieg will mir nicht recht gelingen...
Ich bin gespannt, wenn's hier auf dem Blog wieder einen Update zu diesem Thema gibt...
Viel Glück
Ice
01.09.09 @ 22:33
Kommentar von: burli [Besucher] · http://www.embedit.de
Hm, ich muss dir Zustimmen, die original Doku von Python ist etwas spartanisch. Ich hab das meiste auch aus Büchern, Beispielen oder Foren.

Die von PHP finde ich aber auch nicht viel besser. Vielleicht etwas übersichtlicher, aber auch nicht wirklich ausführlich.
01.09.09 @ 23:04
Kommentar von: Bart [Besucher] E-Mail · http://my.opera.com/area42
Also Python ist doch super dokumentiert ( http://www.python.org/doc/ ) aber vielleicht hast Du die Ansätze etc. nicht ganz verstanden. Python ist wirklich sehr einfach zu verstehen. Einen Einstieg findest Du hier:
http://www.html.de/tutorials/11224-python-einstieg-leicht-gemacht.html

http://openbook.galileocomputing.de/python/python_kapitel_01_001.htm#mj67a594b305e4109145454ddc0d55999c
01.09.09 @ 23:21
Kommentar von: hoergen [Mitglied] E-Mail · http://blog.hoergen.org
Vielen Dank für die vielen Links. Das Pythonbuch, von dem ich viel halte und mein ständiger Begleiter bei meinen Pythonanfällen ist heisst "Objektorientierte Programmierung mit Python" von Michael Weigend. Tolles Buch.

Die Dokumentation von Python ist gut, aber meines Erachtens zum Lernen nicht wirklich gut strukturiert. Man muss genau wissen was man suchen muss, ansonsten ist es ein Stochern im Nebel. Kleine Hinweise, Hyperlinks zu verwandten Funktionen, wären gut. Ein bisschen vergleichbar ist es, wenn man bei dem Editor VIM nach Copy und Paste sucht. Man muss wissen, dass copy in VIM yank heisst.

Das sind solche Einsteigerhürden, die meines Erachtens komplett unnötig sind. Python ist großartig und ich will nicht akzeptieren, dass so eine "Kleinigkeit" Hürden aufbaut, die es eigentlich nicht geben sollte.
01.09.09 @ 23:54
Kommentar von: burli [Besucher] · http://www.embedit.de
Bei dem Galileo Openbook muss man vorsichtig sein. Vor allem der Teil über Objektorientierung ist sehr umstritten.

Da wird viel geschrieben, was nicht der Python Philosophie entspricht. Es gibt z.b. keine Setter und Getter in Python, dafür aber ein Property. Trotzdem werden erstmal Setter und Getter beschrieben.

Aber nicht alles ist schlecht in dem Buch
02.09.09 @ 00:04
Kommentar von: mich [Besucher] E-Mail
Ja, auch ich kenne das Problem.
Ich habe mit PHP angefangen zu Programmieren, deren Doku habe ich lieben gelernt.
Gerade die Auteilung und Struktur in der man sich gut zurecht findet (Bsp: "Strings" -> Alle Stringfunktion mit wenigen Worten erklärt->Link zur Funktion mit weiteren Erklärungen und Beispielen)

Sicher ist das SO nicht für Python umsetzbar, gerade wegen den vielen Modulen etc. Aber wünschen würde ich es mir doch!

Eine Projektidee?
02.09.09 @ 01:53
Kommentar von: mich [Besucher] E-Mail
PS: Aber hier immer mal einen Blick und Fragen hineinwerfen! http://wiki.python.de/IRC%20Channel
02.09.09 @ 01:55
Kommentar von: hoergen [Mitglied] E-Mail · http://blog.hoergen.org
Achja ein Beispiel:

Datei öffnen schreiben schliessen.

http://docs.python.org/library/functions.html#open
Fehlt ein link auf write und ein Link auf wie man die Datei wieder schließt. Das findet man erst, wenn man FileObjects sucht und dort dann auf file.close() stösst.
02.09.09 @ 01:57
Kommentar von: Matthias [Besucher] E-Mail
Es ist ja ein freies Projekt. Vielleicht kann man selber zur Verbesserung der Dokumentation beitragen und falls das nicht so leicht möglich ist, bei Projekten wie http://de.wikibooks.org/wiki/Python-Referenz mitwirken.
02.09.09 @ 06:47
Kommentar von: Funatiker [Besucher] E-Mail · http://sunjy.de/
php.net ist eine wirklich ausführliche, gut sortierte Dokumentation. Ich kenne kaum eine Dokumentation einer anderen Programmiersprache, die da mithalten kann. Für den Einstieg in Python gibt es eine sehr hilfreiche Dokumentation unter http://sunjy.de/

Solltest du eher Gespräche bevorzugen, kannst du dies über die Jabber-Konferenz chat@conference.python.de tun (:
02.09.09 @ 07:26
Kommentar von: Tempura [Besucher] E-Mail
Pythons Dokumentation ist von Technikern, richtig. Sie ist dabei genauso gut oder schlecht wie andere (gut Dokumentierte) Projekte. Mag sein das der Einstieg für Laien schwieriger ist, aber im grunde ist alles da was man braucht.

Zum beispiel bei dem open-Beispiel: Du musst da nicht nach FileObjects suchen, das ist bereits im ersten Satz verlinkt.

Gut, natürlich könnte man das alles noch mehr vereinfachen und zugänglicher machen. Aber: wie überall mangelt es bei Dokumentation Freier Projekte schlichtweg an mangelnder Unterstützung durch passende Leute mit entsprechenden Ideen.

Schreib dein Problem an die Verwalter von Python.org, am besten mit alternativen Lösungen, vielleicht bringt es ja was und es findet sich jemand der die Doku anpasst.
02.09.09 @ 08:44
Ich glaube dein Hauptproblem ist, die Dokumentation von Python als Einführung in die Sprache zu verwechseln. Die Dokumentation auf docs.python.org hat aber meines Erachtens viel mehr Referenz-Charakter.

Bei deinem open()-Beispiel sieht man, genau was ich meine. Die gesamte Semantik des open-builtins wird in aller Ausführlichkeit referenzartig dargelegt. Wer mehr wissen will, sollte dann halt den ersten Satz lesen: "Open a file, returning an object of the file type described in section File Objects."
02.09.09 @ 09:51
Kommentar von: stein [Besucher] E-Mail
Zu Deinem Beispiel: Einfach nach "Python file io" suchen... Dann findet sich das da: http://docs.python.org/tutorial/inputoutput.html

Und so ist eigentlich die gesamte Standard-Bibliothek dokumentiert. Sogar Module wie "mail", die man eigentlich weniger oft braucht.
02.09.09 @ 10:14
Kommentar von: frosch [Besucher] E-Mail
Ich stimme dir da zu auch viele funktionen sind nicht logisch benannt. Darum bin ich nach Jahren Python auf Ruby umgestiegen. Ruby bietet eine super dokumentation wie z.b. unter http://www.ruby-doc.org/core/

Ich finde auch das ein Großteil der Befehle in Python nicht erratbar sind und daher schwer zu merken, wie z.b. Länge eines strings:

Python: len("abc")
Ruby: "abc".length oder "abc".size

Gerade das macht Ruby aus weil egal ob man von Perl, Python oder Java kommt man wird immer wieder auf alte bekannte treffen und den Grossteil der Befehle erraten können, da es mehr Wege gibt.

In Python gibt es übrigens auch help() das sollte eigentlich für das meiste reichen an Dokumentation, wenn einem der Name klar ist ...
02.09.09 @ 10:57
Kommentar von: Christian [Besucher] E-Mail
Ich denke der OP verwechselt hier etwas: Eine Dokumentation hat nichts mit einem Tutorial zu tun!

Dafür gibt es aber auch ein imho exzellentes direkt in die Doku integriert.

Desweiteren gibt es bei vielen Modulen immer kleine aber feine Beispiele: Mir fallen da die urllib2, json oder itertools Module auf Anhieb ein.
02.09.09 @ 12:14
Kommentar von: noisefloor [Besucher] E-Mail
Dem Punkt mit der Doku stimme ich in so fern zu, dass es bei Einsteigern IMHO 100% stimmt.

Die Python-Doku ist in Sachen Vollständigkeit 1A, keine Frage. Aber wenn man nicht mit Python vertraut ist, kommt man damit nicht klar, weil: keine Beispiele.

BTW, "gelernt" habe ich Python mit "A Byte of Python" und dem Buch "Python ge-packt". :-)
02.09.09 @ 21:08
Kommentar von: hoergen [Mitglied] E-Mail · http://blog.hoergen.org
Für dieses bisschen Code habe ich mindestens 5 Stunden gebraucht, die Python Doku gewälzt, mein Pythonbuch durchgesucht, das Internet umgewälzt und viel Try and Error mit Hilfe von Foren ausprobiert.

Das Skript soll nichts anderes machen, als in einem bestimmten Verzeichnis und allen Unterverzeichnissen nach Dateien suchen, die eine bestimmte Endung haben. Das Ergebnis soll in eine Liste gespeichert werden und dann ausgegeben werden.

5 Stunden sind einfach zu lange, um es als Spaß zu bezeichnen.

#!/usr/bin/python

import os

def findeDateien(Pfad, Endung):
# Aufruf findeDateien('/home/hoergen','.mp3')
dateiListe = []
for root, dirs, files in os.walk(Pfad):
for fname in files:
name, ext = os.path.splitext(fname)
ext = ext.lower()
if ext == Endung:
dateiListe.append(root+fname)

return dateiListe


def ausgabeListe(Liste):
# Aufruf ausgabeListe(DListe)
for Elemente in Liste:
print Elemente


DListe = findeDateien('/home/hoergen','.mp3')
ausgabeListe(DListe)
02.09.09 @ 21:10
Kommentar von: Ice Polar [Besucher] E-Mail
...Wenn der Script nach 5 Stunden funktioniert, dann ists doch gut.
DER WEG IST DAS ZIEL!

Ich glaube auch, dass man sich da zuerst der Lernkurve beugen muss bis aus sowas vielleicht mal ein 5 Minuten-Projekt wird.

Jetzt nur nicht den Mut verlieren und auch nicht den Spass.
Ice
02.09.09 @ 21:51
Kommentar von: hoergen [Mitglied] E-Mail · http://blog.hoergen.org
Was mich jetzt noch interessieren würde, welche Programmier-Editoren benützt ihr?

Ich benutze im Moment Komodo Edit. Da ich python nicht in mein Php-Eclipse integriert bekommen habe. Eric startet bei mir zur Zeit erst gar nicht (Kubuntu 9.04).
03.09.09 @ 00:29
Kommentar von: Christian [Besucher] E-Mail
@OpenBook: Könntest Du den Link dazu evtl. wieder entfernen? Das Buch sollte einfach nicht empfohlen werden, da es inhaltliche Fehler hat.
Ich empfehle Dir das Python-Forum (www.python-forum.de), in dem gibt es zig Threads zu diesem Buch. Nebenbei ist es generell eine gute Anlaufstelle für Fragen und Lösungen :-)

Ich nutze einfach nur Kate.

Unter Windows habe ich auch schon mal mit dem PyDev-Plugin von Eclipse gearbeitet.
03.09.09 @ 10:57

Einen Kommentar hinterlassen


Ihre E-Mail-Adresse wird nicht auf dieser Seite angezeigt.

Ihr URL wird angezeigt.
SchlechtExzellent
(Zeilenumbrüche werden zu <br />)
(Name, E-Mail-Adresse & Webseite)
(Benutzern erlauben, Sie durch ein Kontaktformular zu kontaktieren (Ihre E-Mail-Adresse wird nicht weitergegeben))