Richard Bergmair's Blog



#politics#computers#business2023q42023q32023q22023q12022q42022q32022q12021q12020q32020q12019q42019q32019q22019q12018q32018q2


==> Die Debatte ist immer noch voll in Fahrt, und ich bekomme noch Rückmeldungen. Dann noch eine Runde.

Hinter dem Design von Python verbirgt sich ja eine Philosophie, die ungefähr so lautet: Für jeden Gedanken hält die Sprache wenigstens einen und höchstens einen offensichtlichen Weg bereit, wie dieser auszudrücken ist.

Der erste Teil dieser Aussage (“wenigstens einen offensichtlichen Weg”) führt dazu, dass man die volle Ausdrucksstärke der Sprache auch dann schon erreicht hat, wenn man von allen Sprachkonstrukten, die der Sprache zugrunde liegen, erst die wenigen wirklich beherrscht, die anhand der Lektüre von Code die Offensichtlichen sind. Also, auch dann, wenn man erst am Anfang der Lernkurve steht und noch wenig in das Erlernen der Sprache investiert hat, bekommt man schon die volle Rendite, alles ausdrücken zu können, was einem so in den Sinn kommt.

Der zweite Teil dieser Aussage (“höchstens einen offensichtlichen Weg”) führt dazu, dass die Menge an Code, die man lesen muss, um an diesen Punkt in der Lernkurve zu kommen, so gering wie möglich gehalten wird, diese notwendige Anfangsinvestition also so gering wie möglich gehalten werden soll. Um das nachzuvollziehen, denke man an ein Beispiel: “Eine Iteration über Zeichenketten, wobei jede ausgegeben werden soll.” Wenn dieser Gedanke jedes, wirklich jedes, Mal seinen Ausdruck findet als for line in lst: print( line ), dann wird man beim Erlernen der Sprache frühzeitig und häufig mit den zugrunde liegenden Sprachkonstrukten konfrontiert werden. Dies erleichtert das Lernen ungemein.

Am Beispiel von Perl sieht man, wie es nicht aussehen sollte. Hier gibt es vielleicht zehn unterschiedliche Wege, wie man diesen Gedanken in einer oder zwei Zeilen Code ausdrücken kann, basierend auf der Anwendung von verschiedenen Sprachkonstrukten. Keiner dieser Wege genießt das Privileg, der Offensichtliche zu sein. Jeder Programmierer wird einen anderen bevorzugen. – Wer lernen will, beliebigen Perl-Code, geschrieben von einem anderen Programmierer, zu lesen, der muss daher erst einmal all diese Sprachkonstrukte kennenlernen. Gelegenheit dazu wird es aber weniger geben, da jedes ja jetzt im Code nur entsprechend seltener vorkommt.

Viele der Sprachkonstrukte, die bei Python jüngst eingeführt wurden, stellen sich aber gegen dieses Prinzip und führen überflüssige zusätzliche Wege ein, um mit wenig Code Gedanken auszudrücken, die man auch vorher schon mit wenig Code ausdrücken konnte. Das ist der Grund, warum ich sage, dass sich jetzt gerade bei Python die Fehler wiederholen, die bei Perl gemacht wurden.

#computers   |   Jul-17 2019


#politics#computers#business2023q42023q32023q22023q12022q42022q32022q12021q12020q32020q12019q42019q32019q22019q12018q32018q2