miniaturadeimagen|Un árbol de sintaxis simplificado para una operación o prefijo algebraico de tipo polaco, junto con su sintaxis Clojure equivalente. En programación informática, la homoiconicidad es una propiedad de algunos lenguajes de programación, en los cuales la representación primaria de estos es también una estructura de datos en un tipo primitivo del lenguaje.
Orígenes La fuente original es la publicación Macro Instruction Extensions of Compiler Languages,Douglas McIlroy (1960) Macro Instruction Extensions of Compiler Languages según la temprana y muy influyente publicación TRAC, A Text-Handling Language:Calvin Mooers and L. Peter Deutsch (1965) TRAC, A Text-Handling Language
Alan Kay usó y posiblemente popularizó el término "homoicónico" a través de su tesis doctoral de 1969:Alan Kay (1969) The Reactive Engine, PhD thesis (Accessed 20061229)
Uso y ventajas
Una ventaja de la homoiconicidad es que extender el lenguaje con nuevos conceptos habitualmente se hace más sencillo. Ya que los datos representando el código puede ser pasado entre las capas base y meta del programa. El árbol de sintaxis abstracta de una función puede ser compuesta y manipulada como una estructura de datos en la capa meta, y entonces, evaluada
Una demostración típica de la homoiconicidad es el evaluador metacircular.
Lenguajes homoicónicos
Los lenguajes considerados homoicónicos son:
Curl Factor Forth Ío Ioke Joy Julia Casi todos los miembros de la familia Lisp PostScript Prolog REBOL Tcl TRAC Smalltalk SNOBOL V XSLT
En los sistemas con arquitectura Von Neumann (incluyendo la vasta mayoría de los sistemas actuales), el código máquina también tiene esta propiedad, siendo el tipo de datos bytes en memoria.
Enlaces externos Definición de homoiconicidad en C2 Wiki.
Referencias
Categoría:Programación