J'ai toujours eu tendance à blâmer la popularité de C sur la nécessité d'un langage d'assemblage universel. Sa combinaison de spécificité au niveau de la machine, de standardisation et de portabilité extrême permet à C de fonctionner comme ce langage d'assemblage universel de facto , et pour cette raison, je soupçonne que son rôle restera là indéfiniment.
Je dois mentionner que je suis toujours un peu surpris lorsque la programmation orientée objet est présentée dans les cours de programmation comme une sorte de "modèle final" qui constitue le seul point final possible pour une bonne programmation. Comme de nombreux autres aspects de la programmation, la valeur de la programmation orientée objet est un compromis entre de nombreux facteurs concurrents, notamment la manière dont le cerveau humain organise l'information, la manière dont les groupes de la société gèrent les logiciels à long terme et, dans le cas de la programmation orientée objet, certains aspects assez profonds. de la façon dont l'univers lui-même fonctionne.
Et ce dernier point mérite d’être martelé un peu. Lisez plus loin si vous êtes intéressé par une exploration au niveau physique des raisons pour lesquelles certains styles de programmation existent, comment ils fonctionnent ensemble et où le monde se dirigera peut-être à l'avenir, à mesure que nous approfondirons ces concepts ...
Un objet en physique est tout ce qui maintient une cohérence reconnaissable dans le temps. Cela permet à de simples créatures comme nous de représenter l'objet en utilisant seulement un petit nombre de bits, sans mettre en danger notre survie. Mais en termes de physique dans son ensemble, le nombre de choses à faire pour rendre ce genre de simplification facile et courante est remarquablement grand. En tant qu'êtres humains, nous n'y pensons pas beaucoup, car franchement, nous ne serions pas là si ce n'était pas vrai.
Cela semble trop abstrait? Ce n'est vraiment pas. Imaginons, par exemple, que vous tentiez de vous rendre chez vos amis si, au lieu de voitures, vous rencontriez des champs de plasma oscillant rapidement et des condensations momentanées de matière se déplaçant avec une gamme de vitesses extrêmement élevée. Un tel scénario pourrait réduire assez profondément les possibilités de socialisation, oui? Nous avons besoin d’objets, nous sommes des objets, et l’existence d’objets nous offre un niveau de simplification énorme et d’une importance cruciale pour l’environnement qui nous entoure.
Revenons donc au logiciel. Qu'est-ce que les objets du monde réel ont à dire sur les objets en termes de programmation?
En premier lieu, cela signifie que ce qui définit un "bon" objet dans un logiciel doit être de savoir si le type de données que vous manipulez prend facilement en charge l'idée de la persistance reconnaissable dans le temps .
Avec la définition, les formes les plus simples de POO sont faciles à reconnaître. Ce sont eux qui échappent un peu en n'utilisant que des données déjà "attachées" ou définies par un objet réellement réel, du monde réel, comme une personne, une maison ou une voiture. Même aujourd'hui, c'est encore trop souvent la seule définition des objets que les gens acquièrent dans les cours de logiciels. C'est dommage, car même les programmes triviaux orientés objet ont besoin d'une définition plus large que celle-là.
La deuxième catégorie d'objets, bien plus intéressante, consiste en ce que j'appellerai des événements immortalisés du monde réel . Par "immortalisé", j'entends des choses qui existent, du moins brièvement , en tant qu'entité ou collections bien définies dans le monde réel, mais qui se dispersent et cessent d'exister en tant que collections physiquement significatives. Un symposium est un bon exemple: le symposium existe depuis peu en tant que collection décemment bien définie de lieux et de personnes. Mais hélas, même les meilleures conférences doivent prendre fin et les différentes parties qui les ont constituées passent à d’autres activités.
Mais en utilisant des ordinateurs et des réseaux, nous pouvons faire en sorte qu'un symposium transitoire ressemble à un objet à long terme en capturant et en conservant une mémoire de celui-ci en tant qu'objet logiciel. Un grand nombre de choses que nous faisons avec les ordinateurs et les bases de données s’apparentent à ce type d’immortalisation d’événements transitoires, dans lesquels nous essayons en réalité d’enrichir notre univers réel en le capturant et en l’extrayant d’une manière qui ne peut exister physiquement. Par exemple, avez-vous vu une vraie Pandora récemment? De telles captures et extensions de pièces du monde réel contribuent à enrichir et à prolonger nos propres vies, nos économies et nos choix de manière remarquable. Pour moi, c’est le cœur de la programmation orientée objet, le lieu où elle a eu et continue d’avoir les impacts les plus remarquables.
Une dernière catégorie de POO est constituée d’objets qui n’ont pas de lien étroit avec des événements externes, mais qui constituent plutôt l’ infrastructure.nécessaire pour soutenir notre extension continue de la réalité en utilisant des objets immortalisés du monde réel. C’est là que vous pouvez descendre jusqu’au métal (semi) de l’ordinateur, en créant des fragments de réalité persistante qui, comme les éléments chimiques du monde réel, peuvent être combinés rapidement et de manière intéressante pour créer de nouveaux mondes internes. L'informatique mobile a permis de promouvoir la croissance de ce type d'approche hautement recombinatoire, qui imite encore à bien des égards les caractéristiques recombinatoires du monde physique. C'est également difficile: ce qui peut sembler être un bon choix peut, avec le temps, s'avérer être un mauvais choix, généralement parce qu'il finit par bloquer la diversité et l'expansion, au lieu de la soutenir.
Cette dernière catégorie souligne également les risques de l' utilisation d'un modèle unique pour la programmation, puisque tout comme le monde réel, les mondes programmés ont également besoin des processus qui ne le font pascorrespondent bien à des objets relativement invariables. La Terre regorge d'objets, mais le soleil regorge de flux d'énergie hautement dynamiques qui sont finalement nécessaires pour "conduire" les objets et les activités sur la Terre aux énergies inférieures. De même, en créant des mondes informatiques, il existe des cas où vous devez gérer des flux et des transformations et des contextes en mutation rapide qui, s'ils ne sont pas très semblables à des objets en eux-mêmes, sont néanmoins absolument essentiels pour permettre des objets plus simples et plus humains utilisés à des niveaux supérieurs. . Ce n’est pas un hasard si une grande partie de la programmation effectuée au niveau du noyau n’est pas manifestement semblable à un objet, ni qu’elle a tendance à s’appuyer fortement sur des langages comme le C qui sont davantage axés sur le traitement. Ce sont les domaines les plus profonds qui complètent la diversité fascinante que nous voyons plus haut dans les mondes générés par ordinateur.
L'autre domaine dans lequel la POO peut mal tourner est de trop se concentrer sur les vieux concepts d'objet.
Les objets du monde réel, et en particulier les objets vivants , ont un niveau absolument incroyable de capacité à interagir avec leur environnement de manière complexe et subtile. Des widgets composables qui se regardent, effectuent des vérifications de compatibilité et de cohérence, et trouvent peut-être même de nouvelles façons d'interagir se rapprochant beaucoup plus du concept biologique réel d'objets que ne le font les simples cadres et les simples systèmes d'héritage se concentrer sur (généralement par nécessité!) au niveau du code. C’est l’un des domaines de croissance pour les objets dans le cyber-monde, les approches les plus "analogues à celles d’agent" où la réactivité à l’environnement est la norme même au sein de la programmation elle-même.
Et tant pis pour ma "critique" de la POO! Néanmoins, j'espère cependant avoir expliqué pourquoi la création d'un cyber-monde plus riche signifie englober la diversité des styles de programmation, plutôt que de supposer qu'un "un seul" suffit. Mon sentiment est que les choses vraiment intéressantes sont encore à venir, peu importe la quantité de choses ordinaires que nous faisons maintenant!