La réification
La réification est une forme de l'instanciation. Lorsque vous concrétiser un concept, vous prenez quelque chose d'abstrait et de le rendre concret, tout comme la définition du dictionnaire que vous avez fournis.
Vous pouvez choisir de concrétiser un type comme un terme qui habitent certains arbre de syntaxe abstraite de types possibles.
Vous pourriez concrétiser un modèle de conception par venir avec un objectif général de mise en œuvre pour certaines langues. Par exemple, quelque chose comme
template<typename T> class Singleton {
public:
static T& Instance() {
static T me;
return me;
}
protected:
virtual ~Singleton() {};
Singleton() {};
}
réifie le modèle de conception singleton comme un modèle en C++.
Vous pouvez réification Hoare l'idée de quicksort dans la mise en œuvre dans le langage de programmation de votre choix. Dans cette veine, je passe beaucoup de temps chosification des concepts à partir de la catégorie de la théorie du code Haskell.
Vous pouvez réification d'une langue comme d'un interprète pour la langue. Larry Wall idée de Perl la langue est réifiée que l'interpréteur perl.
Les données réification et de vide paquets réification des termes sous forme de graphiques représentant la façon dont il est structuré en mémoire avec le partage.
La réflexion
Le revers de la médaille de la réification est une réflexionqui prend quelque chose de concret, et génère une abstraction, généralement par l'oubli de certains détails. Peut-être vous voulez faire cela, parce que l'abstraction est plus simple, ou en quelque sorte capture l'essence de ce dont vous parlez.
Type de système de réflexion en Java, C#, etc. prend un béton de classe dans un langage de programmation, et vous fournit la structure abstraite une classe, vous donnant accès à la liste de ce que les membres de vos classes. Ici, nous prenons la notion concrète d'un type, et la production d'un terme abstrait qui décrit sa structure, et de rejeter toutes les valeurs particulières.
Comme la façon dont vous pouvez concrétiser un langage de programmation dans une application, vous pouvez quelques fois aller dans la direction opposée. Si cela est généralement considéré comme une mauvaise idée, vous pourriez prendre une mise en œuvre et d'essayer de réfléchir un langage de spécification de l'propriétés souhaitables de son comportement. TeX a été d'abord mises en œuvre par Knuth, sans spécification. Toute spécification de TeX a été traduit à partir de Knuth est mise en œuvre.
(Plus formellement, si vous affichez la réflexion en tant que oublieux foncteur qui vous transporte d'un béton de domaine à un résumé de domaine, puis de la réification, de préférence, gauche adjoint à la réflexion.)
La réflexion paquet-je maintenir fournit une réification méthode qui prend un terme et les rendements d'un type qui la représente, puis une méthode reflect, qui vous permet de générer un nouveau terme. Ici, le "concret" de domaine est le système de type, et l'abrégé de domaine sont des termes.