Forth

Forth es deletreado a veces con todas las letras en mayúsculas siguiendo el uso acostumbrado durante los primeros años, aunque el nombre no es un acrónimo.

Aunque no es tan popular como otros sistemas de programación, Forth tiene suficiente soporte para mantener varios vendedores y contratistas lenguaje en el negocio.

Forth es usado actualmente en cargadores (boot loaders) tales como Open Firmware, aplicaciones espaciales,[1]​ y otros sistemas empotrados.

El usuario interactivamente define y corre subrutinas, o «palabras», en una máquina virtual similar al ambiente de runtime.

Las palabras pueden ser probadas, redefinidas, y depuradas a medida que el código fuente es ingresado sin recompilar o reiniciar el programa entero.

Todos los elementos sintácticos, incluyendo las variables y los operadores básicos, aparecen como tales procedimientos (en forma de palabras).

Donde los compiladores C ahora pueden generar código más compacto y con mejor desempeño, Forth conserva la ventaja de la interactividad.

[5]​ Otros usos de Forth incluyen Open Firmware, boot ROMs usadas por Apple, IBM, Sun, y OLPC XO-1; y la primera etapa del controlador de arranque basada en FICL del sistema operativo FreeBSD.

en 1973, refinando y portando sistemas Forth a docenas de otras plataformas en la siguiente década.

MicroFORTH fue usado después por aficionados para generar sistemas Forth para otras arquitecturas, tales como los MOS 6502 de 1978.

Por lo menos un computador personal, el Jupiter Ace británico, tenía a Forth en su sistema operativo residente en ROM.

La palabra FLOOR5 es equivalente a esta función escrita en el lenguaje de programación C: Esta función se escribe más sucintamente como: Se puede correr esta palabra como sigue: Primero el interpretador empuja (push) un número (1 u 8) sobre la pila, después llama a FLOOR5, que retira (pop) este número otra vez y empuja el resultado.

Finalmente, una llamada a «.» retira el resultado de la pila y lo imprime al terminal del usuario.

El analizador sintáctico (parser) de Forth es simple, puesto que no tiene una gramática explícita.

[13]​ La mayoría de los sistemas Forth incluyen un ensamblador especializado que produce palabras ejecutables.

Otras facilidades no estándar incluyen un mecanismo para hacer llamadas al SO o al sistema de ventanas anfitrión, y muchos proporcionan extensiones que emplean la previsiones proporcionadas por el sistema operativo.

Un sistema Forth con todas las facilidades, con todo el código fuente, se compilará a sí mismo, con una técnica comúnmente llamada por los programadores Forth como metacompilación (aunque el término no equivale exactamente a la metacompilación como se define normalmente).

Usualmente el método consiste en redefinir un puñado de palabras que ponen bits compilados en la memoria.

Para los sistemas embebidos, el código puede ser escrito en otro computador, una técnica conocida como compilación cruzada, sobre un puerto serial o aún por un solo bit TTL, mientras se mantienen los nombres de las palabras y otras partes no ejecutables del diccionario en la computadora de compilación original.

Con frecuencia la parte que consume más tiempo de escribir un puerto remoto es construir el programa inicial para implementar fecth, store y execute, pero muchos microprocesadores modernos tienen características de depuradores integrados (tales como el Motorola CPU32) que eliminan esta tarea.

Sin embargo, ciertos componentes casi siempre están presentes, aunque el tamaño exacto y la orden pueden variar.

Descrito como estructura, una entrada de diccionario pudo verse así:[19]​ El campo nombre comienza con un prefijo que da la longitud del nombre de la palabra (típicamente hasta 32 bytes), y varios bits para los flags.

Dependiendo de la implementación particular del Forth, puede haber para alineación, uno o más bytes NUL (« \0 »).

El puntero puede ser un desplazamiento relativo o una dirección absoluta que apunta al hermano anterior.

El compilador en sí mismo consiste de palabras Forth visibles al sistema, no es un programa monolítico.

El intérprete continúa leyendo palabras delimitadas por espacio desde el dispositivo de entrada del usuario.

( (paréntesis abierto) y \ (barra de división hacia atrás) son palabras como el resto, y por ello tienen que estar separadas de lo que las sigue (en este caso el comentario) por al menos un espacio en blanco.

Algunos ejemplos incluyen buffers circulares, bits con nombres en puertos de E/S, y arreglos automáticamente indexados.

Los objetos de datos definidos por estas palabras y similares, son globales en alcance.

Listados aquí están algunos de los sistemas más prominentes que se conforman al estándar ANS Forth 1994.