> Une des grandes forces de python est sa capacité d'instrospection, réflexivité et auto modification. Typiquement on peut tout à fait imaginer
> des variables dont le type dépende de données disponibles uniquement à l'exécution.
Je pense que ce type d'exemple donne du code particulierement complexe a comprendre et a maintenir. Dans certains cas, c'est pratique, mais dans la plupart, c'est plutot risque.
Faut voir que si tu leves une exception dans ton code, tu es "foutu", c'est comme si tu avais fait un segfault.
Un des problemes de python, c'est que sur un gros programme, tu as beaucoup de chances d'avoir dans un coin un fonction qui te renvoie un type qui va faire planter tout ton programme. J'ai eu le cas il y a quelques semaines avec un stagiaire qui m'a code une fonction renvoyant une liste ou bien None quand il n'y avait rien a renvoyer. Le none a foutu la merde, alors que renvoyer une liste vide serait passe sans probleme.
En s'appuyant sur un typage fort, statique mais non declaratif ni impose (c'est a dire comme en ocaml, avec juste de l'inference de type), on peut avoir plus de certitudes sur la fiabilite d'un programme, ce qui me parait un eujeu fondamental du developpement logiciel de nos jours.
[^] # Re: OCaml & python ont vraiment des approches et possibilités différente
Posté par Philippe F (site web personnel) . En réponse au journal pas d'inference de type a la ocmal en python. Évalué à 4.
> des variables dont le type dépende de données disponibles uniquement à l'exécution.
Je pense que ce type d'exemple donne du code particulierement complexe a comprendre et a maintenir. Dans certains cas, c'est pratique, mais dans la plupart, c'est plutot risque.
Faut voir que si tu leves une exception dans ton code, tu es "foutu", c'est comme si tu avais fait un segfault.
Un des problemes de python, c'est que sur un gros programme, tu as beaucoup de chances d'avoir dans un coin un fonction qui te renvoie un type qui va faire planter tout ton programme. J'ai eu le cas il y a quelques semaines avec un stagiaire qui m'a code une fonction renvoyant une liste ou bien None quand il n'y avait rien a renvoyer. Le none a foutu la merde, alors que renvoyer une liste vide serait passe sans probleme.
En s'appuyant sur un typage fort, statique mais non declaratif ni impose (c'est a dire comme en ocaml, avec juste de l'inference de type), on peut avoir plus de certitudes sur la fiabilite d'un programme, ce qui me parait un eujeu fondamental du developpement logiciel de nos jours.