Ratfor (abreviatura de Rational Fortran ) es un lenguaje de programación implementado como preprocesador para Fortran 66. Proporciona estructuras de control modernas , no disponibles en Fortran 66, para reemplazar los GOTO y los números de declaración.
Ratfor proporciona los siguientes tipos de declaraciones de control de flujo, descritas por Kernighan y Plauger como "robadas descaradamente del lenguaje C , desarrollado para el sistema operativo UNIX por DM Ritchie " ("Software Tools", p. 318):
Por ejemplo, el siguiente código
si ( a > b ) { máx = a } de lo contrario { máx = b }
Podría traducirse como
SI (. NO .( A . GT . B )) IR A 1 MÁXIMO = A IR A 2 1 CONTINUAR MÁXIMO = B 2 CONTINUAR
La versión de Ratfor en Herramientas de software está escrita en Ratfor, al igual que los programas de muestra, y, dado que está disponible su propia traducción a Fortran, se puede trasladar a cualquier sistema Fortran. Los nombres de los archivos de código fuente de Ratfor terminan en .r o .rat.
Ratfor fue diseñado e implementado por Brian Kernighan en Bell Telephone Laboratories en 1974, y descrito en Software—Practice & Experience en 1975. Se utilizó en el libro "Software Tools" ( Kernighan y Plauger , 1976).
En 1977, en la Universidad de Purdue , se escribió una versión mejorada del preprocesador Ratfor. Se llamó Mouse4, ya que era más pequeño y más rápido que Ratfor. Un documento publicado por el Dr. Douglas Comer , profesor de Purdue, concluyó que "contrariamente a la evidencia exhibida por el diseñador de Ratfor, la búsqueda secuencial a menudo es inadecuada para el software de producción. Además, en el caso del análisis léxico, las técnicas bien conocidas parecen ofrecer eficiencia al mismo tiempo que conservan la simplicidad, la facilidad de codificación y la modularidad de los métodos ad hoc" (CSD-TR236).
En comparación con el preprocesador Ratfor, un programa de 3000 líneas de código fuente que se ejecutaba en un sistema CDC 6500 requirió 185,470 segundos de CPU. Este tiempo se redujo en un 50 % cuando se utilizó la búsqueda binaria en el código Ratfor. La reescritura del escáner léxico ad hoc utilizando un método estándar basado en autómatas finitos redujo el tiempo de ejecución a 12,723 segundos.
Con la disponibilidad de Fortran 77 , un sucesor llamado Ratfiv (Ratfor=rat4 => rat5=Ratfiv) podría, con una opción /f77, generar un código Fortran 77 más legible:
SI ( A . GT . B ) ENTONCES MAX = A DE LO CONTRARIO MAX = B FIN.SI
El código fuente inicial de Ratfor fue portado a C en 1985 [1] y mejorado para producir también código Fortran 77. [2] Se ha creado un árbol git en 2010 para revivir ratfor. [3]
Aunque el compilador GNU C tenía la capacidad de compilar directamente un archivo Ratfor (.r) sin mantener un código Fortran intermedio inútil (.f) ( gcc foo.r
), esta funcionalidad se perdió en la versión 4 durante el traslado en 2005 de f77 a GNU Fortran . [4]
La fuente original estaba disponible en formatos . deb y . rpm en su sitio original, mirror.corbina.net/mandriva/, y su archivo, www.dgate.org/ratfor/, desapareció a partir de abril de 2024.
Ratfiv es una versión mejorada del lenguaje de programación Ratfor , un preprocesador para Fortran diseñado para darle capacidades similares a las de C. Fortran se usaba ampliamente para la programación científica, pero tenía primitivas de flujo de control muy básicas ("do" y " goto ") y no tenía la función de " macro ", lo que limitaba su expresividad.
El nombre del lenguaje es un juego de palabras ( Ratfor (RATional FORtran) -> "Rata Cuatro" -> "Rata Cinco" -> RatFiv ).
Ratfiv fue desarrollado por Bill Wood en el Instituto de Investigación del Cáncer de Filadelfia ( Pensilvania) a principios de los años 80 y publicado en varias cintas de DECUS (Digital Equipment Users Group) SIG (Special Interest Group). Está basado en el Ratfor original de B. Kernighan y PJ Plauger , con modificaciones y mejoras de David Hanson y amigos (Universidad de Arizona), Joe Sventek y Debbie Scherrer ( Lawrence Berkeley National Laboratory ).
Ratfiv V2.1 se distribuyó en la cinta SIG DECUS RSX82a. [5]