fbpx
Wikipedia

Homoiconicidad

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,[1]​ según la temprana y muy influyente publicación TRAC, A Text-Handling Language:[2]

Uno de los objetivos principales de diseño era que el código de entrada TRAC (lo que es introducido por el usuario) debería ser idéntico al texto que guía la acción interna del procesador TRAC. En otras palabras, los programas TRAC deberían ser almacenados en memoria como una cadena de caracteres exactamente del mismo modo que el usuario los introduce en el teclado. Si los programas TRAC evolucionan en nuevos programas, éstos deben ser también establecidos en el mismo código. El procesador TRAC interpreta este código como su programa. En otras palabras, el programa traductor TRAC (el procesador) convierte el ordenador en otro ordenador con un nuevo lenguaje de programación -- el lenguaje TRAC. En cualquier momento, debería ser posible mostrar información procedural o del programa del mismo modo que el procesador TRAC actuará sobre él durante su ejecución. Es deseable que el código interno de representación sea idéntico, o muy similar, a la representación externa. En la actual implementación TRAC, la representación de caracteres interna está basada en ASCII. Ya que los programas TRAC y su código tienen la misma representación interna y externamente, el término homoicónico es aplicable, del homo significando igual, y de icono significando representación.

[...]

Siguiente sugerencia de McCullough, W. S., basada en terminología debida a Peirce, C. S. s McIlroy. M. D., "Macro Instruction Extensions of Compiler Languages," Comm. ACM, p. 214-220; April, 1960.

Alan Kay usó y posiblemente popularizó el término "homoicónico" a través de su tesis doctoral de 1969:[3]

Un grupo notable a todos los sistemas previos son Interactive LISP [...] y TRAC. Ambos son lenguajes funcionales (uno de listas, otro de cadenas), ambos se comunican con el usuario con un lenguaje, y ambos son homoicónicos en cuanto que su representación interna y externa son esencialmente las mismas. Ambos tienen la habilidad de crear dinámicamente nuevas funciones que pueden ser entonces elaboradas a medida del usuario. ¡Su única contraprestación es que los programas escritos con ellos parecen la carta del rey Burna Buriash a los sumerios escrita en cuneiforme babilónico! [...]

Uso y ventajas

Una ventaja de la homoiconidad 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 homoiconicdad es el evaluador metacircular.

Lenguajes homoicónicos

Los lenguajes considerados homoicónicos son:

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

  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)
  •   Datos: Q925488

homoiconicidad, programación, informática, homoiconicidad, propiedad, algunos, lenguajes, programación, cuales, representación, primaria, estos, también, estructura, datos, tipo, primitivo, lenguaje, Índice, orígenes, ventajas, lenguajes, homoicónicos, enlaces. En programacion informatica la homoiconicidad es una propiedad de algunos lenguajes de programacion en los cuales la representacion primaria de estos es tambien una estructura de datos en un tipo primitivo del lenguaje Indice 1 Origenes 2 Uso y ventajas 3 Lenguajes homoiconicos 4 Enlaces externos 5 ReferenciasOrigenes EditarLa fuente original es la publicacion Macro Instruction Extensions of Compiler Languages 1 segun la temprana y muy influyente publicacion TRAC A Text Handling Language 2 Uno de los objetivos principales de diseno era que el codigo de entrada TRAC lo que es introducido por el usuario deberia ser identico al texto que guia la accion interna del procesador TRAC En otras palabras los programas TRAC deberian ser almacenados en memoria como una cadena de caracteres exactamente del mismo modo que el usuario los introduce en el teclado Si los programas TRAC evolucionan en nuevos programas estos deben ser tambien establecidos en el mismo codigo El procesador TRAC interpreta este codigo como su programa En otras palabras el programa traductor TRAC el procesador convierte el ordenador en otro ordenador con un nuevo lenguaje de programacion el lenguaje TRAC En cualquier momento deberia ser posible mostrar informacion procedural o del programa del mismo modo que el procesador TRAC actuara sobre el durante su ejecucion Es deseable que el codigo interno de representacion sea identico o muy similar a la representacion externa En la actual implementacion TRAC la representacion de caracteres interna esta basada en ASCII Ya que los programas TRAC y su codigo tienen la misma representacion interna y externamente el termino homoiconico es aplicable del homo significando igual y de icono significando representacion Siguiente sugerencia de McCullough W S basada en terminologia debida a Peirce C S s McIlroy M D Macro Instruction Extensions of Compiler Languages Comm ACM p 214 220 April 1960 Alan Kay uso y posiblemente popularizo el termino homoiconico a traves de su tesis doctoral de 1969 3 Un grupo notable a todos los sistemas previos son Interactive LISP y TRAC Ambos son lenguajes funcionales uno de listas otro de cadenas ambos se comunican con el usuario con un lenguaje y ambos son homoiconicos en cuanto que su representacion interna y externa son esencialmente las mismas Ambos tienen la habilidad de crear dinamicamente nuevas funciones que pueden ser entonces elaboradas a medida del usuario Su unica contraprestacion es que los programas escritos con ellos parecen la carta del rey Burna Buriash a los sumerios escrita en cuneiforme babilonico Uso y ventajas EditarUna ventaja de la homoiconidad es que extender el lenguaje con nuevos conceptos habitualmente se hace mas sencillo Ya que los datos representando el codigo puede ser pasado entre las capas base y meta del programa El arbol de sintaxis abstracta de una funcion puede ser compuesta y manipulada como una estructura de datos en la capa meta y entonces evaluadaUna demostracion tipica de la homoiconicdad es el evaluador metacircular Lenguajes homoiconicos EditarLos lenguajes considerados homoiconicos son Curl Factor Forth Io Ioke Joy Julia Casi todos los miembros de la familia Lisp PostScript Prolog REBOL Tcl TRAC Smalltalk SNOBOL V XSLTEn los sistemas con arquitectura Von Neumann incluyendo la vasta mayoria de los sistemas actuales el codigo maquina tambien tiene esta propiedad siendo el tipo de datos bytes en memoria Enlaces externos EditarDefinicion de homoiconicidad en C2 Wiki Referencias Editar Douglas McIlroy 1960 Macro Instruction Extensions of Compiler Languages Calvin Mooers and L Peter Deutsch 1965 TRAC A Text Handling Language Alan Kay 1969 The Reactive Engine PhD thesis Accessed 20061229 Datos Q925488Obtenido de https es wikipedia org w index php title Homoiconicidad amp oldid 129961859, wikipedia, wiki, leyendo, leer, libro, biblioteca,

español

, española, descargar, gratis, descargar gratis, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, imagen, música, canción, película, libro, juego, juegos