Parce que tu as dis que quand on veut faire de la structure de données en python, il faut le faire en C.
Je n'ai jamais dit « il faut ». J'ai juste constaté qu'en python comme en ruby et d'autres langages dès qu'il y a besoin de structures de données un peu efficace, on le fait en C.
La manière de le présentais le sous-entendais.
Peux-tu donc m'expliquer pourquoi 99% des algo dans la littérature scientifique sont en impératif (le reste en fonctionnel) ? C'est quand même triste d’utiliser un paradigme si dépassé.
Tu avais prévenus, tu confond structure de données et algorithme. C'est pas grave. Mais tout de même dans la littérature, comme tu dis, on défini les structure de données par un ensemble de fonctions qui leur sont applicable et par le comportement de ces fonctions. Dans quasiment tout les cas ces présentés avec des notations mathématiques.
assurer la consistance de ta structure (que les invariants qui sont liées à ta structure soient toujours valides)
Je ne vois pas le rapport. Mais il n'y pas vraiment de grandes différences entre python ou ruby dans ce domaine. Rien ne t'empêche de corrompre la structure ou de mettre un None/nil/null.
Si tu implémente une liste chaînée en C par exemple. Comment est ce que tu empêche que l'utilisateur prenne un élément de ta chaîne et modifie le pointeur vers l'élément suivant à la main ? Comment tu fais pour qu'il passe d'une implémentation à une autre d'une même structure sans avoir à modifié chaque déclaration + chaque endroit où il les passe en paramètre ?
Puisque tu veux que je te donne des exemples précis pour python c'est grâce au __slot__. Quand Tu déclare tes classes ainsi :
classVoiture(object):__slots__=["marque","model"]
L'accès aux attributs des objets se fait de manière statique (v.marquene fait alors plus appelle à un index) et il n'est donc plus possible d'ajouter dynamiquement des attributs dynamiquement.
Pour le masquage de l'information, il faut utiliser la méthode property (mais c'est quelque chose qui semble moins t’intéresser).
Pour ce qui est du model checking, c'est un peut comme si tu expliquait que pour être sûr qu'un programme est correcte il faut le prouver quelque soit le langage. Il y a des langages qui aident plus que d'autres. Il reste moins lourd d'utiliser les fonctionnalités du langage pour assurer la cohérence que d'utiliser des outils externes, lourd et à la charge de l'utilisateur.
Tous les contenus que j'écris ici sont sous licence CC0 (j'abandonne autant que possible mes droits d'auteur sur mes écrits)
[^] # Re: De l'intérêt de ces paradigmes ?
Posté par barmic . En réponse au journal Des paradigmes alternatifs. Évalué à 2.
La manière de le présentais le sous-entendais.
Tu avais prévenus, tu confond structure de données et algorithme. C'est pas grave. Mais tout de même dans la littérature, comme tu dis, on défini les structure de données par un ensemble de fonctions qui leur sont applicable et par le comportement de ces fonctions. Dans quasiment tout les cas ces présentés avec des notations mathématiques.
Si tu implémente une liste chaînée en C par exemple. Comment est ce que tu empêche que l'utilisateur prenne un élément de ta chaîne et modifie le pointeur vers l'élément suivant à la main ? Comment tu fais pour qu'il passe d'une implémentation à une autre d'une même structure sans avoir à modifié chaque déclaration + chaque endroit où il les passe en paramètre ?
Puisque tu veux que je te donne des exemples précis pour python c'est grâce au
__slot__. Quand Tu déclare tes classes ainsi :L'accès aux attributs des objets se fait de manière statique (
v.marquene fait alors plus appelle à un index) et il n'est donc plus possible d'ajouter dynamiquement des attributs dynamiquement.Pour le masquage de l'information, il faut utiliser la méthode
property(mais c'est quelque chose qui semble moins t’intéresser).Pour ce qui est du model checking, c'est un peut comme si tu expliquait que pour être sûr qu'un programme est correcte il faut le prouver quelque soit le langage. Il y a des langages qui aident plus que d'autres. Il reste moins lourd d'utiliser les fonctionnalités du langage pour assurer la cohérence que d'utiliser des outils externes, lourd et à la charge de l'utilisateur.
Tous les contenus que j'écris ici sont sous licence CC0 (j'abandonne autant que possible mes droits d'auteur sur mes écrits)