Reifikacja
Reifikacja jest formą instancji. Kiedy reifikujesz pojęcie, bierzesz coś abstrakcyjnego i nadajesz mu konkret, tak jak podana definicja słownikowa.
Możesz zdecydować się na reifikację typu jako terminu zamieszkującego jakieś abstrakcyjne drzewo składniowe możliwych typów.
Możesz zreifikować wzorzec projektowy, wymyślając implementację ogólnego przeznaczenia w jakimś języku. Na przykład coś takiego
template<typename T> class Singleton {
public:
static T& Instance() {
static T me;
return me;
}
protected:
virtual ~Singleton() {};
Singleton() {};
}
reifikuje pojedynczy wzorzec projektowy jako szablon w C ++.
Możesz przekształcić pomysł Hoare na szybkie sortowanie w implementację w wybranym języku programowania. W tym duchu spędzam dużo czasu na przekształcaniu koncepcji z teorii kategorii do kodu Haskella.
Możesz reifikować język jako tłumacz dla tego języka. Pomysł Larry'ego Walla na język Perl został zreifikowany jako interpreter perla.
Te dane-zreifikować i próżniowe opakowania zreifikować terminy jak wykresy reprezentujące jak jest skonstruowany w pamięci z dzielenia.
Odbicie
Drugą stroną urzeczowienia jest refleksja , która bierze coś konkretnego i generuje abstrakcję, zwykle zapominając o niektórych szczegółach. Być może chcesz to zrobić, ponieważ abstrakcja jest prostsza lub w jakiś sposób oddaje istotę tego, o czym mówisz.
Odbicie systemu typów w Javie, C # itp. Przyjmuje konkretną klasę w języku programowania i zapewnia abstrakcyjną strukturę klasy, dając dostęp do listy elementów członkowskich, które zapewniają te klasy. Tutaj bierzemy konkretne pojęcie typu i generujemy z niego abstrakcyjny termin, który opisuje jego strukturę, jednocześnie odrzucając jakiekolwiek określone wartości.
Podobnie jak w przypadku przekształcania języka programowania w implementację, czasami możesz pójść w przeciwnym kierunku. Chociaż jest to ogólnie uważane za zły pomysł, możesz wziąć implementację i spróbować odzwierciedlić specyfikację języka na podstawie pożądanych właściwości jego zachowania. TeX został zaimplementowany jako pierwszy przez Knutha, bez specyfikacji. Każda specyfikacja TeX została odzwierciedlona w implementacji Knutha.
(Bardziej formalnie, jeśli postrzegasz refleksję jako zapominalski funktor, który przenosi cię z domeny konkretnej do domeny abstrakcyjnej, wówczas reifikacja jest najlepiej pozostawiona w połączeniu z refleksją).
Odbicie pakiet utrzymuję zapewnia zreifikować metodę, która przyjmuje termin i dające rodzaj, który reprezentuje go, a następnie odbić metodę, która pozwala wygenerować nowy termin. W tym przypadku domena „konkretna” to system typów, a domena abstrakcyjna to terminy.