Articulo de referencia

COMAL

COMAL ( Common Algorithmic Language ) es un lenguaje de programación desarrollado en Dinamarca por Børge R. Christensen y Benedict Løfstedt, y lanzado originalmente en 1975. Se ...

COMAL ( Common Algorithmic Language ) es un lenguaje de programación desarrollado en Dinamarca por Børge R. Christensen y Benedict Løfstedt, y lanzado originalmente en 1975. Se basó en el lenguaje de programación BASIC , añadiendo, entre otras cosas, instrucciones multilínea y subrutinas bien definidas.

COMAL fue escrito originalmente para minicomputadoras , pero era lo suficientemente pequeño como para ejecutarse también en las primeras microcomputadoras . Es uno de los pocos lenguajes de programación estructurados que estaban disponibles y se podían usar cómodamente en computadoras domésticas de 8 bits .

"COMAL Kernel Syntax & Semantics" contiene la definición formal del lenguaje. [ 1 ] Otras extensiones son comunes a muchas implementaciones. [ 2 ] [ 3 ] [ 4 ]

Historia

Versiones para minicomputadoras

COMAL fue desarrollado originalmente en Dinamarca por el profesor de matemáticas Børge R. Christensen. La escuela donde impartía clases había recibido un miniordenador Data General Nova 1200 en 1972, con la expectativa de que comenzara a impartir clases de informática . Se esperaba que Christensen, quien había realizado un curso breve sobre el tema en la universidad, dirigiera el programa y mantuviera el sistema informático. [ 5 ]

El NOVA venía equipado con Data General Extended BASIC , y Christensen pronto se sintió frustrado por la forma en que el lenguaje no estructurado llevaba a los estudiantes a escribir código de baja calidad, difícil de leer y, por lo tanto, de corregir. [ 5 ] Mientras se quejaba de estos problemas al científico informático Benedict Løfstedt, este animó a Christensen a leer Systematic Programming , el entonces nuevo libro sobre diseño de lenguajes de programación de Niklaus Wirth , el creador de Pascal . Christensen quedó impresionado, pero descubrió que no podía usar Pascal directamente, ya que carecía de la interfaz interactiva que hacía que BASIC fuera tan fácil de usar para los estudiantes. [ 6 ]

Durante los siguientes seis meses, Christensen y Løfstedt se comunicaron por correo para diseñar una alternativa a BASIC que conservara sus elementos interactivos pero añadiera elementos estructurados de Pascal. [ 6 ] Para 1974, la definición del lenguaje estaba completa, pero Christensen no logró atraer el interés de las empresas de software para desarrollar una implementación. Durante los siguientes seis meses, trabajó con dos de sus estudiantes, a quienes había enseñado el lenguaje máquina NOVA 1200 , para escribir una implementación por su cuenta. Una de las primeras cosas que se añadieron fue la capacidad de usar nombres de variables de ocho caracteres, en lugar de los típicos de uno o dos. [ 6 ] Las adiciones posteriores en la primera versión incluyeron sentencias de varias líneas , y las definiciones y la sentencia para llamarlas. [ 7 ]IF...THEN...ELSE...ENDIFPROC...ENDPROCEXECUTE

La primera implementación de prueba de concepto (que ejecutaba un bucle de cinco líneas) estuvo lista el 5 de agosto de 1974, y la primera versión (en cinta de papel ) estuvo lista en febrero de 1975. Los costos de desarrollo habían sido de alrededor de US$300 . Solo entonces el sistema (que anteriormente había usado un nombre interno danés) adoptó el nombre COMAL , por Common Algorithmic Language , inspirado en ALGOL , con el que Christensen había estado experimentando. [ 7 ] Por lo tanto, la primera versión se denominó COMAL 75. Posteriormente, Christensen escribió un libro de texto sobre el lenguaje que evolucionó hasta convertirse en Beginning COMAL . [ 8 ]

Versiones para microcomputadoras

En 1978, Christensen comenzó a adaptar COMAL para que funcionara en microordenadores , que empezaban a estar disponibles. Le preocupaba que, sin dicha implementación, se viera obligado a enseñar y usar BASIC de nuevo, ya que las escuelas danesas adquirían los nuevos equipos. En 1980, una versión de COMAL desarrollada en colaboración con un grupo universitario pudo ejecutarse en el Zilog Z80 , y así se lanzó COMAL 80. [ 7 ]

Por esa misma época, una empresa danesa presentó el Comet , un microordenador muy potente para la época, que sería la primera máquina en ejecutar una versión de lo que se asemejaría a las posteriores versiones de COMAL. Christensen se retiró del desarrollo de COMAL alrededor de 1980-81, que pasó a manos de grupos como UniComal, [ 9 ] fundado por Mogens Kjaer, quien había escrito a Christensen con críticas a COMAL y posteriormente lo adaptó al Commodore PET para la versión 0.14. En ese momento, las escuelas danesas insistieron en que COMAL estuviera disponible en cualquier microordenador que adquirieran. [ 8 ]

A principios de la década de 1980, Apple Computer ganó un contrato para suministrar ordenadores Apple II con CP/M y COMAL a las escuelas secundarias irlandesas. [ 10 ] Fue popular en el ámbito educativo [ 11 ] y algunos libros de texto fueron escritos localmente. [ 12 ] [ 13 ]

En 1984, Acornsoft lanzó una implementación de COMAL, por David Christensen, Jim Warwick y David Evers, para sus computadoras BBC Micro y Acorn Electron de 8 bits (con un manual de Paul Christensen y Roy Thornton [ 14 ] ).

Entre 1984 y 1987, TeleNova , filial del brazo industrial del sistema de telecomunicaciones sueco, fabricó un ordenador de sobremesa llamado " Compis " para el sector educativo. Se suministró una versión mejorada de COMAL como lenguaje de programación estándar para este ordenador. Se crearon versiones para CP/M-86 y MS-DOS . Esta última versión está disponible para Windows XP . El manual de referencia (en sueco) es ISBN 91-24-40022-X.

En 1990, Thomas Lundy y Rory O'Sullivan produjeron el texto definitivo sobre programación COMAL. [ 13 ] Compararon y equipararon COMAL con BBC Structured Basic .

En 2016, COMAL seguía utilizándose activamente como lenguaje de programación educativo. Algunos institutos de secundaria del Reino Unido continúan usándolo para impartir la asignatura de informática. [ 15 ]

Descripción

COMAL se creó como una mezcla de los lenguajes de programación educativa más populares de la época: BASIC , Pascal y, al menos en las versiones para Commodore y Compis , los gráficos de tortuga de Logo . El lenguaje tenía como objetivo introducir elementos de programación estructurada en un entorno donde normalmente se usaría BASIC.

En las primeras versiones, las principales adiciones al lenguaje fueron las versiones en bloque de IF...THEN y la construcción PROC. En la mayoría de las versiones anteriores de BASIC, la única construcción en bloque era el bucle FOR...NEXT. Por ejemplo:

10 PARA I = 1 HASTA 10 20 IMPRIMIR I 30 J = J + 1 40 SIGUIENTE I

Este ejemplo ejecuta un bucle diez veces y realiza dos instrucciones en cada iteración. En contraste, casi todas las demás instrucciones en BASIC, o sentencias , deben realizarse en una sola línea. Esto puede dificultar la ejecución de sentencias de varias líneas de forma binaria. Por ejemplo, si un programa desea ejecutar tres instrucciones si un valor determinado es mayor que 10, la solución típica es:

10 SI A <= 10 ENTONCES 50 20 IMPRIMIR "A ES MAYOR QUE 10" 30 A = A + 10 40 IMPRIMIR "A AHORA ES " ; A 50 IMPRIMIR "VOLVIENDO A NUESTRA PROGRAMACIÓN HABITUAL"

Este tipo de estructura oculta la verdadera intención del programa; la decisión se basa en una lógica opuesta a la que el programador realmente pretende. Además, para comprender lo que sucederá en este caso, el lector debe encontrar la línea 50, que en programas reales podría estar mucho más avanzada en el código fuente . Esta es una de las principales razones por las que los programas BASIC se denominan " código espagueti ", ya que para seguir la lógica uno se mueve por el programa como si siguiera una serie de fideos espagueti aleatorios.

COMAL aborda este problema mediante el uso de bloques. Para realizar esta misma serie de instrucciones, en COMAL se escribiría:

10 SI A > 10 ENTONCES 20 IMPRIMIR "A ES MAYOR QUE 10" 30 A = A + 10 40 IMPRIMIR "A AHORA ES " ; A 50 FIN SI 60 IMPRIMIR "VOLVIENDO A NUESTRA PROGRAMACIÓN HABITUAL"

En este caso, el autor escribe la decisión que realmente intenta tomar, y el lector puede seguir la lógica simplemente buscando el punto ENDIF. Esto se ve facilitado por el uso de espacios iniciales en COMAL para indicar visualmente los bloques.

Ejemplos

  • "¡Hola Mundo!"
    IMPRIMA "¡HOLA, MUNDO!"
  • Condiciones
    SI condición ENTONCES instrucciones FIN SI
  • Bucles
    PARA número := 1 HASTA 1000 HACER IMPRIMIR número FIN PARA
  • Imprimir instrucciones con variables
    ENTRADA "¿Cuál es tu número favorito?" : nmr# PÁGINA IMPRIMIR "Tu número favorito es " ; nmr#

Disponibilidad

COMAL estuvo disponible para:

Véase también

Referencias

  1. ^ Ryan, Kevin. "Sintaxis y semántica del kernel COMAL" (PDF) . Dansk Datahistorisk Forening . Consultado el 8 de noviembre de 2017 .
  2. Bain, Richard; Lindsay, Len. "Definición y pruebas comunes de COMAL" . COMAL Today (24): 21–46 . Recuperado el 20 de enero de 2020 .
  3. "Common COMAL -- Palabras clave compatibles" . COMAL Today (25): 28. Consultado el 20 de enero de 2020 .
  4. "COMAL común: sintaxis de palabras clave y ejemplos" . COMAL Today (25): 29–33 . Consultado el 20 de enero de 2020 .
  5. 1 2 Christensen 1985 , pág. 1.
  6. ^ Christensen 1985 , pág. 2.
  7. ^ Christensen 1985 , pág. 4.
  8. 1 2 Christensen, Børge (marzo de 1985). "La historia de COMAL" . COMAL Today (25): 1–10 . Recuperado el 4 de septiembre de 2020 .
  9. 1 2 "UniComal 3.11 IBM PC" . Archivo de Internet. Enero de 1992. Recuperado el 1 de abril de 2021 .
  10. Moynihan, Michael D. (8 de agosto de 1983). "Cobertura de COMAL desde Irlanda" . InfoWorld . 5 (32): 30. Recuperado el 15 de noviembre de 2017 .
  11. Brady, Michael P. (mayo de 1986). El diseño de un primer curso de programación (tesis). Loughborough, Leicester, Reino Unido: Universidad Tecnológica de Loughborough. hdl : 2134/10392 . Consultado el 15 de noviembre de 2017 .
  12. Kelly, John (1984). Fundamentos de informática con COMAL (Segunda edición). Dublín, Irlanda: The Educational Company . Consultado el 20 de enero de 2020 . 
  13. 1 2 Lundy, Thomas; O'Sullivan, Rory (1990). Introducción a la programación estructurada en BASIC y COMAL . Dublín, Irlanda: Gill and Macmillan. ISBN 978-0717116676.
  14. Thornton, Roy; Christensen, Paul (1984). COMAL en el microordenador BBC y Acorn Electron SBD 19. Acornsoft. ISBN 978-0907876908.
  15. Laine, Heather (12 de febrero de 2015). "Gracemount High School" . LiveCode . Archivado del original el 29 de marzo de 2024. Recuperado el 29 de marzo de 2024 .

Lecturas adicionales

  • Thomas Lundy y Rory O'Sullivan: Introducción a la programación estructurada en BASIC y COMAL , 1990
  • Roy Atherton: Programación estructurada con COMAL. Horwood, Chichester, 1982, ISBN 0-85312-416-7.
  • Bramer, MA (1982). "COMAL 80: Añadiendo estructura a BASIC". Computers & Education . 6 (2): 179– 192. doi : 10.1016/0360-1315(82)90031-8 . ISSN 0360-1315 . 
  • Børge R. Christensen: Comienzo de Comal. Horwood, Chichester 1982, ISBN 0-85312-435-3.
  • Børge R. Christensen: Guía de referencia COMAL . Grupo de usuarios de PET de Toronto, Toronto Ontario, ISBN 0-920607-00-4.
  • Leuschner, Burkhard (1987). "Comal es la cosa". Sistema . 15 (3): 373– 376. doi : 10.1016/0346-251X(87)90011-X . ISSN 0346-251X . 
  • Len Lindsay: Manual COMAL . Reston Publishing, Reston, VA, 1983, ISBN 0-8359-0878-X.
  • Gordon Shigley: Manual de trabajo de COMAL . Grupo de usuarios de COMAL, EE. UU., 1985, ISBN 0-928411-05-2.
  • OpenCOMAL para Unix , MS-DOS y Win32
  • Una bifurcación de lo anterior para Unix compatible con estándares , principalmente Linux y Mac OS X.
  • UniComal 3.11 empaquetado para ejecutarse en DOSBox.
  • Descripción de COMAL, versiones y características (1984)