Die Python-Entwickler(innen) haben es zu gut gemeint, und mit dem Versionssprung auf Python 3 viele ihrer Entwickler(innen) nicht abholen können.
Ja. Hier mal ein Beispiel für die, die es nicht wissen.
Man stelle sich vor, man habe unternehmenskritische Anwendungen programmiert, die sich womöglich auch noch über mehrere hundert (oder tausende) libs verteilen, von denen ein Teil "nur einmal im Jahr benutzt wird, aber im Fehlerfall zum Untergang führen kann".
Man folgte brav den alten Styleguides ... und dann passiert sowas:
# Python 2 only:
print 'Hello'
# Python 2 and 3:
print('Hello')
Es kostet einfach eine Menge Arbeit (und viele, viele, womöglich sehr aufwendige Tests) um dann von Python 2 auf Python 3 zu wechseln. Dann hat man ganz schnell den von Dir genannten Konflikt zwischen "alten" Anwendern (die sowas natürlich nicht wollen) und neuen Anwendern, die natürlich ganz klar sagen, dass wenn, print eine Funktion ist, die Argumente wie bei jeder anderen Funktion in ein Klammerpaar gehören.
Mir selbst kommt es vor, als sei PHP da anwenderfreundlicher (Abgesehen natürlich insbesondere vom "hauptschülergerechten" Umgang mit Variablen und Datentypen).
Allerdings gibt es da noch mehr Brüche:
$pos = strpos ( $haystack , $needle );
Mir fällt sofort auf, dass daran was verkehrt ist. Alle anderen (Funktionen) suchen nämlich die Nadel im Heuhaufen. Aus meiner Sicht ein Designfehler- und der ist im Hinblick auf abertausende existierende Skripte auch "nachträglich nicht mehr korrigierbar".
Denn eine "leicht baubare" Krücke wie
function myStrpos ( $needle , $haystack ) {
return strpos ( $haystack , $needle );
}
$pos = myStrpos ( $needle , $haystack );
würde im Ergebnis des Programmierprozesses nur zu noch mehr Fehlern führen, weil dann gar keiner mehr weiß in welcher Reihenfolge die Argumente denn angegeben werden müssen.
Es gibt mit Sicherheit andere, die an PHP oder anderen Programmiersprachen anderes stört. Aber was ich hier zeige sind Probleme, die schon in Skripten auf Hello-World-Niveau auftreten und schwer zu vermitteln sind.