WATFIV ( Waterloo FORTRAN IV ), desarrollado en la Universidad de Waterloo , Canadá, es una implementación del lenguaje de programación informática Fortran . Es el sucesor de WATFOR .
WATFIV se utilizó desde finales de los años 60 hasta mediados de los 80. A su vez, WATFIV fue reemplazado por versiones posteriores de WATFOR. Como podía completar los tres pasos habituales ("compilar-enlazar-ir") en una sola pasada, el sistema se hizo popular para enseñar programación informática a los estudiantes.
A principios de los años 1960, los departamentos de informática recién formados iniciaron programas universitarios para enseñar lenguajes de programación informática . El lenguaje Fortran se había desarrollado en IBM , pero sufría de un flujo de trabajo de procesamiento por lotes de tres etapas lento y propenso a errores . [1] En la primera etapa, el compilador comenzaba con el código fuente y producía el código objeto . En la segunda etapa, un enlazador construía un programa completo utilizando bibliotecas crecientes de funciones comunes. Finalmente, el programa se ejecutaba repetidamente con datos para los problemas científicos y comerciales típicos de los clientes. Cada paso a menudo incluía un nuevo conjunto de tarjetas perforadas o cintas. Los estudiantes, por otro lado, tenían requisitos muy diferentes. Sus programas eran generalmente cortos, pero por lo general contenían errores de lógica y sintaxis, lo que resultaba en una repetición de los pasos que consumía mucho tiempo y " volcados de memoria " confusos (a menudo se necesitaba un día completo para enviar y recibir el resultado exitoso o fallido del operador de la computadora). Una vez que sus programas funcionaban correctamente, se entregaban y no se volvían a ejecutar.
En 1961, la Universidad de Wisconsin desarrolló una tecnología llamada FORGO para el IBM 1620 que combinaba algunos de los pasos. [2] Se llevaron a cabo experimentos similares en la Universidad de Purdue en el IBM 7090 en un sistema llamado PUFFT. [3]
En el verano de 1965, cuatro estudiantes de grado de la Universidad de Waterloo , Gus German, James G. Mitchell [4] [5] Richard Shirley y Robert Zarnke, dirigidos por Peter Shantz, desarrollaron un compilador Fortran para la computadora IBM 7040 llamado WATFOR. Sus objetivos eran una rápida velocidad de compilación y un diagnóstico efectivo de errores tanto en tiempo de compilación como de ejecución. [1] Elimina la necesidad de un paso de enlace separado y, como resultado, los programas FORTRAN que no contienen errores de sintaxis se colocan en ejecución inmediata. El profesor J. Wesley Graham proporcionó liderazgo durante todo el proyecto. [6]
Este proceso simple, de un solo paso, permitió a los programadores sin experiencia aprender a programar con un menor costo en tiempo y recursos computacionales. [7] Para ayudar en la depuración, el compilador utiliza un enfoque innovador para verificar variables no definidas (un error extremadamente común entre los programadores novatos). Utiliza una característica de diagnóstico del 7040 que puede establecer deliberadamente áreas de memoria con paridad incorrecta. Cuando un programa intenta hacer referencia a variables que no se habían establecido, la máquina toma una interrupción (gestionada por las rutinas de tiempo de ejecución de Watfor) y el error se informa al usuario como una variable no definida. Esto tiene el agradable efecto secundario de verificar variables no definidas esencialmente sin sobrecarga de CPU.
WATFOR ganó popularidad rápidamente y más de 75 instituciones lo instalaron en sus sistemas IBM 7040. La distribución del compilador estuvo a cargo de Sandra Bruce (de soltera Hope).
En 1966, la Universidad planeó reemplazar el 7040 con un computador IBM System/360 , que era mucho más rápido pero no compatible con el software. Se formó un equipo de empleados a tiempo completo y estudiantes universitarios para escribir una versión IBM 360. [8] Los miembros del proyecto, Betty Schmidt, Paul Dirksen, Paul H. Cress , Lothar K. "Ned" Kesselhut, Bill Kindree y Dereck Meek, fueron posteriormente acompañados por Mike Doyle, Rod Milne, Ron Hurdal y Lynn Williams, completaron 360 WATFOR a principios de 1967. Muchas otras instituciones (universidades, colegios, empresas y agencias gubernamentales) comenzaron a usar el compilador WATFOR para satisfacer necesidades similares a las experimentadas en la Universidad de Waterloo. La distribución del software y la atención al cliente estuvieron a cargo de Sandra Ward.
Como resultado de las propuestas del comité Fortran del grupo de usuarios SHARE y otros, en 1968 se produjo una nueva versión llamada WATFIV. WATFIV introdujo nuevas características como las variables CHARACTER y la entrada-salida de acceso directo. La Association for Computing Machinery otorgó a Paul Cress y Paul Dirksen el premio Grace Murray Hopper por sus contribuciones a los proyectos WATFOR y WATFIV en 1972. [9] El compilador WATFIV fue incluido en la Lista de Honor de DATAPRO para 1975 y 1976. Entre las personas involucradas en el mantenimiento y la mejora se encontraban Bernie Murphy, Martin Wiseman e Yvonne Johnson.
WATFIV se pronunciaba como "WHAT FIVE", pero, como se descubrió en ese momento, también podía (casi) pronunciarse como "WHAT FOR", como en WAT-F-IV (Waterloo Fortran IV).
Las universidades y corporaciones utilizaron estos compiladores y se han desarrollado otros productos de software siguiendo la tradición de WATFOR. Por ejemplo, una versión para el lenguaje de programación COBOL se llama WATBOL . [10] [11] [12] Daniel D. McCracken dijo que "no es exagerado sugerir que WATFOR revolucionó el uso de las computadoras en la educación". [13] En un momento dado, se tenían más de 3000 licencias de minicomputadoras y mainframes y más de 100 000 licencias de microcomputadoras en todo el mundo para esta familia de productos de software.
En 1974, se creó un compilador con características similares a la implementación de IBM para la computadora PDP-11 de Digital Equipment Corporation , llamado WATFOR-11. A los miembros del equipo, Jack Schueler, Jim Welch y Terry Wilkinson, se les unió más tarde Ian McPhee , quien había agregado nuevas sentencias de control al compilador WATFIV para programación estructurada (SP). Estas nuevas sentencias incluían el bloque IF (más tarde incluido en el estándar de lenguaje ANSI X3.9-1978), WHILE, UNTIL y otras. WATFIV-S se anunció en 1974 y unos meses después, también se anunció WATFOR-11S (la "S" indica las nuevas características de SP). Las características originales de SP fueron mejoradas más tarde con sentencias adicionales por Bruce Hay en WATFIV-S en 1980 y por Jack Schueler en WATFOR-11S en 1981.
Durante la década de 1970, el subcomité ANSI X3J3 (el grupo de estándares del lenguaje FORTRAN) desarrolló un nuevo estándar de lenguaje que fue aprobado oficialmente en abril de 1978. Este estándar, denominado FORTRAN 77 , introdujo muchas nuevas afirmaciones en el lenguaje. De hecho, el estándar de lenguaje anterior, FORTRAN 66, es un documento muy pequeño y describe, en efecto, un subconjunto de la mayoría de las implementaciones de FORTRAN. Por ejemplo, las implementaciones WATFIV y WATFOR-11 se basan en la definición de IBM de FORTRAN-IV .
A medida que los programadores utilizaban las características de FORTRAN 77, se requirió un nuevo compilador que combinara las ventajas del compilador WATFIV con el nuevo estándar de lenguaje. En enero de 1983, se inició un proyecto para desarrollar un compilador FORTRAN 77 en Watcom Systems Inc. Bajo el liderazgo de Jack Schueler, los empleados de Watcom y los estudiantes universitarios del programa de Ciencias de la Computación Cooperativa de la Universidad de Waterloo participaron en la creación del compilador WATFOR-77. El trabajo principal fue realizado por Geno Coschi, Fred Crigger, John Dahms, Jim Graham, Jack Schueler, Anthony Scian y Paul Van Oorschot. Fueron asistidos por Rod Cremasco, John McCormick, David McKee y Brian Stecher. Muchos de los miembros del equipo de proyectos de compiladores anteriores proporcionaron información. Entre ellos se encontraban Bruce Hay, Ian McPhee, Sandra Ward, Jim Welch y Terry Wilkinson.
A diferencia de los compiladores anteriores, una parte importante de WATFOR-77 se escribió en un lenguaje de sistemas portable para facilitar la implementación del compilador en otros sistemas informáticos. Los compiladores WATFOR anteriores se escribieron completamente en lenguaje ensamblador dependiente de la máquina .
Dos componentes del compilador no son portables. El generador de código traduce las sentencias FORTRAN en instrucciones nativas de la computadora y las almacena en la memoria. La primera versión de WATFOR-77 genera instrucciones para la arquitectura de la computadora IBM 370. La mayor parte del soporte en tiempo de ejecución (comprobación de variables indefinidas, evaluación de subíndices, funciones intrínsecas) se escribió en lenguaje ensamblador para un buen rendimiento. En septiembre de 1984, la primera versión se instaló en la Universidad de Waterloo para el Departamento de Servicios Informáticos. Era una implementación para computadoras IBM 370 que ejecutaban el sistema operativo VM/SP CMS .
Unos meses antes, en mayo de 1984, se había iniciado un proyecto para implementar el compilador WATFOR-77 en el IBM Personal Computer . En este proyecto participaron Geno Coschi, Fred Crigger, Tim Galvin, Athos Kasapi, Jack Schueler, Terry Skomorowski y Brian Stecher. En abril de 1985, esta segunda versión de WATFOR-77 se instaló en la Universidad de Waterloo para que la utilizaran los estudiantes de la Facultad de Ingeniería. El compilador puede ejecutarse en un IBM Personal Computer de 256K utilizando IBM PC DOS 2.0 y no requiere hardware especial de coma flotante.
En el otoño de 1985, IBM Japón recibió una versión japonesa de WATFOR-77 para la computadora personal IBM JX . Esta versión genera mensajes de error en japonés y admite los conjuntos de caracteres Kanji, Hiragana y Katakana para nombres de variables y cadenas de caracteres. Para que fuera compatible con la JX, el manual de referencia del lenguaje y la guía del usuario se tradujeron al japonés. En la primavera de 1988, también se desarrolló otra versión de WATFOR-77 con las mismas características mencionadas anteriormente para la familia japonesa de computadoras personales IBM PS/55.
Durante el verano de 1986, la versión IBM PC de WATFOR-77 se adaptó para funcionar en el Unisys ICON , que ejecuta el sistema operativo QNX . Dado que QNX es bastante diferente del IBM PC DOS, se reescribieron partes del sistema de ejecución. Esta implementación de WATFOR-77 se puso a disposición en septiembre de 1986.
Durante el verano de 1985 se inició un proyecto para adaptar el WATFOR-77 a la serie de ordenadores VAX de Digital Equipment Corporation que ejecutaban el sistema operativo VMS . Entre los miembros de este proyecto se encontraban Geno Coschi, Marc Ouellette, Jack Schueler y Terry Skomorowski. Esta implementación se puso a disposición en marzo de 1987.
Además, en la primavera de 1988, se inició un nuevo proyecto para desarrollar un compilador optimizador de FORTRAN 77. Este compilador utiliza el generador de código del compilador C de Watcom , que produce un código de máquina superior al de otros compiladores de C. El compilador optimizador de FORTRAN 77 se lanzó por primera vez a mediados de 1990.
En octubre de 1990, se celebró el 25º aniversario de WATFOR. [14] Muchos de los involucrados en el desarrollo de los compiladores WATFOR fueron invitados a la Universidad de Waterloo para una reunión.
En la primavera de 1992, se adaptó una versión de WATFOR-77 a la familia de ordenadores personales NEC PC-9801 . Esta versión era similar a la versión IBM PS/55, pero modificada para adaptarse a las diferencias arquitectónicas. En enero de 1992, comenzó el desarrollo de una versión de 32 bits de WATFOR-77 para los ordenadores personales Intel 80386 e Intel 80486. La primera versión se comercializó en el otoño de 1992.
Incluso en 1995, en la Universidad de Mississippi todavía se impartían clases de programación en WATFIV , dirigidas por el profesor Charles H. (Chuckie) Franke.
En 1969 y 1970 se completó el compilador WATBOL. El compilador WATBOL para el lenguaje de programación COBOL tenía una velocidad y diagnósticos de errores similares a los compiladores WATFOR para FORTRAN.
Durante la década de 1970, la Universidad de Waterloo, situada en el sur de Ontario, Canadá, era casi tan sinónimo de informática como el MIT o Berkeley. Había desarrollado extensiones del popular lenguaje de programación Fortran de propósito general llamadas WATFOR y WATFIV y su propia versión del igualmente popular lenguaje de computación empresarial COBOL, llamado WATBOL.