Seite 1 von 2

Neue Einführung in Python

Verfasst: Freitag 30. Januar 2009, 16:31
von bychan
Als ob es nicht schon genug Einführungen in Python gibt :wink:
Aber immer wieder macht sich jemand dran eine Neue zu schreiben.
Diesmal war ich es selbst. Ich habe ziemlich viel Arbeit reingesteckt und hoffe nun, das das Ergebnis vielen nützlich sein wird:
http://www.python-kurs.eu/
Was noch zu bemerken ist: Ich bin immer noch dabei, diese Seite auszubauen, d.h. es werden noch mehr Themen dazu kommen.
Ich freue mich auf euren Besuch und eure Kommentare.
Viel Spaß,
Bernd

Verfasst: Freitag 30. Januar 2009, 16:41
von veers
Python ist nach Monthy Python benannt nicht nach der Schlangenart. ;)

- Jonas

Verfasst: Freitag 30. Januar 2009, 16:56
von bychan
Steht im Text!

Verfasst: Freitag 30. Januar 2009, 17:02
von BlackVivi
Deine Literaturempfehlungen sind nicht so toll =/ Da fehlt das offizielle Pythontut, Byte of Python und Dive into Python... Und noch andere. Außerdem stehen einige Bücher dabei, die nicht so das wahre sind.

Als Beispielcode find ich Fakultät zwar schön und elegant, aber es ist rekursiv. Rekursion und Python ist so'ne Sache =/ Man erreicht schnell das Limit, es ist nicht besonders flott... Vielleicht einen anderen Code nehmen.

Re: Neue Einführung in Python

Verfasst: Freitag 30. Januar 2009, 17:34
von numerix
bychan hat geschrieben:Als ob es nicht schon genug Einführungen in Python gibt :wink:
Aber immer wieder macht sich jemand dran eine Neue zu schreiben.
Diesmal war ich es selbst. Ich habe ziemlich viel Arbeit reingesteckt und hoffe nun, das das Ergebnis vielen nützlich sein wird:
http://www.python-kurs.eu/
Was noch zu bemerken ist: Ich bin immer noch dabei, diese Seite auszubauen, d.h. es werden noch mehr Themen dazu kommen.
Ich freue mich auf euren Besuch und eure Kommentare.
Viel Spaß,
Bernd
Fleißig warst du auf jeden Fall. Farblich angenehm abgestimmt und vom Layout her hochwertig. Allerdings halte ich das für ein Tutorial nur für untergeordnet wichtig. Was mir wichtiger wäre:
- Quelltext deutlicher hervorgehoben, am besten auch Schlüsselwörter markiert
- Wenn schon zum jetzigen Zeitpunkt ein Tutorial, dann doch zu Python 3.0 oder zumindest mit Hinweisen zu Unterschieden.
- Druckfreundliche Fassung - manchmal ist es schön, etwas auf dem Papier zu haben und mal nicht vor dem Bildschirm hockend zu lernen

Insgesamt ist mir auch zu viel "außen" herum, was vom eigentlichen ablenkt.

Verfasst: Freitag 30. Januar 2009, 17:38
von Leonidas
BlackVivi hat geschrieben:Deine Literaturempfehlungen sind nicht so toll =/ Da fehlt das offizielle Pythontut, Byte of Python und Dive into Python... Und noch andere. Außerdem stehen einige Bücher dabei, die nicht so das wahre sind.
Das Umfassende Handbuch kann man vergessen (da würde ich eher zum vergleichbaren Praxisbuch greifen, das ist zwar teurer und (dafür?) dicker und nicht ganz son falsch).

Einführung in Python kann ich eigentlich auch nicht mehr empfehlen. Die neuese Ausgabe ist viel zu viel "Blabla" und zu wenig guter Code. Das was man da lernt, kann man verlustfrei in 200 Seiten unterbringen.

Ansonsten: die Navigation ist bischen uneinsichtig, ich habe auf Literatur geklickt und wusste nichtmal wie es weitergeht.

Der Zen sollte nach jeder Aussage einen Zeilenumbruch haben. So ist das nur ein seltsamer Text.
Dennoch sind Assoziationen mit Schlangen möglich und sinnvoll: Man denke nur an das Python-Toolkit "Boa" oder die Programmiersprache Cobra.
Was hat Cobra mit Python zu tun? Es hat eine Python-ähnliche Syntax, aber das hat Boo auch. Und wie diese Assoziation sinnvoll ist? Man könnte auch sagen, die Assoziation zu Schlangen ist sinnvoll um Corba zu verstehen, weil es etwas wie Cobra klingt.

Der Abschnitt hat einen zu großen Fokus auf Guido. Ja, es stimmt dass er bei Google arbeitet, aber die Weiterentwicklung von CPython wird hauptsächlich von anderen Leuten getragen.

Blöcke: Nettes Bild.
Variablen: Python hat keine Variablen und das was Python hat sind auch keine Container oder Schubladen für Werte. Kaum eine moderne Sprache hat "Variablen".

Auslesen aus einer Datei: da würde man keinen Zähler, sondern ``enumerate()`` verwenden. Beim ``picklen`` unter umständen die Datei im Binär-Modus öffnen, BlackJack meint dass das binär ist (allerdings scheint die Stdlib-Doku dazu nichts zu sagen)

``.sl`` sind Python-Module? Das ist mir nicht bekannt, auf welcher Platform wäre das?

Ansonsten: Klammern um Bedingungen bei ``if`` sind nicht nötig und verbessern die Lesbarkeit nicht, Leerzeichen um Operatoren schon (wie eben PEP8 das so definiert).

Verfasst: Freitag 30. Januar 2009, 18:11
von bremer
Mal was zum Webdesign:
  • Die Seite ist zu unordentlich strukturiert. Überall tauchen wahllos Zitate auf, sprengen dabei noch die Höhe des Inhalts. Die willkürlich eingestreuten orangenen Boxen ergeben ebenfalls keinen Sinn.
  • Die Navigation sollte einem eher "ins Auge fallen". Der obige Banner ist hässlig.
  • Es handelt sich bei weitem nicht um valides XHTML 1.0 transitional.
    http://validator.w3.org/check?uri=http% ... ne&group=0
  • Syntaxhighlighting wäre wünschenswert.
Die Basis ist schonmal gut. Es muss nur noch ein bisschen reifen.

Verfasst: Freitag 30. Januar 2009, 18:15
von bychan
Vielen Dank schon mal für die vielen Anregungen.
"A Byte of Python" und "Dive into Python" sind Bücher, die ich sehr schätze. Der Grund, weshalb ich sie nicht aufgenommen habe, bestand darin, dass ich mich auf deutsche Literatur beschränken wollte. Ich selbst lese gerne und bevorzugt englische Bücher, aber ich weiß, dass es viele Python-Interessierte gibt, die kein oder nur unzureichend Englisch können. Aber ich habe die beiden Bücher nun dennoch aufgenommen. Die Kritik an "Einführung in Python" werde ich auch noch einbauen.

Die Kritik am Zen ist richtig. Ich will ihn eigentlich noch an eine andere Stelle verschieben, so gefällt es mir auf jeden Fall auch nicht. Wie gesagt, die Seite ist noch ganz neu ....

Verfasst: Freitag 30. Januar 2009, 18:20
von Leonidas
ABOP gibt es ja auch auf deutsch, von dem her sehe ich kein Problem.

Verfasst: Freitag 30. Januar 2009, 19:07
von lunar
Leonidas hat geschrieben:allerdings scheint die Stdlib-Doku dazu nichts zu sagen
Natürlich sagt die Doku etwas zu verwendeten Datenformat:
By default, the pickle data format uses a printable ASCII representation.[...]
A binary format, which is slightly more efficient, can be chosen by specifying a protocol version >= 1.
Ich denke, es sollte offensichtlich sein, dass man binäre Daten (sofern man dieses Protokoll nutzt) mit "rb" und "wb" bearbeiten sollte.
Auch nutzen die Beispiele durchweg "rb" bzw "wb".

Verfasst: Freitag 30. Januar 2009, 19:09
von Leonidas
lunar hat geschrieben:Ich denke, es sollte offensichtlich sein, dass man binäre Daten (sofern man dieses Protokoll nutzt) mit "rb" und "wb" bearbeiten sollte.
Auch nutzen die Beispiele durchweg "rb" bzw "wb".
Ich habe BlackJack so verstanden dass auch das "ASCII"-Format dass da verwendet wird eben kein Text ist.

Sonst wäre es ja klar.

Verfasst: Freitag 30. Januar 2009, 20:45
von BlackJack
Das Problem beim "Textformat" sind die Zeilenenden. Wenn man das nicht im Binärformat macht, dann kann man Pickledateien zum Beispiel nicht zwischen Windows und *nix austauschen, weil's dann kracht.

Verfasst: Sonntag 1. Februar 2009, 00:12
von nomade
BlackJack hat Recht.

Verfasst: Sonntag 1. Februar 2009, 00:52
von derdon
nomade hat auch Recht.

Verfasst: Sonntag 1. Februar 2009, 00:56
von BlackJack
derdon hat ebenfalls recht. :-)

Verfasst: Sonntag 1. Februar 2009, 11:35
von EyDu
nomade hat geschrieben:BlackJack hat Recht.
Das hatten wir doch schonmal per Definition geklärt :wink:

Verfasst: Sonntag 1. Februar 2009, 16:16
von HerrHagen
Bei mir sind alle Code-Schnipsel auf deiner Seite in Großbuchstaben und somit auch nicht ausführbar.

Python Praxisbuch

Verfasst: Donnerstag 19. Februar 2009, 12:59
von farid
Leonidas hat geschrieben:(da würde ich eher zum vergleichbaren Praxisbuch greifen, das ist zwar teurer und (dafür?) dicker und nicht ganz son falsch).
Vielleicht waere es sinnvoller gewesen es in zwei Teile aufzusplitten. Also Teile I und II als ein Band, und Teil III als ein weiterer Band. Na ja, im Falle einer eventuellen 2ten Auflage, waere es eine Ueberlegung wert. ;)

Verfasst: Donnerstag 26. Februar 2009, 23:07
von vicbrother
Schade dass auch dieser Kurs den aus meiner Sicht schlechten Lernansatz wählt. Ich suche ein Tutorial/Buch, welches aus objektorientierter Sicht in die Sprache einführt, also Konzepte der Objektorientierung und das Herumspielen mit class und . Die Vorteile sind m.E.:

- Es wird nicht sofort gecodet sondern erstmal der wirklich wichtige "TopDown-Objekt" Blick eines Programmiers gelehrt.

- Objektorientierung ist das derzeit meistverwendete Programmierparadigma und bietet einen hohen Wiedererkennungswert, wenn der Schüler sich bestehende Programme zu Lernzwecken ansieht.

- Andere Programmierparadigmen (insb. imperative und funktionale) führen ohne Übrung häufig zu undurchsichtigeren Code und verleiten zu schnellen Hacks.

- Beim Lernen in programmierunerfahrenen Gruppen haben auch Anfänger leichteren Zugang zu Materie da es keine reine Syntax-Diskussion geben kann und die Fortgeschrittenen lernen ggf. sogar was neues.

Nach Einführung der Objektorientierung werden dann Methoden eingeführt, welches ebenfalls Vorteile hat. Ein print("Hello World") als erstes Programm führen bei gängigen Lehrwerken schon Methoden ein die damit ein Vorgriff auf weitere Lehrinhalte darstellen.

Danach sollte man meiner Meinung nach in Pseudecode Algorithmen formulieren, um auch hier ein Verständnis von Sprachen zu haben.

Danach führt man dann die Syntax ein und zäumt so das Pferd von hinten auf.

Verfasst: Freitag 27. Februar 2009, 00:08
von BlackJack
Dein dritter Punkt gilt genauso für OOP. Wer keine Übung hat kann damit genauso, wenn nicht sogar "besser", undurchsichtigen Quelltext und üble Hacks schreiben, wie mit imperativer oder funktionaler Programmierung. Wobei man in Python nicht ohne imperativer Programmierung auskommt, denn die hat man ja parallel zu OOP. Die beiden schliessen sich ja nicht gegenseitig aus. Jede ``for``- oder ``while``-Anweisung ist letztendlich imperative Programmierung.

OOP ist kein Allheilmittel und wenn man gleich mit Klassen anfängt, müssen die Beispiele auch hinreichend komplex sein, also eventuell zu viel für Anfänger. Denn trivialen Kram in Klassen zu stecken, nur um der Klassen wegen, ist kein OOP, sondern nur unnötig kompliziert -- Funktionen als Methoden verkleidet.

Insbesondere für ein "Hello, World!"-Programm ist eine Klasse der totale Overkill, und lehrt damit etwas IMHO grundfalsches. Dafür sind Klassen nicht gedacht, weil sie absolut keinen Vorteil bringen. So lernt man nicht so einfach wann der Einsatz von Klassen und OOP sinnvoll ist, und wann nicht.

Und letztendlich sind in Python auch Module mit Funktionen objektorientiert, ohne das man ``class`` schreiben muss, denn ein Modul mit Funktionen ist ein Singleton-Objekt, das man sich mit ``import`` erstellen bzw. das einzige existierende davon Exemplar in den Namensraum holen kann.