Quand on regarde la définition de haut niveau des objets : Ces objets ont un état interne et un comportement, qui leur permet d’interagir entre eux on voit très bien que c'est ce qu'on fait depuis toujours avec un langage fonctionnel (C pour ma part), en ayant une architecture/conception rigoureuse (et pas un plat de spaghetti).
Il me semble que tu ne peux pas garantir que l'état d'un objet (une structure j'imagine ?) soit cohérent. Si par exemple tu veut un objet qui représente une intervalle représenté par la valeur basse et la valeur haute (ouvert ou fermé ne change pas mon explication), tu aimerais pouvoir garantir que la borne basse est effectivement toujours plus petite que la borne haute. Ce genre d'invariant est garanti par l'immutabilité dans les langages fonctionnels et en objet par l'encapsulation (et tu vérifie à chaque modification que l'objet continue de respecter l'invariant). En C je ne vois pas comment tu fait. Ça n'est pas un sujet théorique.
Je peux complètement passer à côté de quelque chose au sujet de comment tu fais et tu pourra me rétorqué avec raison que des langages comme python cassent ce principe ce qui est vrai.
Alors certes un langage Objet facilitera ce travail, mais en théorie seulement quand je vois le nombre d'articles (et de bouquins) destinés à bien architecturer/concevoir les objets.
Ce n'est pas parce qu'il n'y a pas de silver bullet que tout est identique. Tout langage turing complet sera en mesure de produire une usine à gaz, est-ce que pour autant le shell, le C et l'haskell sont identique ?
[^] # Re: Oh vous savez, moi, l'objet...
Posté par barmic 🦦 . En réponse au lien Un point sur la programmation objet (POO) – La POO, ses problèmes, et qu’en faire . Évalué à 2.
Il me semble que tu ne peux pas garantir que l'état d'un objet (une structure j'imagine ?) soit cohérent. Si par exemple tu veut un objet qui représente une intervalle représenté par la valeur basse et la valeur haute (ouvert ou fermé ne change pas mon explication), tu aimerais pouvoir garantir que la borne basse est effectivement toujours plus petite que la borne haute. Ce genre d'invariant est garanti par l'immutabilité dans les langages fonctionnels et en objet par l'encapsulation (et tu vérifie à chaque modification que l'objet continue de respecter l'invariant). En C je ne vois pas comment tu fait. Ça n'est pas un sujet théorique.
Je peux complètement passer à côté de quelque chose au sujet de comment tu fais et tu pourra me rétorqué avec raison que des langages comme python cassent ce principe ce qui est vrai.
Ce n'est pas parce qu'il n'y a pas de silver bullet que tout est identique. Tout langage turing complet sera en mesure de produire une usine à gaz, est-ce que pour autant le shell, le C et l'haskell sont identique ?
https://linuxfr.org/users/barmic/journaux/y-en-a-marre-de-ce-gros-troll