Homoikonizität (self - imageability, or self - representability ) is the property of programming languages ​​that programs are data structures of the same language at the same time. In such languages ​​, it is easy to write programs that write programs.

An example of a programming language is Lisp homoikonischen: The basic data structures are lists, symbols, numbers, strings, and they have a simple external representation as S-expressions. Lisp programs are also formed from these data types. It thus results in Lisp in a natural way ( with the built-in functions for these data types ) the ability to manipulate program code.

As homoikonisch can most languages ​​of the Lisp family looking to continue Prolog, Smalltalk, REBOL, SNOBOL, XSLT, TRAC, Tcl, Io, Joy, PostScript, R, V, and Elixir.

In systems with Von Neumann architecture, which now includes the vast majority, the machine or assembly code is also homoikonisch, where language and data type are bytes.

Introduced the concept of Douglas McIlroy, 1960 in the document Macro Instruction Extensions of Compiler Languages ​​. 1965 used him a document on the text processing language TRAC. Alan Kay used the term in 1969 in his PhD thesis.