Factor (lenguaje de programación)


Factor es un lenguaje de programación orientado a pilas creado por Slava Pestov. Factor se escribe dinámicamente y tiene administración automática de memoria , así como potentes funciones de metaprogramación. El lenguaje tiene una implementación única con un compilador de optimización autohospedado y un entorno de desarrollo interactivo . La distribución de Factor incluye una gran biblioteca estándar .

Slava Pestov creó Factor en 2003 como un lenguaje de programación para un videojuego . [1] La implementación inicial, ahora denominada JFactor, se implementó en Java y se ejecutó en la máquina virtual Java . Aunque el lenguaje temprano se parecía a Factor moderno superficialmente en términos de sintaxis , el lenguaje moderno es muy diferente en términos prácticos y la implementación actual es mucho más rápida.

El idioma ha cambiado significativamente con el tiempo. Originalmente, los programas de Factor se centraban en manipular objetos Java con las capacidades de reflexión de Java . Desde el principio, la filosofía del diseño ha sido modificar el lenguaje para adaptarlo a los programas escritos en él. A medida que la implementación de Factor y las bibliotecas estándar se hicieron más detalladas, la necesidad de ciertas características del lenguaje se hizo evidente y se agregaron. JFactor no tenía un sistema de objetos donde pudieras definir tus propias clases , y las primeras versiones de Factor nativo eran las mismas; el lenguaje era similar a Scheme en este sentido. Hoy, el sistema de objetos es una parte central de Factor. Otras características importantes del lenguaje, como clases de tuplas , alineación de combinador,macros , palabras de análisis definidas por el usuario y el sistema de vocabulario moderno solo se agregaron de manera fragmentada a medida que su utilidad se hizo evidente.

La interfaz de función ajena estuvo presente desde las primeras versiones de Factor, y existía un sistema análogo en JFactor. Esto se eligió en lugar de crear un complemento para la parte C de la implementación para cada biblioteca externa con la que Factor debería comunicarse, y tiene la ventaja de ser más declarativo , más rápido de compilar y más fácil de escribir.

La implementación de Java inicialmente consistía en solo un intérprete , pero luego se agregó un compilador para el código de bytes de Java . Este compilador solo funcionó en ciertos procedimientos. La versión Java de Factor fue reemplazada por una versión escrita en C y Factor. Inicialmente, este consistía solo en un intérprete, pero el intérprete fue reemplazado por dos compiladores, usados ​​en diferentes situaciones. Con el tiempo, la implementación de Factor ha crecido significativamente más rápido. [2]

Factor es un lenguaje de programación de tipo dinámico , funcional y orientado a objetos . El código está estructurado en torno a pequeños procedimientos, llamados palabras. En el código típico, tienen entre 1 y 3 líneas de longitud, y un procedimiento de más de 7 líneas es muy poco común. Algo que se expresaría idiomáticamente con un procedimiento en otro lenguaje de programación se escribiría como varias palabras en Factor. [3]