Anfängerfrage: Zum Einstieg Python 2.7 oder 3.2?

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
Norbi
User
Beiträge: 15
Registriert: Samstag 13. April 2013, 11:42

Hallo,

ich habe bereits Erfahrungen mit einigen anderen Programmiersprachen gesammelt und würde mich gerne etwas tiefer mit Python beschäftigen. Was Skriptsprachen betrifft, habe ich bereits viel mit Perl gearbeitet, suche aber für gewisse Zwecke (z.B. Prototyping) eine Alternative, die eher für die Bearbeitung numerischer Daten geeignet ist. Perl hat ja bekanntlich seine Stärken eher im textorientierten Bereich bzw. der Bearbeitung textueller Daten und ist hierfür nicht der optimale Kandidat.

Momentan bin ich etwas verwirrt, da es zwei verschiedene Versionen von Python gibt, die offensichtlich beide noch verwendet werden. Die Version 3.2 ist wohl die neueste Entwicklung, die jedoch zur Vorgängerversion nicht abwärtskompatibel ist. Leider kann man sich wohl aus verschiedensten Gründen von dieser Vorgängerversion nicht so recht verabschieden, denn sie ist offensichtlich immer noch die am weitesten verbreitete und am häufigsten genutzte Version von Python und wird zudem auch noch weiterentwickelt. Was wohl bedeutet, dass ihr trotz ihres bereits vorhandenen Nachfolgers noch ein längeres Fortbestehen prognostiziert wird.

Nun meine Frage, wo soll ich einsteigen? Bzw. welche Gründe sprechen für oder gegen einen Einstieg in die Python Version 2.7? Was kann man zur Zeit empfehlen?

Vielen Dank schon mal an Euch für Eure Meinung hierzu.

Beste Grüße,

Norbert
BlackJack

@Norbi: Das hängt IMHO davon ab wie sicher Du bist, dass es alle benötigten Bibliotheken (schon) für Python 3.2 gibt.
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Gerade bei numerischen Sachen sollte 3.x kein Problem sein, im Zweifel würde ich allerdings immernoch zu 2.7 raten.
BlackJack

@DasIch: Echt? `numpy`, `scypi`, `matplotlib` und was immer man dann noch an spezielleren Modulen, die darauf aufbauen benötigt, ist für Python 3 vorhanden und einfach zu installieren? So einfach wie das `apt-get` was ich für Python 2 auf Debian (und Derivaten) dafür verwende?
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

numpy, scipy und matplotlib gibt es für Python3 und mit pip kann ich die problemlos auf OS X installieren, ich sehe jetzt nicht wieso dass unter Linux ein Problem sein sollte. Wenn man unbedingt apt-get nutzen will gibt es zumindest bei Ubuntu noch python3-numpy usw.
BlackJack

@DasIch: Das Problem ist, dass man bei diesen Sachen die C enthalten und andere C-Bibliotheken vorraussetzen, dann auch den ganzen Entwicklungskram dafür vorher installieren muss. Diese Abhängigkeiten manuell heraussuchen und installieren kann man sich mit der Paketverwaltung von der verwendeten Linux-Distribution halt sparen.
S0S
User
Beiträge: 50
Registriert: Samstag 9. Februar 2013, 18:59

Ich habe auch erst vor kurzem (ca. 1/2 Jahr) angefangen Python zu lernen und habe mich deshalb für Python 2 entschieden, weil es dafür wesentlich mehr Tutorials usw. im Internet gibt. Da solltest du vielleicht auch mal schauen, woher du deine Informationen zum Lernen beziehen willst.
Benutzeravatar
snafu
User
Beiträge: 6740
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Norbi hat geschrieben:Was Skriptsprachen betrifft, habe ich bereits viel mit Perl gearbeitet, suche aber für gewisse Zwecke (z.B. Prototyping) eine Alternative, die eher für die Bearbeitung numerischer Daten geeignet ist.
So nach dem Motto "Python für's Prototyping und die tatsächliche Implementierung in C++", oder wie? In dem Fall würde ich mir garnicht so große Gedanken zur Version machen, sondern den Kram einfach runterschreiben. Und auch bei Drittmodulen wie Numpy müsste man dann natürlich bedenken, dass deren genutzte Funktionalität später in die andere Sprache übertragen werden müsste. Insofern ist es IMHO schon fast besser, direkt bei Python zu bleiben, wenn man einmal angefangen hat. Mit den entsprechenden Bibliotheken (wie gesagt: Numpy, Scipy, ...) kriegt man numerische Projekte auch in Python recht performant hin.
Norbi hat geschrieben:Leider kann man sich wohl aus verschiedensten Gründen von dieser Vorgängerversion nicht so recht verabschieden, denn sie ist offensichtlich immer noch die am weitesten verbreitete und am häufigsten genutzte Version von Python und wird zudem auch noch weiterentwickelt. Was wohl bedeutet, dass ihr trotz ihres bereits vorhandenen Nachfolgers noch ein längeres Fortbestehen prognostiziert wird.
Das stimmt nur so halb, was du da sagst. Python 2.x wird zwar noch für viele Jahre Support kriegen, aber eine Weiterentwicklung der Sprache findet nicht mehr statt. Es gibt für diesen Zweig nur noch Bugfixes.

Was ein gewichtiges Argument sein kann, ist natürlich die Verbreitung. Und da hast du recht, dass Python 2.7 immer noch die größte Verbreitung hat. Insbesondere, wenn du deine Programme weitergeben willst bzw sie auf unterschiedlichen Systemen nutzt, dann solltest du den Quelltext auf jeden Fall so schreiben, dass er auch unter 2.x lauffähig ist. Bezüglich der Verfügbarkeit externer Module stellt 2.x meistens noch den Standardfall dar und für 3.x muss man halt vorab gucken, ob das Modul kompatibel ist - inzwischen ist dies auch oftmals der Fall.
Norbi
User
Beiträge: 15
Registriert: Samstag 13. April 2013, 11:42

Hallo und vielen Dank an die netten Forumskollegen für ihre Hinweise und Ratschläge!

Tja, ich hatte es schon vermutet aber diese Entscheidung ist wohl nicht so leicht zu fällen und hängt von vielen Randbedingungen ab. Dass die Version 2.7 nicht mehr weiterentwickelt wird hätte ich nun bei all den neuen Versionen, die kürzlich noch erschienen sind, nicht vermutet. Aber selbst wenn es nur Bugfixes sind, hat man beim Einstieg in die Version 2.7 immer das gute Gefühl, dass sich hier noch was tut und das gefundene Fehler immer noch beseitigt werden.

Mittlerweile habe ich herausgefunden, dass einige der Dinge, die ich benötige (z.B. pyopencl usw.) noch nicht auf die Version 3 portiert worden sind. Daher tendiere ich momentan doch eher zu einem Einstieg in die Version 2.7.

Umsteigen kann man später immer noch.

Beste Grüße,

Norbert
Benutzeravatar
snafu
User
Beiträge: 6740
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Wenn bestimmte von dir benötigte Module nicht Python 3.x kompatibel sind, dann sollte die Entscheidung für 2.x doch eine ziemlich klare Sache sein. Man macht auch nichts falsch, wenn man den älteren Zweig noch verwendet. Es ist (wie schon angesprochen) nur so, dass die später zur Sprache gekommenen Features dementsprechend nicht in Python 2.7 eingebaut wurden. Also 2.7.0 hatte natürlich noch neue Features, aber 2.7.1 und alle späteren eben nicht mehr. Ob man das sooo tragisch findet, darauf verzichten zu müssen, liegt wohl im Auge des Betrachters. Sehr viele Benutzer kommen anscheinend noch sehr gut mit 2.7 aus.
Antworten