Die Zukunft von Python

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.
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Mittwoch 15. Juni 2005, 13:16

Ich habe es mir mal erlaubt, die Offtopic-Diskussion aus diesem Thread hirher zu verschieben, weil es sein könnte, das auch noch andere dazu was einwerfen möchten (das ich auch hoffe).

Kurze Vorgeschichte: Es ging um die Benutzung von <> in einem Quellcode.


Nur so zur Info: man sollte nicht <> sondern besser != verwenden weil: 1) die meisten (praktisch alle) Quelltexte != nutzen, 2) Es auf der to-deprecate Liste steht 3) weil != viel cooler ist *g*

Schöne Grüße,
Leonidas
Zuletzt geändert von Leonidas am Donnerstag 16. Juni 2005, 13:38, insgesamt 1-mal geändert.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

Mittwoch 15. Juni 2005, 16:46

Leonidas hat geschrieben: 2) Es auf der to-deprecate Liste steht 3)
Hi Leonidas!

Ich bin dafür, die Zeichenkombination <> nicht aussterben zu lassen. Schon seit dem Kindergarten gab es für mich nie eine logischere Zeichenkombination als <> für Ungleich.

>= größer oder gleich
<> kleiner oder größer

Finde ich fiel einfacher als != nicht gleich.

Nenne mich altmodisch -- so bin ich eben :-)

lg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Mittwoch 15. Juni 2005, 17:09

gerold hat geschrieben:Ich bin dafür, die Zeichenkombination <> nicht aussterben zu lassen. Schon seit dem Kindergarten gab es für mich nie eine logischere Zeichenkombination als <> für Ungleich.
Ich sag nur, wie es in PEP 3000 steht.. und um ehrlich zu sein, je länger ich über die Vorschläge darin überlege, desto besser gefallen sie mir (die meisten, nicht alle).
gerold hat geschrieben:>= größer oder gleich
<> kleiner oder größer

Finde ich fiel einfacher als != nicht gleich.

Nenne mich altmodisch -- so bin ich eben :-)
Ich persönlich finde != logischer, denn:

Code: Alles auswählen

>>> 1 != 2
True
>>> 1 <> 2
True
>>> 1 != '2'
True
>>> 1 <> '2' # wie, ist ein String nun größer oder kleiner als eine Zahl?
True
Und das ist mit allen Objektvergleichen, die meisten Objekte sind gleich, oder ungleich, nicht kleiner oder größer.

Aber gut, das ist nur meine Meinung, bei mir spielt noch rein, dass ich noch eine Abneigung dagegen habe weil VB auch <> benutzt ;)
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

Mittwoch 15. Juni 2005, 17:30

Leonidas hat geschrieben:
gerold hat geschrieben:Ich bin dafür, die Zeichenkombination <> nicht aussterben zu lassen.
Ich persönlich finde != logischer, denn:

Code: Alles auswählen

>>> 1 != 2
True
>>> 1 <> 2
True
>>> 1 != '2'
True
>>> 1 <> '2' # wie, ist ein String nun größer oder kleiner als eine Zahl?
True
Und das ist mit allen Objektvergleichen, die meisten Objekte sind gleich, oder ungleich, nicht kleiner oder größer.
Hi Leonidas!

Du hast recht, bei Objektvergleichen hinkt mein Vergleich ein wenig :?

Trotzdem finde ich es nicht richtig, dass so etwas aus der Sprache gestrichen werden soll. Warum denn auch? Es wird weiterhin Leute wie mich geben, die sich solche Änderungen nicht gerne vorschreiben lassen wollen. Ich finde es einfach "realistischer", wenn ich Zahlenwerte mit <> vergleichen kann. Und weil ich niemandem für solche Sanktionen eine aufs Maul geben kann, schreibe ich einfach hier, dass es mir nicht passt.

Nichts für ungut -- bin eigentlich ein friedlicher Mensch :-) Es macht mich nur wild, wenn mir jemand etwas ohne Grund wegnehmen will -- auch wenn es nur die Freiheit ist, <> statt != benutzen zu können.

lg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

Mittwoch 15. Juni 2005, 17:50

Dieses PEP http://www.python.org/peps/pep-3000.html kommt mir teilweise wie eine Rezepturänderung bei Coca Cola vor. Es wird einfach an der Rezeptur gedreht, weil man mal wieder etwas neues ausprobieren möchte.

Wenn ich nur besser Englisch beherrschen würde, dann könnte man den Authoren die Meinung sagen...

Ich gehe jetzt einen Saufen. Dieser Tag ist nicht mehr zu retten.
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Donnerstag 16. Juni 2005, 12:27

gerold hat geschrieben:Wenn ich nur besser Englisch beherrschen würde, dann könnte man den Authoren die Meinung sagen...
Du kannst auch Niederländisch schreiben, weil PEP3000 ist von GvR.

Eine andere Sache ist noch, ob und wie alles darin in Python 3k/3.0 realisiert wird.

Jedoch finde ich, es könnten noch mehr so tolle Goodies eingebaut werden wie LCs und co, da geht der Entwurf von Ruby2 wesentlich weiter als der von Python 3k.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

Donnerstag 16. Juni 2005, 13:07

Hi Leonidas!
Leonidas hat geschrieben: Du kannst auch Niederländisch schreiben, weil PEP3000 ist von GvR.

:lol: :? ...nicht mal Niederländisch schreiben können. Wie nachlässig von mir... :shock:
Leonidas hat geschrieben: Eine andere Sache ist noch, ob und wie alles darin in Python 3k/3.0 realisiert wird.
Hoffentlich nicht. Wenn ich mir nur vorstelle, print durch writeln zu ersetzen... Dadurch werden so manche erste Erfolgserlebnisse mit Python versaut. Jeder hat einen anderen Einstieg in eine Programmiersprache. print hat jeder schon irgendeinmal gehört und jeder versucht sich zuerst mit print "Hallo". Warum soll man solche Erfolgserlebnisse erschweren? Es gibt Befehle, die so einfach wie möglich gehalten werden müssen. Ich finde sogar, print soll es egal sein, ob es mit oder ohne Klammern aufgerufen wird.

Weiter gehts mit eval(sys.stdin.readline()).
Das hat sich doch sicher irgendein Java-Fetischist ausgedacht. --> Dinge die ich häufig brauche, sollen einfach sein -- der Rest möglich.
Ich habe nichts gegen eval(sys.stdin.readline()) -- es darf aber nicht einen einfacheren Befehl wie input() ersetzen.
Leonidas hat geschrieben: Jedoch finde ich, es könnten noch mehr so tolle Goodies eingebaut werden wie LCs und co,

Da stimme ich dir voll und ganz zu.

Man soll nur vorsichtig beim Ausmisten sein.

Nur weil es einige nicht benutzen oder für unnötig halten, müssen Sie es nicht den anderen, die es gerne benutzen und lieb gewonnen haben, nehmen.

lg
Gerold
:-)

PS: Ich glaube, dass ich diese Diskussion im falschen Thread angefangen habe.
Zuletzt geändert von gerold am Donnerstag 16. Juni 2005, 15:39, insgesamt 1-mal geändert.
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Donnerstag 16. Juni 2005, 13:48

gerold hat geschrieben:
Leonidas hat geschrieben: Eine andere Sache ist noch, ob und wie alles darin in Python 3k/3.0 realisiert wird.
Hoffentlich nicht. Wenn ich mir nur vorstelle, print durch writeln zu ersetzen... Dadurch werden so manche erste Erfolgserlebnisse mit Python versaut. Jeder hat einen anderen Einstieg in eine Programmiersprache. print hat jeder schon irgendeinmal gehört und jeder versucht sich zuerst mit print "Hallo". Warum soll man solche Erfolgserlebnisse erschweren? Es gibt Befehle, die so einfach wie möglich gehalten werden müssen. Ich finde sogar, print soll es egal sein, ob es mit oder ohne Klammern aufgerufen wird.
Ich nutze zwar auch oft print, jedoch habe ich (wenngleich etwas Ideologische, oder wie man das nennt) Probleme Damit. Print ist ein Schlüsselwort, was ich eigentlich uüberflüssig finde, denn es lässt sich einfach auch als Funktion realisieren, wo wie es in Ruby ist: puts() (Wobei man dort die Klammern weglassen darf, das ist so eine Eigenheit).
gerold hat geschrieben:Weiter gehts mit eval(sys.stdin.readline()).
Das hat sich doch sicher irgendein Java-Fetischist ausgedacht. --> Dinge die ich häufig brauche, sollen einfach ein -- der Rest möglich.
Ich habe nichts gegen eval(sys.stdin.readline()) -- es darf aber nicht einen einfacheren Befehl wie input() ersetzen.
Naja, gut das scheint tatsächlich etwas übertrieben zu sein, jedoch kann man auch

Code: Alles auswählen

def input():
    return eval(sys.stdin.readline())
machen und damit gibt es input wieder. Das soll wohl dem "Zen of Python" entsprechen
import this hat geschrieben:There should be one-- and preferably only one --obvious way to do it.
gerold hat geschrieben:Man soll nur vorsichtig beim Ausmisten sein.

Nur weil es einige nicht benutzen oder für unnötig halten, müssen Sie es nicht den anderen, die es gerne benutzen und lieb gewonnen haben, nehmen.
Deswegen ist es erst frühestens für Python 3k gedacht. Es gibt jedoch eine grenze, wie weit man Rückwährtskompatibel ist, so kannst du fast immer direkt Python 1.5.x Programme mit Python 2.4 ausführen, ohne jegliche Änderung, stellst aber bei Betrachtung des Quellcodes fest, wieviel das aktuelle Python angenehmer ist. Und irgendwann kommt man halt zu Änderungen die nicht mehr rückwärtskompatibel sind.
gerold hat geschrieben:PS: Ich glaube, dass ich diese Diskussion im falschen Thread angefangen habe.
Hab ihn gesplittet, vielleicht werden noch andere User ihre Meinung zu dem ganzen äußern.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Benutzeravatar
jens
Moderator
Beiträge: 8483
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Donnerstag 16. Juni 2005, 15:01

print wegzurationalisieren halte ich auch für nicht sinnvoll! Gerade für kleine Tests ist es sehr wertvoll und vor allem schnell ;)
Jedoch in einem "richtigen" Programm könnte ich mir durchaus auch vorstellen immer mit .write() eines File-like-Objekt zu arbeiten und das kann ja dann sys.stdout sein ;)

Jedoch hätte ich da noch eine Idee:
Warum muß man eine Funktionsdefinition mit einem ":" abschließen? Ich fänds super wenn man es weglassen könnte!

Warum heißt es MeinString.has_key("BlaBla") aber len( MeinString ) und nicht MeinString.len() oder auch nur MeinString.len ?
Python ist zwar schon super konsistent, aber es gibt da noch ein paar Kleinigkeiten ;)

Ach, und da wir schon mal beim Nörgeln sind: Die Doku sollte definitiv besser werden! Mit viel mehr Beispielen! Wäre auch nicht schlecht wenn jede Seite mit einem Link zu einer Wiki-Seite versehen wird, die jeder erweitern kann oder besser noch, die ganze Referenz als Wiki "freigeben"!!!

CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Donnerstag 16. Juni 2005, 15:15

jens hat geschrieben:print wegzurationalisieren halte ich auch für nicht sinnvoll! Gerade für kleine Tests ist es sehr wertvoll und vor allem schnell ;)
Jedoch in einem "richtigen" Programm könnte ich mir durchaus auch vorstellen immer mit .write() eines File-like-Objekt zu arbeiten und das kann ja dann sys.stdout sein ;)
Ich hätte es halt recht gerne als "richtige" Funktion, nicht als Keyword. Genauso mag ich das del-Keyword nicht. Keywords lassen sich so schlecht überschreiben :roll:
jens hat geschrieben:Jedoch hätte ich da noch eine Idee:
Warum muß man eine Funktionsdefinition mit einem ":" abschließen? Ich fänds super wenn man es weglassen könnte!
Weil man sonst die Funktionen nicht mehr so einfach in eine Zeile schreiben könnte (vielleicht).
jens hat geschrieben:Warum heißt es MeinString.has_key("BlaBla") aber len( MeinString ) und nicht MeinString.len() oder auch nur MeinString.len ?
Python ist zwar schon super konsistent, aber es gibt da noch ein paar Kleinigkeiten ;)
Das ist einfach Broken by design aus älteren Pythonversionen, denn es gab schon praktisch immer len(). Und das beste kommt noch, denn len() ruft in Wirklichkeit "Leonidas".__len__() auf! Schade, dass man die Klassen nicht überschreiben oder erweitern kann sonst hätte ich es schon längst so umgebaut, dass es .len() gäbe. :(
jens hat geschrieben:Ach, und da wir schon mal beim Nörgeln sind: Die Doku sollte definitiv besser werden! Mit viel mehr Beispielen! Wäre auch nicht schlecht wenn jede Seite mit einem Link zu einer Wiki-Seite versehen wird, die jeder erweitern kann oder besser noch, die ganze Referenz als Wiki "freigeben"!!!
Also um ehlich zu sein, finde ich die Doku meist sehr gut, denn oft darf ich mich freuen, wenn es zu etwas überhaput Doku gibt. Und für Beispiele ist das Python Cookbook genial. Die Doku lässt sich nicht als Wiki freigeben, denn sie wird für jede Version aufs neue aus den LaTeX Sourcen erstellt, und ich denke nicht, dass allzuviele Wiki-User LaTeX schreiben können oder auch nur wollen ;)
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Benutzeravatar
jens
Moderator
Beiträge: 8483
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Donnerstag 16. Juni 2005, 15:25

Leonidas hat geschrieben:
jens hat geschrieben:Jedoch hätte ich da noch eine Idee:
Warum muß man eine Funktionsdefinition mit einem ":" abschließen? Ich fänds super wenn man es weglassen könnte!
Weil man sonst die Funktionen nicht mehr so einfach in eine Zeile schreiben könnte (vielleicht).
Das wäre nicht wirklich nötig, da ")" die Sache abschließt:

Code: Alles auswählen

def meinPrint(daten) print daten

Code: Alles auswählen

def print_zeile() print "-"*80

CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
mawe
Python-Forum Veteran
Beiträge: 1209
Registriert: Montag 29. September 2003, 17:18
Wohnort: Purkersdorf (bei Wien [Austria])

Donnerstag 16. Juni 2005, 15:26

Hi!
jens hat geschrieben: Warum muß man eine Funktionsdefinition mit einem ":" abschließen? Ich fänds super wenn man es weglassen könnte!

Warum heißt es MeinString.has_key("BlaBla") aber len( MeinString ) und nicht MeinString.len() oder auch nur MeinString.len ?
Vielleicht solltest Du Dir mal Ruby ansehen. Dort sind die beiden Dinge so wie Du sie haben willst ;)
Über len() hab ich mich in einem anderen Thread auch schon mal beschwert, irgendwas.len wäre logischer. Aber, mal im Ernst, so viele Schlüsselwörter gibts auch wieder nicht, als dass man sich die nicht merken könnte ;)

Was mich besonders nervt (hab ich damals auch schon gesagt), ist join.

Code: Alles auswählen

''.join(liste)   # warum so
liste.join('')   # und nicht so?
Ich find das völlig unlogisch.

Die Doku find ich eigentlich ok (vor allem im Vergleich zu Ruby). Die Idee von jens mit dem Wiki find ich genial.

Ach ja, anstatt die Spache (Syntax, Schlüsselwörter, ...) zu verändern, sollten sich die Herrn Entwickler mal die Module ansehen, umgestalten und ausmisten. Wir hatten ja kürzlich das Modul shutil. Das kennt kein Mensch (vielleicht wegen dem Namen?), und die meisten Funktionen die ich darin vermuten würde, befinden sich in os.

Gruß, mawe
Benutzeravatar
jens
Moderator
Beiträge: 8483
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Donnerstag 16. Juni 2005, 15:28

Vielleicht sollten wir hier mal eine Petition erstellen und einreichen ;)
Könnten wir ja im "Forum Wiki" machen...

CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
mawe
Python-Forum Veteran
Beiträge: 1209
Registriert: Montag 29. September 2003, 17:18
Wohnort: Purkersdorf (bei Wien [Austria])

Donnerstag 16. Juni 2005, 15:29

Leonidas hat geschrieben: Weil man sonst die Funktionen nicht mehr so einfach in eine Zeile schreiben könnte (vielleicht).
Könnte man ja auch optional machen. Kein : wenn Block in nächster Zeile beginnt, : wenn er in der selben Zeile ist (so wie bei ;).
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Donnerstag 16. Juni 2005, 16:57

Okay, wenn ihr Lust habt, könnt ihr ab sofort eure Vorschläge auch in der PythonWunschliste verewigen. ich werde mein Zeug auch da reinschreiben, wenn ich mal wieder Zeit habe. Aber Diskussion dieser Änderungen ist besser hier zu führen :)
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Antworten