Warum ist für die Python-Programmierung und das Pythonic-Sein „nie besser als * gerade * jetzt“? [geschlossen]

8

Im Zen von Python kann ich die meisten Teile davon verstehen, außer:

Now is better than never.  
Although never is often better than *right* now

Ich denke, es jetzt zu tun oder jetzt Ergebnisse zu erzielen, ist besser als nie. Aber warum "ist nie oft besser als * gerade * jetzt"? Oder was heißt das?

Um die obigen 2 Zeilen im Kontext zu sehen, ist dies das gesamte Zen von Python:

The Zen of Python, by Tim Peters

Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
Special cases aren't special enough to break the rules.
Although practicality beats purity.
Errors should never pass silently.
Unless explicitly silenced.
In the face of ambiguity, refuse the temptation to guess.
There should be one-- and preferably only one --obvious way to do it.
Although that way may not be obvious at first unless you're Dutch.
Now is better than never.
Although never is often better than *right* now.
If the implementation is hard to explain, it's a bad idea.
If the implementation is easy to explain, it may be a good idea.
Namespaces are one honking great idea -- let's do more of those!
Unpolarität
quelle
2
Netzwerkübergreifender Betrug: stackoverflow.com/q/20531943/3001761
jonrsharpe

Antworten:

12

Der erste Teil, "jetzt ist besser als nie", ist ein Mantra gegen Aufschub. Es drückt die Idee aus, dass Sie niemals dazu kommen werden, wenn Sie nicht damit weitermachen.

Der zweite Teil, "nie ist oft besser als jetzt" , ist Ausdruck des YAGNI- Prinzips. Die Idee ist, dass Sie "Dinge immer dann implementieren sollten, wenn Sie sie tatsächlich brauchen, niemals, wenn Sie nur vorhersehen, dass Sie sie brauchen", weil Sie es oft tun Finden Sie heraus, dass Sie sie doch nicht brauchen, und stellen Sie dann fest, dass Sie gerade Mühe verschwendet haben.

... nun, das ist mein Verständnis. Aber Sie müssten den Autor fragen, um sicher zu sein.

Kramii
quelle
2
Es gibt ein Zitat von Chuck Moore, das meiner Meinung nach dieses Gefühl gut ausdrückt: „Fügen Sie keinen Code in Ihr Programm ein, der möglicherweise verwendet wird. Lassen Sie keine Haken, an denen Sie Verlängerungen aufhängen können. Die Dinge, die Sie vielleicht tun möchten, sind unendlich; das bedeutet, dass jeder eine Realisierungswahrscheinlichkeit von 0 hat. Wenn Sie später eine Erweiterung benötigen, können Sie sie später codieren - und wahrscheinlich einen besseren Job machen als jetzt. Und wenn jemand anderes die Erweiterung hinzufügt, wird er dann die Haken bemerken, die Sie hinterlassen haben? Werden Sie diesen Aspekt Ihres Programms dokumentieren? “
Jon Purdy
2

Es könnte sich um eine faule Bewertung handeln.

Beispiele:

xrange(1000000)

vs.

range(1000000) 

Wo der erste nicht viel tut, bis die Werte benötigt werden, der letztere jedoch ein großes Array zuweist.

Oder Protokollierung

log("Stuff happened for %s ",  something)

vs.

log("Stuff happened for %s " % something)

Wobei der erste die Zeichenfolge nur erstellt, wenn die Protokollierung tatsächlich aktiviert ist.

Esben Skov Pedersen
quelle
1

Ich denke, diese gelten für den Sprachentwurfsprozess selbst, nicht nur für Anwendungen. "Jetzt ist besser als nie." und „Obwohl nie ist oft besser als Recht jetzt.“ geht es darum, das richtige Gleichgewicht zwischen Zeit und Qualität der Implementierung zu finden. So ist es auch mit dem Rest des Zen. Und natürlich hat Zen von Natur aus keine einzige Bedeutung.

Roman Susi
quelle
1
Ja, ich habe es gesehen und festgestellt, dass es wie ein Yin und Yang ist: Yin ist besser als Yang und Yang ist besser als Yin? Es könnte genau das richtige Gleichgewicht sein.
Unpolarität
1

Jetzt ist besser als nie.
Obwohl nie ist oft besser als Recht jetzt

Ich denke, die erste Zeile bezieht sich auf eine Mischung aus Perfektionismus und Aufschub. Es ist besser, jetzt etwas bereitzustellen, das funktioniert, selbst wenn die Funktionalität einfach ist oder der Code "noch nicht perfekt" ist, als für immer daran zu arbeiten, bis Ihnen der Dampf ausgeht und der Code einfach tot endet.

Ich denke, die zweite Zeile zielt auf überstürzte Implementierungen ab. Normalerweise wirken sich die von Ihnen codierten Dinge nach der Veröffentlichung sehr lange aus. Manchmal könnte man versucht sein, schnell etwas zu versenden, insbesondere unter Druck, was für die folgenden Jahre zu einer Belastung wird. Es heißt "technische Schulden": Schlechte Entwurfsentscheidungen, schlechte Schnittstellen oder nur schlechte Konstrukte führen später zu großen Problemen. Code ist selten allein, viele andere Codes bauen schnell darauf auf, und wenn Sie schlechte Entscheidungen getroffen haben, bleiben Sie dabei. Beeilen Sie sich daher nicht mit Veröffentlichungen, stellen Sie sicher, dass es in Ordnung ist.

dagnelies
quelle