Je ne suis pas du tout d'accord. On ne trouve pas ça dans tous les langages, en tout cas pas à ce niveau.
Sur wtfjs ou wtfphp, on parle de syntaxes qui ne font pas ce à quoi on pourrait logiquement s'attendre, ou qu'on ne peut pas prédire à la seule vue du code avant d'être déjà tombé sur ce cas pathologique.
Au contraire, les trucs cités sur Python sont soit liés à la transition Python 2 -> Python 3 (dont le but est justement d'éliminer les bêtises de Python 2, donc, oui, il y a des incompatibilités), soit des trucs et astuces pour améliorer un code fonctionnel ; autrement dit, le code écrit fait bien ce qui est attendu, mais on peut faire plus efficace.
Exemple de ce que tu cites sur stackoverflow :
Don't
for i in range(len(tab)) :
print tab[i]
Do :
for elem in tab :
print elem
Les deux sont facilement compréhensibles, et font bien ce qui est attendu. Rien à voir avec ce qu'on trouve avec JS, où [,,,] est compris comme [,,],
isFinite('42'); // true
isFinite('hi'); // false
...
[^] # Re: « impropre à la création d'applications web complexe » ?
Posté par flan (site web personnel) . En réponse au journal Normalisation du langage Dart de Google par l'Ecma. Évalué à 6.
Je ne suis pas du tout d'accord. On ne trouve pas ça dans tous les langages, en tout cas pas à ce niveau.
Sur wtfjs ou wtfphp, on parle de syntaxes qui ne font pas ce à quoi on pourrait logiquement s'attendre, ou qu'on ne peut pas prédire à la seule vue du code avant d'être déjà tombé sur ce cas pathologique.
Au contraire, les trucs cités sur Python sont soit liés à la transition Python 2 -> Python 3 (dont le but est justement d'éliminer les bêtises de Python 2, donc, oui, il y a des incompatibilités), soit des trucs et astuces pour améliorer un code fonctionnel ; autrement dit, le code écrit fait bien ce qui est attendu, mais on peut faire plus efficace.
Exemple de ce que tu cites sur stackoverflow :
Les deux sont facilement compréhensibles, et font bien ce qui est attendu. Rien à voir avec ce qu'on trouve avec JS, où [,,,] est compris comme [,,],
isFinite('42'); // true
isFinite('hi'); // false
...