Python 2 oder Python 3 lernen?

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.
Jooohny.py
User
Beiträge: 6
Registriert: Dienstag 3. Mai 2011, 14:54

Hallo,

vorab ich habe die Suchfunktion und Google schon durch,
und mir ist bewusst das es die Frage schon zugenüge gibt aber ich muss sie noch einmal stellen :(

Ich wollte Python lernen um damit meine Webseiten zu programmieren,
aber trotzdem noch die möglichkeit zuhaben um Server oder Destopanwendungen zu programmieren.

Ich hatte so unerfahren wie ich war erstmal ein Python Buch gekauft was die Version 2.5 erklärt,
ich wollte aber die aktuelle Version(3x) erlernen also habe ich mir ein neues Buch gekauft (Einstieg in Python 3),
jetzt sehe ich aber das es trotz 2 Jahren Python 3x immer noch Probleme gibt die Version einzusetzen(Mysql etc).

Darum meine Frage:
Muss ich jetzt 2 Jahre nach Python 3x immer noch die Version 2x lernen damit ich vernünpftige Webseiten programmieren kann?

Auf ein Framework bin ich nicht zwangsläufig angewiesen, wäre aber schön wenn es da schon was gutes gibt, und natürlich muss ich eine sehr schnelle Schnittstelle haben wie FastCGI oder mod_python oder WSGI was sagt ihr dazu?

Edit:
Mysql brauch ich natürlich auch!

mfg.Jooohny.py :roll:
BlackJack

@Jooohny.py: Ich würde erst einmal bei 2.x bleiben.

Hast Du das hier gelesen: http://wiki.python.org/moin/Python2orPython3 ?
sttrader
User
Beiträge: 53
Registriert: Dienstag 12. Januar 2010, 11:22
Kontaktdaten:

Das Unterschreibe ich bleib vorerst auch bei der 2er ;-)

LG ST
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Du kannst auch schauen ob du "Einstieg in Python 3" zurückgeben kannst. Die Python-Bücher von Galileo Computing haben keinen besonders guten Ruf, ich weiß aber nicht wie gut oder schlecht dieses Buch ist.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

Python 3 ist die bessere Sprache. Doch leider hat man beim Auftrennen von Zeichenketten (Datentyp str) und Byte-Arrays (Datentyp bytes) bei der Python-Webserver-Schnittstellen-Spezifikation WSGI einige Fehler begangen und so funktioniert das nicht wirklich für Python 3. Zudem ist Python 2.x für viele alt eingesessene Python-Projekte gut genug und so streben nicht etwa alle Python-Entwickler zur neuen Version, sondern beharren auf die bewährte 2.x-Version.

Inzwischen hat man die Spezifikation von WSGI für Python 3.x repariert und ich hätte gedacht, dass die nächste Version von Python, die nächsten Monat erscheinen soll, diese reparierte Version enthält, doch dafür fand ich jetzt keinen Beleg. Sollte das stimmen, dann würde ich wie folgt argumentieren:

Wer neu anfängt und die Sprache lernen will, sollte Python 3 benutzen. Für kleine Web-Projekte reicht das alle mal. Bottle sagt, es unterstützt schon 3.x und Flask verspricht auf seine Homepage, ebenfalls 3.x zu unterstützen, sobald WSGI repariert wurde. Und wenn Google das im Rahmen ihres Sommerstudenten-Programms fördert, soll auch Django portiert werden (obwohl, daran glaube ich nicht, das die das schaffen). Für die typische Home-Page reicht zudem sqlite als DB, wenn man überhaupt eine braucht. Damit umgeht man alle Treiberprobleme. Weitere Bibliotheken sind in der Regel unnötig.

Was Desktop-Programme angeht, weiß ich nicht, wie der Stand ist. Wahrscheinlich bescheiden. Aber da ist sowieso meine Meinung, dass das eine aussterbende Technologie ist und man 90% dieser Anwendungen auch in Form von (lokalen) Webanwendungen realisieren kann. Und wenn das Argument nicht gilt, dann postuliere ich eben gleich das Aussterben vom Desktop selbst. Leute, baut Anwendungen für mobile Geräte, die Zukunft heißt Tablet :)

Stefan
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

sma hat geschrieben: Für die typische Home-Page reicht zudem sqlite als DB, wenn man überhaupt eine braucht. Damit umgeht man alle Treiberprobleme. Weitere Bibliotheken sind in der Regel unnötig.
Es gibt für MySQL ein rein auf Python basierendes DB-Mpdul, welches Python3 unterstützt.
sma hat geschrieben: Was Desktop-Programme angeht, weiß ich nicht, wie der Stand ist. Wahrscheinlich bescheiden.
Qt steht in Form von PyQt und PySide komplett für Python3 bereit. Bei Gtk weiß ich das nicht.
sma hat geschrieben: Aber da ist sowieso meine Meinung, dass das eine aussterbende Technologie ist und man 90% dieser Anwendungen auch in Form von (lokalen) Webanwendungen realisieren kann. Und wenn das Argument nicht gilt, dann postuliere ich eben gleich das Aussterben vom Desktop selbst. Leute, baut Anwendungen für mobile Geräte, die Zukunft heißt Tablet :)
Und ein Tablet hat keinen Desktop mehr? Was ist ein Desktop überhaupt? ;-)
Nuja, man kann sich da vortrefflich streiten. Ich halte den Plasma-Ansatz für sehr gut. Da ist es ziemlich wurscht, wofür man seine App baut - der Formfaktor bestimmt dann das Layout je nach Gerät.
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Hyperion hat geschrieben:
sma hat geschrieben: Was Desktop-Programme angeht, weiß ich nicht, wie der Stand ist. Wahrscheinlich bescheiden.
Qt steht in Form von PyQt und PySide komplett für Python3 bereit. Bei Gtk weiß ich das nicht.
Bei GTK+ steht für Python 3 PyGObject bereit, mit "Bindings" für den gesamten GObject-Stack (etwa GTK+ 2.x, GTK+ 3.x, WebKitGtk, Unique, DBus, freetype, Cairo...).
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
lunar

@Hyperion: PySide gibt es nicht für Python 3.
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

lunar hat geschrieben:@Hyperion: PySide gibt es nicht für Python 3.
Oops. Tatsächlich. Sorry, da hab ich mich zu weit aus dem Fenster gelehnt.
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
Jooohny.py
User
Beiträge: 6
Registriert: Dienstag 3. Mai 2011, 14:54

Ersteinmal danke an alle die geantwortet haben :shock:

Doch leider war noch keine klare Antwort dabei :?

So wie es scheint sollte ich Version 2 nehmen,
aber irgendwie auch doch nicht :?:

Ich plane sehr große Projekte, da brauche ich alles,
von Serveranwendung bis zu einen komplexen CMS was ich entwickeln will,
hinzu kommen sehr viele Seitenaufrufe :wink:
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Jooohny.py hat geschrieben: Ich plane sehr große Projekte, da brauche ich alles,
von Serveranwendung bis zu einen komplexen CMS was ich entwickeln will,
hinzu kommen sehr viele Seitenaufrufe :wink:
Also da würde ich mal sagen: Bis Du so weit bist, ist Django auch portiert :twisted:

Und wenn Du fit genug bist, dann kannst Du auch zur Not noch auf Python2 switchen.
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
BlackJack

IMHO kommt man wenn man mit Python 3 anfängt und wirklich ”alles” machen will, sehr schnell an die Grenze wo man dann doch irgendein Module gebrauchen könnte, dass es noch nicht für 3.x gibt. Und man kann bei den meisten Linux-Distributionen selbst von den Sachen die es schon für 3.x gibt, kaum etwas über die Paketverwaltung installieren, während bei Python 2.x-Paketen die gängigsten Sachen vorhanden sind.
Jooohny.py
User
Beiträge: 6
Registriert: Dienstag 3. Mai 2011, 14:54

Gut ich werde mit Python 2x anfangen,
die Unterschiede sind so gering und mein Buch(Einstieg in Python 3)erklärt eh beide Versionen,
denke mal ich werde mit beiden zurechtkommen :|

Was ich aber nochmal los werden wollte,
das Killerplus von Python das Python sehr leicht seih,
trifft für das Web nicht zu,
die ersten Schritte bekommen PHPér leichter hin,
seih es mit dem Einrichten der Entwicklungsumgebung,
oder dem wählen des passenden Tool(mod_python, FastCGI usw.) und und und.

Hier sehe ich für Python noch nachholl bedarf :?

Auch kann ich nicht verstehen das Python auf dem Mobilen Markt noch zu gut wie garnicht vertretten ist.

Vor paar Monaten haben die Apple Fanboy´s noch gegen Flash gehetzt,
und heute ist Flash die meistverbreiteste Plattform für Anwendungen,
Flash ist besser verbreitet als Java und Python ohjeeeeeeee :evil:
Benutzeravatar
snafu
User
Beiträge: 6731
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Vielleicht sind dir auch einfach nicht die richtigen Tools bekannt. Ein Microframework wie Flask genügt vielleicht in Kombination mit den benötigten Flask-Extensions schon deinen Ansprüchen. :)
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Jooohny.py hat geschrieben:Was ich aber nochmal los werden wollte,
das Killerplus von Python das Python sehr leicht seih,
trifft für das Web nicht zu,
die ersten Schritte bekommen PHPér leichter hin,
seih es mit dem Einrichten der Entwicklungsumgebung,
oder dem wählen des passenden Tool(mod_python, FastCGI usw.) und und und.
Ähm, Django, fertig.
Jooohny.py hat geschrieben:Vor paar Monaten haben die Apple Fanboy´s noch gegen Flash gehetzt,
und heute ist Flash die meistverbreiteste Plattform für Anwendungen,
Flash ist besser verbreitet als Java und Python ohjeeeeeeee :evil:
Ja und deswegen gehen viele jetzt weg von Flash und hin zu HTML5. Auf iOS gibt es immer noch kein Flash. Irgendwie sehe ich das genau anders als du...
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
/me
User
Beiträge: 3554
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

Jooohny.py hat geschrieben:Vor paar Monaten haben die Apple Fanboy´s noch gegen Flash gehetzt,
und heute ist Flash die meistverbreiteste Plattform für Anwendungen,
Flash ist besser verbreitet als Java und Python ohjeeeeeeee :evil:
Das halte ich für eine sehr gewagte - und sehr falsche - Aussage.
BlackJack

@Jooohny.py: Zum ”komplizierten Web” noch: Bottle.

Wobei man vielleicht noch anmerken sollte, dass Python's Syntax und grundlegende Semantik recht einfach und regelmässig ist, und damit auch verhältnismässig leicht erlernbar, aber *Programmieren* muss man trotzdem lernen und das ist unabhängig von der Sprache etwas schwieriger. Viele Anfängererfolge in PHP scheinen mir aber mit Programmieren nicht viel zu tun zu haben, da oft einfach nur Beispiele zusammen kopiert und verändert werden, bis sie das gewünschte Ergebnis bringen. Das ist aber eine Vorgehensweise die nicht besonders gut skaliert.
Darii
User
Beiträge: 1177
Registriert: Donnerstag 29. November 2007, 17:02

sma hat geschrieben:Was Desktop-Programme angeht, weiß ich nicht, wie der Stand ist. Wahrscheinlich bescheiden. Aber da ist sowieso meine Meinung, dass das eine aussterbende Technologie ist und man 90% dieser Anwendungen auch in Form von (lokalen) Webanwendungen realisieren kann.
Kann passieren, die Qualität wird aber vermutlich nicht zunehmen. Große Javascript-Anwendungen werden zu unwartbaren Monstern mutieren.
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

Darii hat geschrieben:Kann passieren, die Qualität wird aber vermutlich nicht zunehmen. Große Javascript-Anwendungen werden zu unwartbaren Monstern mutieren.
Da sich JavaScript von dem, was die Sprache bietet, nicht signifikant von Python unterscheidet (vielleicht mit Ausnahme von Generatoren, die nur Mozillias JS-Engine unterstützt) wird es im Vergleich zu Python zumindest nicht schlimmer werden :) In den meisten Sprachen sind unwartbare Monster erschaffbar. Da aber viele Leute (und mehr als bei Python) ein Interesse an guten Werkzeugen für JavaScript haben, wird hier letztlich die Entwicklung einfacher werden - genau wie es auch bei Java passiert ist. 1996 war die Entwicklung mit VisualCafe da noch echt übel (und primitiv im Vergleich zu Smalltalk), 15 Jahre später sind die IDEs so weit, dass die Entwicklung schon Spaß machen kann.

Stefan
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

Wenn ich Aussagen wie "ich wollte Python lernen um damit meine Webseiten zu programmieren" gefolgt von "Ich plane sehr große Projekte, da brauche ich alles, von Serveranwendung bis zu einen komplexen CMS was ich entwickeln will, hinzu kommen sehr viele Seitenaufrufe" bin ich irgendwie skeptisch. Ein CMS entwickelt sich nicht mal so eben, gerade nicht von einem Anfänger. Die Jungs von Django haben mehr als 5 Jahre gebraucht, um dahin zu kommen. Bei Projekten dieser Größenordnung, ist die Programmiersprache eher zweitrangig, Architektur und Kenntnisse der Technologien sind hier IMHO wichtiger. Ob Python 2 oder 3 -- darauf gepfiffen.

Und als Apple-Fanboy muss ich noch etwas zu "Vor paar Monaten haben die Apple Fanboy´s noch gegen Flash gehetzt,
und heute ist Flash die meistverbreiteste Plattform für Anwendungen, Flash ist besser verbreitet als Java und Python ohjeeeeeeee" loswerden:

Flash ist eine Plugin-Technologie für Browser. Das mit Java-Applets (die sicherlich gemeint sind) zu vergleichen ist okay, Applets haben verloren (ebenso wie z.B. Silverlight). Daran ist nicht mehr zu rütteln. Doch Python passt da nicht hinein, denn AFAIK gibt es kein produktiv nutzbares Python-Plugin für Browser. Sollte die Technologie für Server gemeint sein: Passt hier Flash gar nicht. Vielleicht Coldfusion, benutzt auch so einen JavaScript-Dialekt, vielleicht hat Adobe sogar mal vor, den zu ActionScript aufzuboren, doch serverseitig ist Flash so wenig existent wie Python im Browser. Und im Vergleich mit Python dominiert hier natürlich Java. PHP wird wahrscheinlich der Platzhirsch sein, aber darüber reden wir ja nicht.

Das iOS kein Flash unterstützt hat sich zudem nicht nachteilig für diese Plattform herausgestellt. Tatsächlich hat das zu einem nicht unerheblichen Innovationsschub für HTML 5 Umbrella (Corp) Technologien geführt. Video ist irgendwie im Mainstream angekommen, Canvas, SVG und WebGL können, was Flash kann, einzig Sound funktioniert (noch) nicht wirklich. Natürlich will Apple Adobe als Konkurrenten nicht unnötig fördern und die technischen Gründe sind eher nebensächlich und natürlich sagt Google gemäß dem Motto der Feind meines Feindes ist mein Freund, das Flash total cool ist, dennoch rockt das auch auf den schnellsten Tablets noch nicht wirklich.

Neben Spielen ist der Haupteinsatz für Flash der Video-Player. Das können iOS und auch Android-Geräte aber ohne Flash besser. Bei iOS weiß ich, dass der eingebaute Player eben die Hardware MP4-Unterstützung nutzen kann und so wesentlich stromsparender, als Flash es könnte, Videos anzeigen kann. Und da die meisten Video-Portale iOS-Kunden wertschätzen, haben sie lieber hastig ihre Sites umgebaut und unterstützen MP4 per video-Tag, als das sie sich in Volksaufständen üben. Angefangen mit Google und Youtube. Da gibt es eher Streit um den besten Codec, denn Apple muss als Lizenznehmer nix für AAC+AVC bezahlen, Google nix für WebM und Mozilla hält das Ogg-Fähnchen hoch, in der Hoffnung, dafür nix bezahlen zu müssen. Zurück zu Spielen: Mobile Geräte bieten hier dank OpenGL viel mehr Möglichkeiten, wenn man sie nativ programmiert. Viel aufwendiger, aber auch ertragreicher und inzwischen denke ich ein Markt für etablierte Spieleschmieden denn einfache Flash-Games (wo es natürlich auch komplexere Exemplare gibt). Zusammen mit Flex könnte man auch noch nette Inhouse-Enterprise-Apps bauen, doch das ist in etwa so aufwendig, als wenn man's gleich nativ macht, daher hat das glaube ich auch keine große Bedeutung. Letztlich wird HTML 5 sie alle kriegen, denn das wird mit jeder Browserversion immer ein bisschen besser.

Das Ziel ist hier denke ich klar: Chrome OS - der Browser als Betriebssystem. Und wenn Chrome OS noch ein paar Telefonie-Funktionen bekommt, kann es eigentlich auch alles, was Android als OS kann - ohne das Java-basierte SDK für die UIs.

Spielt als Flash noch eine Rolle? im Video-Umfeld: Noch. Ansonsten: Mittelfristig entbehrlich. Die Flash IDE (oder Studio oder wie Adobe auch hier Produkt nennt, mit dem man Flash-SWFs erzeugt) wird denke ich weiter bestehen. Nur fällt dann da HTML + CSS + JavaScript hinten raus. Oder iOS oder Android Code. Oder etwas für Google NaCl-Technologie, die ich ja persönlich auch interessant finde.

Darüber könnte man dann auch wieder ein Python-Plugin für den Browser bauen.

Wenn man nicht Emscripten benutzen will...

Stefan
Antworten