Je ne peux pas penser à un meilleur endroit parmi les frères et sœurs SO pour poser une telle question. À l'origine, je voulais demander "Le python est-il un pur langage OO?" mais compte tenu des problèmes et de l'inconfort que ressentent les gens en essayant de définir le terme, j'ai décidé de commencer par obtenir une définition claire du terme lui-même.
Il serait plutôt juste de commencer par la correspondance du Dr Alan Kay, qui a inventé le terme (notez l'inspiration dans l'analogie biologique avec les cellules ou d'autres objets vivants).
Il existe différentes façons d'aborder la tâche:
- Donnez une analyse comparative en répertoriant les langages de programmation qui peuvent présenter (ou ne pas le faire) certaines propriétés uniques et suffisantes pour définir le terme (bien que Smalltalk, Scala,
Java, etc.) sont des exemples possibles mais IMO de cette façon ne semble ni vraiment complet ni fructueux ) - Donnez une définition formelle (ou proche d'elle, par exemple dans un style plus académique ou mathématique).
- Donnez une définition philosophique qui dépendrait totalement du contexte sémantique d'un langage concret ou d'une expérience de programmation a priori (il doit y avoir une chance d'explication réussie par la communauté).
Ma version actuelle: "Si un certain langage de programmation ( formel ) qui peut ( grammaticalement ) faire la différence entre les opérations et les opérandes ainsi que déduire du type de chaque opérande si ce type est un objet (au sens de la POO) ou non, alors nous appelons un tel langage est un langage OO tant qu'il y a au moins un type dans ce langage qui est un objet. Enfin, si tous les types de langage sont également des objets, nous définissons ce langage comme étant un langage OO pur (fort). "
J'apprécierais toute amélioration possible de celui-ci. Comme vous pouvez le voir, je viens de rendre la définition dépendante du terme "objet" (souvent entièrement référencé comme classe d'objets).
[ÉDITER]
De plus, j'utilise (heureusement bien compris) la notion de type comme dans les langages typés. La programmation de type de données ou la programmation orientée type n'est pas seulement une interprétation syntaxique (du texte du programme, c'est-à-dire comment traiter certaines valeurs des littéraux et des variables de données - quelque chose qui évolue en sécurité de type) mais peut être attribuée à la grammaire du langage et étudiée de manière formelle (en utilisant la logique mathématique) en tant que systèmes dits . Notez que l'exigence d'un système de type particulier d'avoir un type dit universel est l'une des façons de définir la pureté du langage OO (il existe des moyens de l'étendre sémantiquement).
NB
comment répondre :
- cela aide si vous spécifiez un livre ou une référence qui soutient / explique votre compréhension de la terminologie et des concepts (généralement une bonne définition couvre ou fait référence à tous les concepts dépendants sauf élémentaire).
- si possible, indiquez une catégorie en retrait de votre réponse / définition si ce n'est pas clair autrement (voir ci-dessus: 1 - par exemple de langage, 2 - logique mathématique, 3 - description technique et philosophie de programmation)
- la classification est importante (et aussi parce que le terme pure-OO est inclus dans le terme OO) tout en répondant, essayez de démêler les éléments du paradigme OO d'autres méthodologies bien connues (et en aucun cas les confondre / les chevaucher, par exemple, typiquement, des éléments de programmation modulaire peuvent être couverts / incorporé à la programmation OO): essayer de distinguer la POO de (incluant ou faisant partie de) la programmation fonctionnelle, la programmation logique (particulièrement fortement spécialisée), les types de données Abstarct (ADT), modulaire, la métaprogrammation (génériques et macro-expansion de LISP), Contrats (par exemple Eiffel), orientés aspect (AO), (la différence entre la classification déclarative et fonctionnelle ainsi que les définitions historiques de la structure de Dijkstra sont claires)
sur la difficulté de donner une définition formelle : assez étonnamment, il est très facile de donner une description mathématique de la POO sous la forme d'un certain système logique (formel) (très probablement basé sur le type) et de définir un concept après l'autre. On peut même essayer de faire quelque chose de plus pratique en appliquant ce formalisme à la vérification de la sécurité du type ou à de nouveaux aspects de conception de langage que simplement un divertissement abstraitou un exercice (également formulation de recherche de POO dans la théorie des types intuitionistes , types dépendants , indépendamment, dans les formalismes FOL comme le calcul lambda et juste en utilisant la théorie des catégories). Un point principal ici est que sans surpriseces formulations OMI sont fortement biaisées (défectueuses) par une compréhension très probablement initialement incomplète de la POO (en ingénierie informatique) et finissent par être presque inaccessibles par la suite (contribuant ainsi à peine à l'arrière du monde de la programmation - peut-être qu'un certain pourcentage trouve des applications de retour du monde formel en étant intégré dans les langues populaires ).
Alors oui, il est difficile de donner exactement une "bonne" définition, pas seulement une définition. Mais je suis certain de poser cette question ici en raison de votre expérience et de votre implication directe, les gars.