Articulo de referencia

Proyecto

En informática , un quaject es una estructura de datos similar a un objeto que contiene tanto datos como código (o punteros a código), expuesta como una interfaz en forma de cal...

En informática , un quaject es una estructura de datos similar a un objeto que contiene tanto datos como código (o punteros a código), expuesta como una interfaz en forma de callentries , y puede aceptar una lista de callentries a otros quajects para devoluciones de llamadas y llamadas de salida . Fueron desarrollados por Alexia Massalin en 1989 para el núcleo Synthesis , [1] y nombrados por la Qua! Machine , una plataforma de hardware única construida por Massalin. El origen del término 'qua' no está claro; Massalin afirma con humor que es un sonido hecho por koalas . [2]

El objetivo principal de los quajects es proporcionar una abstracción para gestionar el código automodificable , permitiendo la optimización del código en tiempo de ejecución por objeto. Si bien el núcleo Synthesis original requería que los quajects se escribieran en lenguaje ensamblador desarrollado a mano , esto se hizo para evitar el desarrollo de un compilador complejo; Massalin señaló que la compilación justo a tiempo (JIT) para un lenguaje de programación de alto nivel que permite la generación de código en tiempo de ejecución , como en Lisp o Smalltalk , también puede aplicar este enfoque, aunque también afirmó que la complejidad de un compilador de este tipo probablemente sería prohibitiva.

Los quajects se diferencian de los objetos más convencionales en dos aspectos clave: primero, siempre utilizan una forma del patrón de inyección de dependencia para gestionar tanto las interfaces con otros quajects como las continuaciones fuera del quaject; la lista de referencias de entrada de llamada para esto es parte de la creación del quaject y puede actualizarse durante la vida útil del quaject. En segundo lugar, y más importante, el conjunto de métodos de un quaject determinado puede ser exclusivo del quaject específico; los métodos para un tipo o clase de quajects se almacenan como una o más plantillas, en lugar de como código fijo. Si bien se puede acceder a los métodos compartidos a través de una tabla común de punteros, los quajects individuales también pueden tener métodos que se generan específicamente para adaptar el rendimiento al comportamiento de ese quaject.

Referencias

  1. ^ Pu, Calton ; Massalin, Henry ; Ioannidis, John (1992). Síntesis: una implementación eficiente de los servicios fundamentales del sistema operativo (PDF) (tesis doctoral). Nueva York: Departamento de Ciencias de la Computación, Universidad de Columbia . UMI Order No. GAX92-32050. Archivado (PDF) desde el original el 2017-07-04 . Consultado el 2012-04-25 .[1] Archivado el 12 de marzo de 2016 en Wayback Machine.
    • Valerie Henson (20 de febrero de 2008). "KHB: Síntesis: una implementación eficiente de los servicios fundamentales de los sistemas operativos". LWN.net .
  2. ^ Poole, Gary Andrew (1 de diciembre de 1996). "Qua". Wired . Condé Nast. Archivado desde el original el 4 de julio de 2017. Consultado el 23 de agosto de 2016 .
Obtenido de "https://es.wikipedia.org/w/index.php?title=Quaject&oldid=1245770146"