FLOW es un lenguaje de programación educativo diseñado por Jef Raskin y Jonathan (Jon) Collins, un estudiante de pregrado en el Departamento de Arte de UCSD, en 1970 e implementado en varias miniordenadores a principios de la década de 1970. El objetivo del lenguaje es facilitar la exploración de algoritmos a través de un entorno altamente interactivo. El lenguaje general es muy similar en sintaxis y estructura al lenguaje de programación BASIC , pero tiene una serie de cambios para facilitar la escritura del código. El más notable de ellos fue el concepto de "amplificación de mecanografía", en el que el lenguaje expandía cadenas cortas, a menudo de un solo carácter, en el código fuente "no amplificado" completo. ModernoLos entornos de desarrollo integrados y los editores de texto orientados al código a menudo incluyen una característica similar, ahora normalmente denominada autocompletar . El programador principiante primero crearía un diagrama de flujo para resolver el problema. Dado que todos los problemas involucraban palabras (en lugar de problemas matemáticos), la solución fue intuitiva. El diagrama de flujo se traduciría al lenguaje de programación de flujo utilizando un método mecánico de arriba hacia abajo.
Paradigma | No estructurado , imperativo |
---|---|
Diseñada por | Jef Raskin |
Apareció por primera vez | 1970 |
Influenciado por | |
BÁSICO |
Historia
En 1970, el Departamento de Inglés de la Universidad de Kansas organizó una reunión sobre el uso de computadoras en las humanidades. La conferencia fue seguida por una sesión de capacitación que se llevó a cabo del 13 de junio al 18 de agosto, donde Jef Raskin fue uno de varios maestros involucrados en capacitar a otros maestros en habilidades informáticas básicas. Durante este período, Raskin desarrolló el concepto de lenguaje FLOW. [1]
Un elemento de diseño clave de FLOW fue el intento de evitar errores de sintaxis automatizando la entrada del idioma tanto como fuera posible. Por ejemplo, si uno quisiera ingresar la declaración PRINT "10"
, el usuario simplemente tenía que escribir P10
y el editor interactivo la expandiría mientras escribía. Si el usuario ingresaba un comando ilegal, parpadeaba en el terminal y luego se borraba automáticamente para que el usuario "no fuera peor por presionar una tecla incorrecta". Se refirieron a este concepto como "amplificación de mecanografía" y señalaron que tenía la ventaja adicional de eliminar un impedimento para los mecanografiados lentos o aquellos con problemas físicos al utilizar un terminal. [2]
Lewis y Norman más tarde se refirieron a este concepto como "mordaza", ya que amordazó la entrada del usuario hasta que escribieron algo útil. Ilustraron esto contando una de las demostraciones favoritas de FLOW de Raskin, donde cerraba los ojos y oprimía teclas al azar en la terminal, construyendo un programa sintácticamente correcto, aunque sin sentido. [3]
Otro aspecto del enfoque del sistema FLOW para la interacción del usuario fue su depurador . Esto incluía el comando WALK
, un análogo al BASIC RUN
que se demoraba después de ejecutar cada declaración de una manera similar a los sistemas modernos de un solo paso. [4] [3]
A su regreso a la Universidad de California, San Diego (UCSD), Raskin pudo organizar fondos de UCSD y fondos de contrapartida de la National Science Foundation para comprar equipos para desarrollar el sistema FLOW, un total de $ 76,000 (equivalente a $ 506,471 en 2020) . [5] El sistema inicial consistía en tres miniordenadores Data General Nova con 12k palabras de memoria, varios terminales VST 1200, un terminal gráfico Tektronix 4002 y un trazador HP 7200. En septiembre de 1973, las CPU se actualizaron a 32k palabras de memoria. [6]
La primera versión de FLOW fue implementada por dos estudiantes graduados de UCSD. La versión original se implementó en FORTRAN pero luego se portó al lenguaje ensamblador Nova . Los puertos posteriores incluyeron el ensamblador MICRO 800, BASIC y Algol . [6]
Descripción
Organización general
Al igual que BASIC, FLOW utiliza números de línea como ayuda de edición y como etiquetas de declaración. A diferencia de la mayoría de los BÁSICOS, FLOW numera automáticamente los programas comenzando en la línea 10 y aumentando en 10 a medida que se ingresan nuevas líneas. Los números de línea tienen formato de tres dígitos, por lo que la línea 10 se muestra como 010. Los usuarios también pueden ingresar números de línea manualmente y volver a numerar todo el programa con el NUMBER
comando. [5]
En contraste con BASIC, el RUN
comando puede ser instruido para parar una vez que se alcanzó una línea determinada, por ejemplo, RUN FROM FIRST LINE TO 200
. Para ingresar este comando, el usuario simplemente escribe RF200
, y el resto se "amplifica" en la línea de comando. [5]
Sintaxis y capacidades
La diferencia más obvia entre FLOW y BASIC es que FLOW tiene solo una variable (IT) y carece de operadores matemáticos. El lenguaje tiene solo siete declaraciones, todas las cuales aplican lógica básica o manipulación de cadenas. Tampoco existe un equivalente del bucle for , el bucle se maneja completamente a través de IF
pruebas y JUMP TO
declaraciones. [7]
El idioma no tiene interacción directa del usuario como BASIC INPUT
, los datos se define en lugar de analógica de BASIC FLUJO DATA
declaración, TEXT
. TEXT IS
define una cadena delimitada por comillas, como TEXT IS "HELLO,WORLD"
, que luego se lee carácter a la vez usando el GET IT
. IT
es una metavariable que contiene el último carácter leído y luego se puede usar en otras declaraciones, como PRINT IT
. IT
se convierte en un espacio en blanco, no una cadena vacía, sino un solo espacio, cuando TEXT
se lee por completo. [5]
Los programas pueden contener múltiples TEXT
declaraciones, pero a diferencia de BASIC, DATA
donde todas las líneas se consideran un bloque continuo de datos, solo una TEXT
declaración está activa a la vez a medida que las encuentra el intérprete. En otras palabras, si hay dos TEXT
sentencias en un programa, no se tratan como una sentencia más larga como es el caso con DATA
, IT
devolverán un espacio en blanco cuando finalice la TEXT
sentencia activa y no devolverán más datos hasta la siguiente. TEXT
declaración se encuentra en el código. [5]
Declaraciones
De: [8]
Declaraciones del programa
COMMENT
- equivalente a BASIC'sREM
PRINT
- como en BASIC, toma cadenas literales entre comillas dobles, laIT
variable oON A NEW LINE
para imprimir un retorno de carro.TEXT IS
- similar aDATA
BASIC, pero se usa solo para cadenasGET IT
- lee el siguiente carácter de la declaración de TEXTO actualJUMP TO
- equivalente aGOTO
, siempre expande las líneas de destino a tres dígitosIF IT IS ... JUMP TO
- equivalente a,IF...THEN
pero puede realizar solo pruebas de igualdad contraIT
STOP
- utilizado para finalizar un programa, pero no es obligatorio
Comandos interactivos
RUN
- como en BASIC pero puede definir las líneas de inicio y final y usar meta-líneasFIRST LINE
yEND
WALK
- ejecuta el programa lentamenteDISPLAY
- equivalente aLIST
. Para listar el programa completo, se usaDISPLAY FROM FIRST LINE TO END
ERASE
- eliminar líneas de un programa,ERASE FROM 038 TO 140
NUMBER
- renumerar las líneas en el programa
Ejemplo
010 COMENTARIO ENCONTRAR SI UNA PALABRA TIENE UNA "F" O UNA "G" EN ELLA020 COMENTARIO DE LYRA FORET 19 DE OCTUBRE DE 1971030 COMENTARIO040 COMENTARIO ALGUNOS CASOS DE PRUEBA SON ZORRO, GOPHER, RATA, PERRO, GATO050 COMENTAR LAS RESPUESTAS RESPECTIVAS DEBEN SER SÍ, SÍ, NO, SÍ, NO.060 COMENTARIO070 EL TEXTO ES "PERRO"080 COMENTAR OBTENER UNA LETRA DEL TEXTO090 CONSEGUIR100 COMENTARIO COMPRUEBE SI HAY UN ESPACIO EN BLANCO QUE INDIQUE FIN DE PALABRA110 SI ES "" SALTA A 500120 COMENTARIO VERIFICAR F'S O G'S130 SI ES "F" SALTA A 200140 SI ES "G" SALTA A 200150 COMENTARIO FUE OTRA CARTA, ASÍ QUE VAYA AL SIGUIENTE CARACTER. EN EL TEXTO160 SALTA AL 080200 IMPRIMA "LA PALABRA TENÍA UNA 'F' O UNA 'G' EN ELLA."210 COMENTARIO TERMINAMOS220 DETENER500 IMPRIMA "LA PALABRA NO TENÍA UNA" F "NI UNA" G "EN ELLA".
Referencias
Citas
- ^ Raskin 1974 , p. 231.
- ^ Raskin 1974 , p. 232.
- ↑ a b Lewis y Norman , 2014 , p. 691.
- ^ Raskin 1974 , p. 233.
- ↑ a b c d e Raskin , 1974 , p. 234.
- ↑ a b Raskin , 1974 , p. 237.
- ^ Raskin 1974 , p. 235.
- ^ Raskin 1974 .
Bibliografía
- Raskin, Jef (julio de 1974). "FLOW: un lenguaje de enseñanza para la programación informática en las humanidades". Informática y Humanidades . 8 (4): 231-237. doi : 10.1007 / BF02402344 . S2CID 62648997 .
- Lewis, Clayton; Norman, Donald (2014). "Diseñar para el error" . En Baecker, Ronald (ed.). Lecturas en la interacción hombre-ordenador: hacia el año 2000 . Elsevier. págs. 686–697. ISBN 9780080515748.
Otras lecturas
- Genter, Donald; Norman, Donald (mayo de 1977). Tutor de FLOW: esquemas de tutoría (PDF) . La Jolla, California: Centro para el procesamiento de información humana, Universidad de California, San Diego. OCLC 961830303 . Informe No. 7702.
enlaces externos
- Flow , una implementación moderna de FLOW en LISP