Question

Il y a une sorte de beauté dans relations qui surviennent. Prenons les exemples suivants:

  1. Les atomes sont constitués de particules subatomiques, les molécules sont composées d'atomes, les cellules sont composées de molécules, les organes sont constitués de cellules, les gens sont composés d'organes, les sociétés sont composées de personnes.
  2. Les stratégies complexes du de Go sont construits sur la nécessité de faire des structures avec « deux yeux » afin qu'ils survivrai -. mais la chose est jamais « deux yeux » énoncés dans les règles, mais lui-même est une propriété émergente des règles très simples de Go
  3. L'intégralité des Turing Conway's_Game_of_Life peut être prouvée en termes de planeurs , et href="http://en.wikipedia.org/wiki/Spaceship_%28cellular_automaton%29" rel="nofollow"> vaisseaux spatiaux , qui sont en tour basé sur le concept de et hors et jeu très simple des règles .

Dans tous les cas, un ensemble minimal d'objets et un ensemble de règles minimales conduisent finalement à la structure très complexe.

Ma première question: Est-il possible d'esquisser un petit ensemble de la programmation minimaliste « objets » et « règles » qui peuvent être utilisées pour construire un langage OOP

?

, intelligent informaticien va probablement pointer vers l'intégralité des 110 et dire que cela est tout ce que vous avez besoin! Mais ce n'est pas tout à fait ce que je suis à la recherche. Au contraire, au risque de poser, une question mal définie, ce sont les plus simples, les concepts compréhensibles par l'homme qui peuvent être intégrés dans un langage de programmation orienté objet?

Pour un mauvais exemple et incomplet qui laisse deviner ce que je veux, définissent trois objets conceptuels: référence , une fonction , et un titulaire de l'information . Ensuite (niveau 2?) Définir une structure pour être être titulaire d'information qui contient d'autres informations via des références à d'autres dossiers d'information. Un rudimentaire class (niveau 3?) Augmenterait les structures avec des références à des fonctions, mais une structure supplémentaire devrait être construit à des concepts de poignée de fonctions publiques privées vs. Au bout du compte, nous devrions arriver à un langage OOP complet qui a été construite uniquement sur des concepts fondamentaux et nulle part avons-nous triche par hardcoding optimisations ou sel syntaxique avec le code de la machine. Et idéalement, le résultat final serait toujours attrayant et un code lisible.

Ma deuxième question: Y a-t-il des langues POO là-bas qui approche déjà cette

Était-ce utile?

La solution

Prototypes

IO référence de la langue donne une bonne indication - la plus simple à approch POO semble être programmation basée prototype . Tout ce que vous avez besoin est essentiellement tableaux associatifs et fonctions de première classe .

Depuis de nombreuses structures de données, y compris le dictionnaire peut être mis en œuvre en termes de fonctions , nous sommes bientôt vers le bas pour un peu de sucre et la syntaxe lambda-calcul , qui couvre l'ensemble Turing-complet modèle de calcul.

Autres conseils

io est probablement le plus proche langue là-bas ce que vous cherchez.

Question intéressante, mais je ne suis pas tout à fait sûr qu'il est sensible.

Considérez que 1 et 0 sont nos atomes dans la science informatique. Ils sont strictement indivisible. Et diverses combinaisons d'entre elles donnent lieu à des programmes avec toutes sortes de propriétés étonnantes. Mais, il ne convient pas d'écrire dans 1 et 0, comme le niveau d'abstraction est trop faible.

Je pense que le même problème s'abattra votre langue. Si elle était suffisamment souple pour permettre la construction de quoi que ce soit, il serait inutilisable, et si ce n'était pas, il ne serait pas répondre à vos besoins.

Smalltalk est construit sur un ensemble très limité de primitives, mais ideoms OO sont là atomique. En théorie, vous pouvez construire un langage complexe arbitraire au-dessus d'une base aussi simple que SK ou lambda-calcul. caractéristiques OO ne sont pas différents, ils peuvent être réduits à un ensemble plus primitif. Tout système OO sur une macro Lisp primitive peut être un bon exemple.

Mise à jour : et jeter un oeil à systèmes de réécriture de dans général, il est une technique puissante pour définir la sémantique complexe sur des choses plus simples.

Je vous recommande également la lecture d'un livre http: // www .cambridge.org / fr / connaissances / isbn / item1132720 /? site_locale = en_GB

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top