Je suis à peu près à travers mon diplôme de programmation de jeux. Ce n'est pas un diplôme en informatique, donc une grande partie de la théorie est rejetée en faveur de la construction de portefeuille pratique et de ce que je considère comme l'apprentissage JIT, ce qui est apparemment plus important dans l'industrie des jeux. Le premier sujet était "Introduction à la programmation orientée objet".
Cette phrase ne m'a pas dérangé jusqu'à ce que j'apprenne les différents paradigmes de programmation (je reçois cette liste sur https://en.wikipedia.org/wiki/Comparison_of_programming_paradigms ):
- Impératif
- Fonctionnel
- De procédure
- Structuré
- Evénementiel
- Orienté objet
- Déclaratif
- Basé sur les automates
Je comprends que ce n'est pas une liste exhaustive, et que tous ces concepts ne sont pas égaux, et la plupart d'entre eux ne sont même pas exclusifs, mais je ne comprends pas pourquoi la plupart d'entre eux ne reçoivent qu'un seul mot - impératif; fonctionnel; déclarative - mais quand nous parlons de programmation avec des objets, nous devons clarifier que nous sommes orientés autour de ces objets. Ne pouvons-nous pas simplement utiliser des objets? Ne pouvons-nous pas simplement avoir des objets? Pourquoi doivent-ils nous orienter , notre étoile directrice?
En regardant ici ( https://en.wikipedia.org/wiki/Object-oriented_programming ), nulle part l'utilisation du terme "orienté" n'est adressée comme son propre terme. Seul "objet" est expliqué.
De plus, je peux voir pour des raisons pratiques pourquoi Event-Driven est utilisé, car la programmation d'événements est déjà une chose que vous faites lorsque vous organisez une conférence, et la programmation des automates donne l'impression que vous configurez une ligne de production robotique, il est donc utile d'y ajouter des mots de clarification.
Qu'est-ce qui rend la programmation d'objets, en tant que phrase, insuffisante pour décrire ce que nous faisons lorsque nous utilisons des objets dans notre programmation?
Évidemment, d'après mon ton, je n'aime pas trop le mot «orienté». Cela me rappelle mon temps en tant que sténographe judiciaire, écoutant avocat après avocat utiliser l'expression "en relation avec" comme une sorte de tic-tac verbal. Cela ne voulait rien dire; c'était juste un terme qu'ils utilisaient pour remplir l'air pendant qu'ils essayaient de penser à quoi dire ensuite. Cependant, je n'essaie pas de préconiser un changement de langue, je demande simplement pourquoi c'est ainsi. Si quelqu'un sait pourquoi cela a été connu de cette façon pour des raisons purement historiques et résiduelles, alors c'est la réponse. Ce sera des munitions si jamais je décide de perdre mon temps à plaider pour un changement de langue.
D'un autre côté, s'il existe effectivement une raison utile pour laquelle un langage ou un morceau de code doit pointer vers des objets, à l'exclusion de toutes les autres directions, au lieu de simplement les avoir dans sa ceinture d' outils , en tant qu'outils , je serais vraiment intéressé à en savoir plus. J'aime apprendre des choses utiles.
la source
Réponses:
Je crois que vous lisiez façon trop en une simple construction grammaticale. Jetez un œil à votre liste de paradigmes, classés différemment pour une raison que nous verrons bientôt:
Qu'est-ce que tous ces mots ont en commun? Ce sont tous des adjectifs car ils sont destinés à modifier le mot "programmation". De plus, à l'exception de «impératif», ce ne sont pas tous des adjectifs «naturels», mais des noms «adjectifiés» - des noms qui décrivent en fait le cœur du paradigme: fonction, structure, automates et objet.
Et il y a deux manières différentes dont les noms sont adjectifiés: à travers un suffixe comme -al ou -ed, ou à travers la création d'un mot composite à l'aide d'un trait d'union. Maintenant, comme Doc Brown l'a souligné, les suffixes qui pourraient être utilisés pour adjectifier "objet" ont un sens différent. Ce qui laisse de la composition.
Et je soutiens que c'est une pure coïncidence ou goût qu'Alan Kay a choisi d'utiliser "orienté" pour son adjectif composite "orienté objet". Il aurait tout aussi bien pu être «piloté par un objet» ou «basé sur un objet», et vous pourriez également en lire trop. "Conduit" ne ressemble-t-il pas à une sorte d'obsession malsaine?
la source
Franchement, c'est une trace de l'histoire. La programmation fonctionnelle est vraiment une programmation orientée fonction, la programmation déclarative est vraiment une programmation orientée déclaration ... après tout, n'utilisons-nous pas seulement des fonctions? Ne pouvons-nous pas simplement avoir des fonctions?
"Orienté objet" roule mieux sur la langue et est historiquement enraciné.
L '«orientation» vient du fait que nous ne parlons pas de programmation mais de design. Ce n'est pas parce que nous utilisons des objets, des fonctions ou des événements que notre méthodologie de conception se fait en modélisant les trois. En spécifiant l'orientation de la méthodologie de conception, il aide à communiquer aux programmeurs comment ils doivent interpréter et étendre cette conception - comment le focus de modélisation colore l'implémentation.
la source
L'appeler pour aider à expliquer que les objets sont une partie très importante du paradigme.
La programmation orientée objet a ses racines dans Simula , qui était essentiellement ALGOL plus quelques nouvelles fonctionnalités de programmation objet. Et conformément à cette histoire, même aujourd'hui, il est tout à fait possible dans de nombreux langages (même les "langages OO purs") de coder quelque chose qui n'est essentiellement qu'un programme procédural avec quelques objets. Mais cela est considéré comme un mauvais style par les développeurs plus expérimentés.
En fait, faire quelque chose "de la manière orientée objet" est très différent de "la manière procédurale". Le concept le plus important est l'utilisation de l'hérédité et du polymorphisme. Lorsque vous comprenez et intériorisez vraiment le fonctionnement des classes et des méthodes virtuelles, c'est une expérience révélatrice qui change la façon dont vous écrivez du code dans de nombreux cas, un véritable changement de paradigme. (En supposant, bien sûr, que vous avez commencé par écrire du code procédural en premier. Beaucoup d'étudiants de nos jours vont directement à Java ou C # comme première langue, et à l'OMI, ils ne comprennent pas vraiment les avantages de l'OO en le faisant.)
Nous l'appelons programmation orientée objet car un programme écrit en style OO ne contient pas seulement des objets; la structure de l'ensemble du programme est basée sur eux et sur la façon dont ils fonctionnent.
la source