Focal

Focal
Semántica imperativo
clase de idioma lenguaje de programación
tipo de ejecución Interprete
Apareció en 1968
Autor Richard Merrill ( Richard Merrill )
sistema de tipos un tipo - real
Implementaciones principales museo FOCAL-81 para sistemas POSIX
Dialectos FOCAL-69 ("clásico"), FOCAL 1971, FOCAL 11, FOCAL-81
sido influenciado joss

Focal ( Focal , un acrónimo del inglés  fórmula calculadora ) es un lenguaje de programación interpretado de alto nivel , una reelaboración del lenguaje JOSS .

La mayor contribución al desarrollo del lenguaje fue realizada por Richard Merrill , uno de  los desarrolladores clave de DEC PDP-8 , quien creó los intérpretes Focal originales (en 1968 ) y clásicos (FOCAL-69) para el PDP-8. Focal fue comercializado por DEC como un "lenguaje tipo JOSS".

Al igual que las primeras versiones de BASIC (que aparecieron 7 años después), el propio intérprete de Focal proporcionaba todo el entorno de software necesario y no necesitaba un sistema operativo .

Focal es extremadamente poco exigente con los recursos. Entonces, trabajó en las versiones más simples del PDP-8, incluidos los sistemas sin dispositivos de almacenamiento. Las versiones multiusuario del intérprete admitían el trabajo simultáneo de hasta cuatro usuarios en terminales de teletipo. Se crearon implementaciones posteriores para el PDP-7/9 y el PDP-11 .

The Coca-Cola Company usó una versión modificada internamente de Focal llamada COKE.

De las computadoras soviéticas, Focal existía en Elektronika BK-0010/0011 y DVK integrado en la ROM (en modelos posteriores, BK está disponible en un cartucho). También estaban disponibles extensiones focales para estas máquinas, escritas por varios entusiastas. Las extensiones contenían una variedad de comandos y funciones adicionales para trabajar con gráficos, sonido, ejecutar programas binarios, procesamiento de cadenas y muchos otros.

Se ha utilizado una versión significativamente ampliada del lenguaje como lenguaje inclusivo en DIASP  (Sistema de diseño conversacional), un CAD especializado diseñado para fines microelectrónicos.

En la década de 1990, los entusiastas intentaron portar Focal a la PC de IBM (Turbo Focal), pero no salió la versión beta distribuida a través de los canales BBS .

La versión fuente disponible públicamente de Focal-81 se probó con éxito en las siguientes plataformas y compiladores:

Debido a la similitud en la sintaxis, Focal a menudo se ha comparado con BASIC . En general, el lenguaje es inferior a BASIC en términos de sus capacidades expresivas; por ejemplo, en Focal no hay absolutamente ningún tipo de datos de cadena ; todas las variables en Focal son numéricas (generalmente números fraccionarios de punto flotante ). Al mismo tiempo, el intérprete de Focal exige mucho menos recursos (principalmente memoria ) que BASIC, lo que hizo posible escribir programas más complejos en sistemas con recursos limitados.

Desde finales de la década de 1980, el Focal no se ha desarrollado ni utilizado mucho, los puertos mencionados anteriormente del Focal-81 fueron hechos por entusiastas por diversión.

Algunos comandos focales

equipo descripción equivalente en BASIC
COMMENT comentario (el texto que sigue al comando se ignora) REM
TYPE salida a la consola los valores de constantes y expresiones PRINT
QUIT finalización rutinaria del programa END
SET asignar un valor a una variable (o elemento de matriz) LET
ASK ingresando valores desde la consola INPUT
GOTO saltar incondicionalmente GOTO
DO llamada de subrutina GOSUB
RETURN retorno de subrutina RETURN
IF bifurcación por valor de expresión en parte correspondeIF

El intérprete de idiomas reconoce los comandos por su primera letra, por lo que no es necesario escribirlos completos. También hubo versiones de Focal con palabras clave en idiomas europeos (suministradas por DEC).

Ejemplos de programas

Ejemplo estándar de Hello World

1.05 C El programa muestra una cadena de prueba 1.10 T "¡Hola mundo!" ! 1.20Q

Solución de una ecuación cuadrática de la forma ax² + bx + c = 0

1.05 C **** Un programa para resolver una ecuación cuadrática de la forma ax^2 + bx + c = 0 1.10 T "Ingrese los coeficientes a, b, c para la ecuación ax^2 + bx + c = 0" ! 1.20 A "a = ", a ! "b = ", b! "c = ", c 1,30 t. "Resuelve la ecuación (", a, ")x2 + (", b, ")x + (", c, ") = 0" ! 1.35 C **** Calcular el discriminante 1.40 SD = b^2 - 4*a*c 1,50 toneladas! "D=", re! 1.55 C **** Averigüe el número de raíces 1,60 yo (d), 3, 4 1.65 C **** se omite la primera etiqueta, por lo que con un valor de D 1.66 C **** menos que cero llegamos a la siguiente línea después de IF 2.05 C **** Discriminante negativo - sin raíces 2.10 T "La ecuación no tiene raíces reales" ! 2.20Q 3.05 C **** Cero discriminante - una raíz 3.10 T "La ecuación tiene una raíz" ! 3.20 S s = 0 3.30D5 3.40 T "x = ", x! 3.90Q 4.05 C **** Discriminante positivo - dos raíces 4.10 T "La ecuación tiene dos raíces" ! 4.20 Ss = FQT(d) 4.30D5 4.40 T "x1 = ", x! 4.50 Ss = -s 4.60D5 4.70 T "x2 = ", x! 4.90Q 5.05 C **** Rutina raíz donde s es la raíz del discriminante con signo 5.10 Sx = (s - b) / (2*a) 5.90R

Las etiquetas de fila en Focal tienen la forma <номер_группы>.<номер_строки>. Los comandos GOTO, IF, DOpueden especificar tanto la etiqueta completa como el número de grupo sin el número de línea (provoca una transición a la línea con el número más pequeño en este grupo).

El signo de exclamación (" ") en los !comandos ASKy (E/S de la consola) TYPEes (junto con una coma) un separador de argumentos y provoca un avance de línea antes de que se ingrese o se envíe el siguiente elemento de la lista.

El comando IFevalúa el valor de la expresión y salta a una de las tres etiquetas de la lista proporcionada, según el resultado: negativo, cero o positivo. Si se omite la etiqueta, el control se transfiere a la IFlínea siguiente.

Notas

Literatura

Enlaces