Homoikonizität

aus Wikipedia, der freien Enzyklopädie
Wechseln zu: Navigation, Suche

Homoikonizität (Selbst-Abbildbarkeit, oder Selbst-Repräsentierbarkeit) ist die Eigenschaft von Programmiersprachen, dass Programme gleichzeitig Datenstrukturen derselben Sprache sind. In solchen Sprachen ist es einfach, Programme zu schreiben, die Programme schreiben.

Ein Beispiel einer homoikonischen Programmiersprache ist Lisp: Die grundlegenden Datenstrukturen sind Listen, Symbole, Zahlen, Strings und diese haben eine einfache externe Repräsentation als S-Expressions. Lisp-Programme werden ebenfalls aus diesen Datentypen gebildet. Es ergibt sich somit in Lisp auf natürliche Weise (mit den eingebauten Funktionen für diese Datentypen) die Möglichkeit, Programmcode zu manipulieren.

Als homoikonisch kann man die meisten Sprachen der Lisp-Familie betrachten, weiterhin Prolog, REBOL, SNOBOL, XSLT, TRAC, Tcl, Io, Joy, PostScript, R, V und Elixir.

In Systemen mit Von-Neumann-Architektur, zu denen heute die weit überwiegende Mehrzahl gehört, ist der Maschinen- bzw. Assemblercode ebenfalls homoikonisch, wobei Sprache und Datentyp Bytes sind.

Eingeführt wurde der Begriff von Douglas McIlroy 1960 in dem Dokument Macro Instruction Extensions of Compiler Languages.[1] 1965 verwendet ihn ein Dokument über die Textverarbeitungssprache TRAC. [2] Alan Kay benutzte den Begriff 1969 in seiner Dissertationsschrift.[3]

Weblinks[Bearbeiten]

Quellen[Bearbeiten]

  1. Douglas McIlroy (1960) Macro Instruction Extensions of Compiler Languages
  2. Calvin Mooers and L. Peter Deutsch (1965) TRAC, A Text-Handling Language
  3. Alan Kay (1969) The Reactive Engine, PhD thesis (Accessed 20061229)