Articulo de referencia

FLOW (lenguaje de programación)

FLOW es un lenguaje de programación educativo diseñado por Jef Raskin en 1970 e implementado en varios miniordenadores a principios de la década de 1970. El objetivo del lenguaj...

FLOW es un lenguaje de programación educativo diseñado por Jef Raskin en 1970 e implementado en varios 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 en general es muy similar en sintaxis y estructura al lenguaje de programación BASIC , pero presenta una serie de cambios para facilitar la escritura de código. El más notable de ellos fue el concepto de "amplificación de escritura", en el que las cadenas cortas, a menudo de un solo carácter, eran expandidas por el lenguaje en el código fuente completo "sin amplificar". Los entornos de desarrollo integrados modernos y los editores de texto orientados a código suelen incluir una función similar, ahora conocida como autocompletado . 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 era intuitiva. El diagrama de flujo se traduciría al lenguaje de programación FLOW mediante un método mecánico descendente.

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. Tras la conferencia, se llevó a cabo una sesión de capacitación del 13 de junio al 18 de agosto, en la que Jef Raskin fue uno de los varios profesores que impartieron formación a otros docentes en habilidades informáticas básicas. Durante este periodo, Raskin desarrolló el concepto del lenguaje FLOW. [ 1 ]

Un elemento clave del diseño de FLOW fue el intento de evitar errores de sintaxis automatizando al máximo la introducción del lenguaje. Por ejemplo, si se quería introducir la instrucción PRINT "10", el usuario simplemente tenía que escribir P10y el editor interactivo la expandiría a medida que escribía. Si el usuario introducía un comando no válido, este parpadeaba en la terminal y luego se borraba automáticamente, de modo que el usuario no sufría ninguna consecuencia por pulsar una tecla incorrecta. A este concepto lo denominaron «amplificación de escritura» y señalaron que tenía la ventaja añadida de eliminar un impedimento para quienes escribían despacio o tenían problemas físicos al usar una terminal. [ 2 ]

Lewis y Norman se refirieron posteriormente a este concepto como "mordaza", ya que restringía la entrada del usuario hasta que escribiera algo útil. Lo ilustraron relatando una de las demostraciones favoritas de FLOW de Raskin, en la que cerraba los ojos y pulsaba teclas al azar en la terminal, creando un programa sintácticamente correcto, aunque sin sentido. [ 3 ]

Otro aspecto del enfoque del sistema FLOW para la interacción con el usuario fue su depurador . Este incluía el comando WALK, un análogo al de BASIC RUNque retrasaba la ejecución de cada instrucción de forma similar a los sistemas modernos de un solo paso. [ 4 ] [ 3 ]

A su regreso a la Universidad de California en San Diego (UCSD), Raskin logró obtener financiación de la UCSD y fondos complementarios de la Fundación Nacional de Ciencias para adquirir equipos para desarrollar el sistema FLOW, por un total de $76,000 ( equivalente a $630,077 en 2025 ). [ 5 ] El sistema inicial constaba de tres minicomputadoras Data General Nova con 12k palabras de memoria, varias terminales VST 1200, una terminal gráfica 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 programada por Jonathan "Jon" Collins en FORTRAN para su uso en el instituto de verano. Para facilitar una implementación rápida (1 semana), Jonathan restringió la entrada al primer carácter del comando, mientras que la computadora proporcionaba el resto de las letras del comando. De ahí surgió la amplificación de la escritura. Posteriormente, dos estudiantes de posgrado de la UCSD adaptaron Flow al lenguaje ensamblador Nova . Otras adaptaciones 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 tanto para facilitar la edición como para etiquetar instrucciones. A diferencia de la mayoría de los lenguajes BASIC, FLOW numera automáticamente los programas a partir de la línea 10, incrementándolos de 10 en 10 a medida que se introducen nuevas líneas. Los números de línea tienen un formato de tres dígitos, por lo que la línea 10 se muestra como 010. Los usuarios también pueden introducir los números de línea manualmente y renumerar todo el programa con el NUMBERcomando. [ 5 ]

A diferencia de BASIC, RUNse puede indicar al comando que se detenga una vez que se alcance una línea determinada, por ejemplo, RUN FROM FIRST LINE TO 200. Para introducir este comando, el usuario simplemente escribe RF200, y el resto se "amplifica" en la línea de comandos. [ 5 ]

Sintaxis y capacidades

La diferencia más obvia entre FLOW y BASIC era que FLOW solo tiene una variable ITy carece de operadores matemáticos. El lenguaje solo tiene siete instrucciones, todas las cuales aplican lógica básica o manipulación de cadenas. Tampoco existe un equivalente al bucle for ; la iteración se gestiona completamente mediante IFpruebas e JUMP TOinstrucciones. [ 7 ]

El lenguaje no tiene interacción directa con el usuario como BASIC INPUT; en su lugar, los datos se definen en el análogo de FLOW de la DATAinstrucción BASIC, TEXT. TEXT ISdefine una cadena delimitada por comillas, como TEXT IS "HELLO,WORLD", que luego se lee carácter por carácter usando GET IT. ITes una metavariable que contiene el último carácter leído y luego se puede usar en otras instrucciones, como PRINT IT. ITse convierte en un espacio en blanco (no una cadena vacía , sino un solo espacio) cuando TEXTse lee completamente. [ 5 ]

Los programas pueden contener múltiples TEXTinstrucciones, pero a diferencia de BASIC, DATAdonde todas las líneas se consideran un bloque continuo de datos, solo una TEXTinstrucción está activa a la vez, según la encuentra el intérprete. En otras palabras, si hay dos TEXTinstrucciones en un programa, no se tratan como una sola instrucción más larga, como ocurre con DATA, ITdevolverá un espacio en blanco cuando termine la TEXTinstrucción activa y no devolverá más datos hasta que TEXTse encuentre la siguiente instrucción en el código. [ 5 ]

Declaraciones

Del artículo de Jef Raskin que describe FLOW, las siguientes declaraciones están disponibles en el lenguaje de programación y el entorno interactivo: [ 8 ]

Declaraciones del programa

COMMENT- equivalente a BASICREM
PRINT- como en BASIC, toma cadenas literales entre comillas dobles, la ITvariable o ON A NEW LINEpara imprimir un retorno de carro .
TEXT IS- similar a DATABASIC, pero utilizado solo para cadenas de caracteres.
GET IT- lee el siguiente carácter de la instrucción TEXT actual
JUMP TO- equivalente a GOTO, siempre expande las líneas de destino a tres dígitos
IF IT IS ... JUMP TO- equivalente a IF...THENpero solo puede realizar pruebas de igualdad contraIT
STOP- Se utiliza para finalizar un programa, pero no es obligatorio.

comandos interactivos

RUN- como en BASIC pero puede definir tanto las líneas de inicio como las de fin y usar metalíneas FIRST LINEyEND
WALK- ejecuta el programa lentamente
DISPLAY- equivalente a LIST. Para listar todo el programa, se utilizaDISPLAY 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 ENCUENTRA SI UNA PALABRA TIENE UNA "F" O UNA "G" EN ELLA 020 COMENTARIO DE LYRA FORET 19 DE OCTUBRE DE 1971 030 COMENTARIO 040 COMENTARIO ALGUNOS CASOS DE PRUEBA SON ZORRO, GOPHER, RATA, PERRO, GATO 050 COMENTARIO LAS RESPUESTAS CORRESPONDIENTES DEBEN SER SÍ, SÍ, NO, SÍ, NO. 060 COMENTARIO 070 EL TEXTO ES "PERRO" 080 COMENTARIO OBTENER UNA CARTA DEL TEXTO 090 CONSÍGUELO 100 COMENTARIOS: VERIFICAR SI HAY UN ESPACIO EN BLANCO QUE INDIQUE EL FINAL DE LA PALABRA. 110 SI ES " " SALTAR A 500 120 COMENTARIOS COMPROBAR SI HAY F O G 130 SI ES "F", SALTE A 200 140 SI ES "G" SALTA A 200 150 COMENTARIO ERA OTRA CARTA, ASÍ QUE PASA AL SIGUIENTE CARÁCTER EN EL TEXTO 160 SALTAR A 080 200 IMPRIMIR "LA PALABRA TENÍA UNA 'F' O UNA 'G'." 210 COMENTARIOS HEMOS TERMINADO 220 PARADA 500 IMPRIMIR "LA PALABRA NO TENÍA UNA 'F' NI UNA 'G'."

Referencias

Citas

  1. Raskin 1974 , pág. 231.
  2. Raskin 1974 , pág. 232.
  3. 1 2 Lewis y Norman 2014 , pág. 691.
  4. Raskin 1974 , pág. 233.
  5. ^ Raskin 1974 , pág . 234. 
  6. 1 2 Raskin 1974 , pág. 237.
  7. Raskin 1974 , pág. 235.
  8. Raskin 1974 .

Bibliografía

  • Raskin, Jef (julio de 1974). "FLOW: Un lenguaje de enseñanza para la programación informática en las humanidades". Computers and the Humanities . 8 (4): 231– 237. doi : 10.1007/BF02402344 . S2CID 62648997 . 
  • Lewis, Clayton; Norman, Donald (2014). «Diseñando para el error» . En Baecker, Ronald (ed.). Lecturas sobre interacción persona-ordenador: hacia el año 2000. Elsevier. pp. 686–697 . ISBN  9780080515748.

Lecturas adicionales

  • Genter, Donald; Norman, Donald (mayo de 1977). The FLOW Tutor: Schemas for Tutoring (PDF) . La Jolla, California: Centro de Procesamiento de Información Humana, Universidad de California, San Diego. OCLC 961830303. Informe n.° 7702. Archivado (PDF) del original el 6 de noviembre de 2019. 
  • Flow archivado el 5 de noviembre de 2019 en Wayback Machine , una implementación moderna de FLOW en LISP.
FLOW (lenguaje de programación) | Hispanopedia Wiki