Python-Entwickler sind wahrnehmungsgestört?

Gute Links und Tutorials könnt ihr hier posten.
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

Sonntag 31. Mai 2009, 09:28

Ein guter Artikel von Zed Shaw über die Wahrnehmungsstörung von vielen Python-Entwicklern, was die Unzulänglichkeiten von Python angeht: http://zedshaw.com/blog/2009-05-29.html

IMHO lesenswert.

Stefan
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Sonntag 31. Mai 2009, 09:58

My god, it's full of CARs! | Leonidasvoice vs Modvoice
Barabbas
User
Beiträge: 349
Registriert: Dienstag 4. März 2008, 14:47

Sonntag 31. Mai 2009, 09:59

Sehr schön. Wobei ich mich gerade in Java einarbeite und wirklich staune, wie guuuuuuuuuHuuuuuuuuuuut Python in manchen Belangen ist. Wenn ich das richtig verstehe, kann man so selbstverständliche Sachen wie Parameter mit Standard-Werten in Java nur mit Überladungen realisieren. Das ist doch mal echt mist (Wobei ich mich - wie gesagt - gerade erst einlese).

Aber ein schöner Artikel. Danke
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Sonntag 31. Mai 2009, 10:06

Barabbas hat geschrieben:Das ist doch mal echt mist (Wobei ich mich - wie gesagt - gerade erst einlese).
Keine Sorge, das denke ich mir beim schreiben von Java ständig.

Eigentlich wundert es mich ein wenig, dass es keine zweite Stdlib für Python gibt. Nachdem nun die Warts der Sprache in 3.0 zum Teil entfernt worden sind, wäre eigentlich die Stdlib dran.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
lunar

Sonntag 31. Mai 2009, 10:22

sma hat geschrieben:IMHO lesenswert.
Darüber kann man geteilter Meinung sein, allerdings lässt jeder Einwand mich ja jetzt als wahrnehmungsgestört erscheinen, daher lasse ich das lieber.
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

Sonntag 31. Mai 2009, 10:34

Barabbas hat geschrieben:Sehr schön. Wobei ich mich gerade in Java einarbeite und wirklich staune, wie guuuuuuuuuHuuuuuuuuuuut Python in manchen Belangen ist. Wenn ich das richtig verstehe, kann man so selbstverständliche Sachen wie Parameter mit Standard-Werten in Java nur mit Überladungen realisieren. Das ist doch mal echt mist (Wobei ich mich - wie gesagt - gerade erst einlese).
Wem Java zu einfach und zu beschränkt erscheint, dem empfehle ich Scala. Die Syntax ist eleganter und hat das von Python vertraute "def". Die Sprache ist zwar im Unterschied statisch getypt, doch das Typsystem ist mächtiger als das von Java und kommt einem daher nicht so in die Quere. Außerdem muss man dann keine Neidgefühle in Richtung C# entwickeln, denn alles, was da geht, kann Scala eigentlich auch. Dafür ist die Lernkurve für Scala definitiv höher als die für Java. Und die IDE-Unterstützung steckt noch in den Kinderschuhen.

Ihr wollt benannte Argumente wie bei Python? Kein Problem:

Code: Alles auswählen

def f(a: Int, b: String) ...

f(1, "s")       // geht
f(1, b="s")     // geht
f(b="s", a=1)   // geht auch
Default Arguments? Geht auch:

Code: Alles auswählen

def f(a: Int = 0, b: String = "") ...

f(); f(1); f(a=1); f(b="s") // geht alles
Ihr wollt nur nicht wissen, was für ein Programmcode dafür erzeugt werden muss.

Übrigens, Scala kann noch mehr: Funktionen können mehr als eine Parameterliste haben, was praktisch für currying ist, Parameter können eine call-by-name-Semantik haben, was praktisch für eigene Kontrollstrukturen ist (beides lässt sich natürlich auch kombinieren, sodass man sie etwa sein eigenes `while` bauen kann) und noch einiges mehr.

Stefan
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Sonntag 31. Mai 2009, 10:44

Bild
:)
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Y0Gi
User
Beiträge: 1454
Registriert: Freitag 22. September 2006, 23:05
Wohnort: ja

Sonntag 31. Mai 2009, 12:06

Bei so Sachen wie der zusätzlichen Typdefinition beim Anlegen eines `val` oder `var`, die plötzlich einen Doppelpunkt statt des Gleichheits-("Zuweisungs-")zeichens erfordert, schüttle ich den Kopf. Oder drei Schreibweisen für `for`-Loops (oder so, irgendwas war da). Momentan scheint mir Groovy die geradlinigste Lösung (auch im Vergleich zu JRuby und Jython) zu sein, wenn es nur darum geht, irgendwas auf der JVM "agiler" als mit Java zu entwickeln. Aber darum geht's in diesem Thread IMHO nicht.


Was den Artikel angeht: Der Mann hat ja recht. Leute, die solche Dinge a) bemerken und b) auch noch (so unterstelle ich) wohlwollend darüber berichten sind selten wie wertvoll - nur üblicherweise ist es auch nicht einfach, mit ihnen umzugehen. Einfach mal jemand, der Dinge aus einem praktischen Blickwinkel sieht. Wer mal eine von Bill Gates' angeblich täglichen Rant-Mails über Microsoft-Produkte gelesen hat, mit denen er seine Mitarbeiter auf die grundlegenden Schwächen mit der Nase gestoßen hat, weiß wohl, was ich meine.

Und ja, ich will diese Änderungen haben! Ich hasse blöde APIs und ich ändere Sachen, die einfach schlechter oder unpassend sind. Bei einem Projekt wie Python ist das nicht einfach, aber Versionsnummern und Changelogs gibt's auch nicht ohne Grund und spätestens im 3.x-Zweig sollte man eher heute als morgen Macken ausmerzen.

Ich weiß nicht, wie bspw. Georg dem gegenüber steht. Wenn er aber einen Weg findet, Sphinx zu "kickstarten", dann würde ich es vermutlich auch für kleine Sachen einsetzen.
BlackJack

Sonntag 31. Mai 2009, 12:48

An Lunar anknüpfend: Der Text beginnt mit dem "wahrnehmungsgestört"-Totschlagargument, so dass man darauf gar nichts sagen kann. Und im Folgeartikel sagt er, er würde Patches schreiben, aber da er wettet, das sie sowieso nicht angenommen werden, selbst wenn er ganz nett ist, weil er halt kein Buddy von Guido ist, also lässt er's lieber. Na super.

Bei `API Documentation Generation` fehlt mir irgendwie Epydoc!? Was gibt's daran auszusetzen?

Und etwas substantieller darf die Kritik auch an einigen Stellen sein, als das `optparse` und `argparse` "crap" sind. Warum sind sie das?

Ich denke es ist ein Unterschied zwischen diesen "rants" mit Beleidigungen und vagen Anschuldigungen und einer ehrlichen und schonungslosen Aufzählung von Entwurfsfehlern, die anscheinend nicht angegangen werden. Und dieser Unterschied macht den Artikel für mich nicht wirklich lesenswert.
Benutzeravatar
Hyperion
Moderator
Beiträge: 7477
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Sonntag 31. Mai 2009, 14:07

@Leonidas: Welche Version des Sedgewick ist denn das? Die für "C" sieht bei mir rei grün aus. Also Pascal, C++, ...?
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Sonntag 31. Mai 2009, 15:19

Y0Gi hat geschrieben:Bei so Sachen wie der zusätzlichen Typdefinition beim Anlegen eines `val` oder `var`, die plötzlich einen Doppelpunkt statt des Gleichheits-("Zuweisungs-")zeichens erfordert, schüttle ich den Kopf. Oder drei Schreibweisen für `for`-Loops (oder so, irgendwas war da). Momentan scheint mir Groovy die geradlinigste Lösung (auch im Vergleich zu JRuby und Jython) zu sein, wenn es nur darum geht, irgendwas auf der JVM "agiler" als mit Java zu entwickeln. Aber darum geht's in diesem Thread IMHO nicht.
Der Doppelpunkt ist für die Typen, die man - juhuu - ab und zu Weglassen darf, wegen Type Inference.
Und Groovy ist ein wenig ein anderes Kaliber als Scala. Groovy scheint mir insofern recht uninteressant zu sein, als da es hauptsächlich eine dynamische Sprache zum Interfacing mit Java ist, wohingegen Scala eher ein Ersatz von Java durch eine mächtigere Sprache sein soll.
Hyperion hat geschrieben:@Leonidas: Welche Version des Sedgewick ist denn das? Die für "C" sieht bei mir rei grün aus. Also Pascal, C++, ...?
Das ist die Pascal-Version. Aber ich mag den Sedgewick nicht so, bevorzuge Goodrich/Tamassia und am liebsten Cormen (der steht nicht im Regal sondern auf dem Schreibtisch).
My god, it's full of CARs! | Leonidasvoice vs Modvoice
BlackJack

Sonntag 31. Mai 2009, 15:31

@Y0Gi: Ich verstehe das Kopfschütteln nicht. Mich würde es eher abschrecken wenn für beides das Gleicheitszeichen verwendet würde. ``val foo = String = "Hello"`` fänd ich *sehr* befremdlich.
Darii
User
Beiträge: 1177
Registriert: Donnerstag 29. November 2007, 17:02

Sonntag 31. Mai 2009, 16:32

Ich denke mal, den Rant sollte man jetzt nicht so schwer nehmen. Jede Sprache hat irgendwo seine Stärken und Schwächen, und so lange nicht die wirklich wichtigen Sachen schlecht sind (z.B. builtin-Typen) und die Sprache sonst genug Vorteile bietet.

Ich hab hier ein Script rumfliegen, das ich auf mehrere Sprachen (mehr oder weniger 1:1) portiert habe um zu gucken wie schnell die jeweils bei diesem Problem sind (ist sicherlich nicht sonderlich aussagekräftig, bis jetzt C++, ObjC, Java, Python und Smalltalk(Squeak) ). Dabei war die Version in Python (neben der in Java) noch am angenehmsten zu implementieren. C++ war dabei zwar mit am schnellsten aber am nervigsten zu implementieren, da man wirklich vieles selbst schreiben muss, da in der Standardbibliothek fast nichts dabei ist.

In Python hat das ganze am meisten Spaß gemacht, klar kann man das als Wahrnehmungsstörung bezeichnen, wenn man von Python weniger angenervt als vom Rest ist und man deswegen die eine oder andere Schwäche nicht so stark wahrnimmt. Aber bedenklich finde ich das nicht.
Benutzeravatar
str1442
User
Beiträge: 520
Registriert: Samstag 31. Mai 2008, 21:13

Sonntag 31. Mai 2009, 16:49

os.rmdir() != rm -rf:
str1442:~$ rmdir foobar
rmdir: konnte „foobar“ nicht entfernen: Das Verzeichnis ist nicht leer
"Time Conversion" kann ich nicht beurteilen, aber ich sehe nicht wo datetime usw heutzutage kompliziert sein soll. (<- wahrnehmungsgestört!1!1)

del <list>[<index>]

Code: Alles auswählen

In [1]: a = range(10)

In [2]: a.pop(4)
Out[2]: 4

In [3]: a
Out[3]: [0, 1, 2, 3, 5, 6, 7, 8, 9]

In [4]: a[1:5] = ()

In [5]: a
Out[5]: [0, 6, 7, 8, 9]
del bei Listen ist wirklich unschön, aber es gibt alternative Möglichkeiten. Und die Slicing syntax fügt sich eigentlich ganz gut ein.
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Sonntag 31. Mai 2009, 16:57

str1442 hat geschrieben:"Time Conversion" kann ich nicht beurteilen, aber ich sehe nicht wo datetime usw heutzutage kompliziert sein soll. (<- wahrnehmungsgestört!1!1)
Datetime ist ganz nett eigentlich, aber es gibt irgendwas (weiß nicht mehr was genau das war) was man in eine Richtung konvertieren kann (also Primitives Objekt <-> Datetime), aber nicht mehr zurück. Ich glaube genau das meint Zed. Wobei das nachzureichen nun wirklich nicht schwer wäre.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Antworten