Los cuatro lenguajes iniciales: Fortran

Los cuatro lenguajes iniciales: Fortran

Como mencionamos anteriormente, en este artículo vamos a hablar sobre el más antiguo de todos los lenguajes de programación: Fortran.

program hello

  print *, 'Hello, Fortran!'

end program hello

Hello, Fortran!

Los cálculos matemáticos complejos e intensivos fueron uno de los principales usos de las computadoras para aplicaciones de modelos de ingeniería, modelos de predicción meteorológica, cálculos balísticos y simulaciones. Todo esto requiere varios ajustes finos para llegar a un buen resultado. Las computadoras harían muchos cálculos mucho más rápido que los humanos y podrían funcionar sin parar. Sin embargo, era difícil programar solo en Assembly (el único disponible en ese momento).

IBM, como uno de los principales proveedores de computadoras en ese momento, necesitaba crear un lenguaje de programación para el IBM 704 para científicos y le dio esta misión al equipo de John W. Backus. John creó el lenguaje Fortran y su compilador en 1957, pasando a la historia como el primer lenguaje de alto nivel. El nombre Fortran proviene del acrónimo IBM Mathematical FORmula TRANslation System.

John W. Backus, creador de Fortran

Fortran recibió varias actualizaciones a lo largo del tiempo y algunas fueron notables: Fortran I (1957), Fortran II (1958), Fortran 66 (1966), Fortran 77 (1977), Fortran 90 (1990) y la última versión Fortran 2018 (2018). Como podemos ver, sigue siendo un lenguaje que recibe constantes actualizaciones: ¡un fósil viviente!


Innovaciones y Código

Como se creó el primer lenguaje de alto nivel, fue revolucionario para realizar operaciones matemáticas rápidamente. Como no había internet, la documentación del idioma se hizo en un manual impreso.

Manual de Fortran para IBM 704

La innovación de Fortran fue transformar la programación de datos binarios de las instrucciones de ensamblaje en un código cercano al idioma inglés que es mucho más accesible para los programadores. Todo esto realizado por un compilador que hace el trabajo de traducir el código Fortran a código máquina.

Además del lenguaje, el compilador de Fortran aportó nuevas ideas e innovaciones en la optimización del código durante la compilación. Aunque el programador no escriba un código excelente, el compilador utiliza técnicas para mejorar el resultado final y generar un binario con mejor calidad, mejorando el rendimiento de ejecución. Esto no era posible cuando se programaba en ensamblador puro.

Veamos la evolución del código Fortran con un algoritmo que calcula el área de un triángulo usando la fórmula de Heron. El siguiente código fue hecho para Fortran II:

      READ(5,501) IA,IB,IC

  501 FORMAT(3I5)

      IF (IA) 701, 777, 701

  701 IF (IB) 702, 777, 702

  702 IF (IC) 703, 777, 703

  777 STOP 1

  703 S = (IA + IB + IC) / 2.0

      AREA = SQRT( S * (S - IA) * (S - IB) * (S - IC) )

      WRITE(6,801) IA,IB,IC,AREA

  801 FORMAT(4H A= ,I5,5H  B= ,I5,5H  C= ,I5,8H  AREA= ,F10.2,

     $13H SQUARE UNITS)

      STOP

      END

Podemos ver que no había definición de tipos y la ejecución del programa estaba definida por los pasos (los números al principio de la línea). Los IF definían a qué paso debía ir el programa con instrucciones GO TO que eran muy comunes en los lenguajes más nuevos. El concepto de algoritmo no se aplicó bien en ese momento, pero Fortran facilitó la programación.

Comparemos el mismo algoritmo en Fortran 90:

PROGRAM  FormulaDeHeron

   IMPLICIT  NONE


   REAL     :: a, b, c             ! 3 lados do triângulo

   REAL     :: s                   ! metade do perímetro

   REAL     :: Area                ! área do triângulo

   LOGICAL  :: Cond_1, Cond_2      ! 2 condicionais


   READ(*,*)  a, b, c


   WRITE(*,*)  "a = ", a

   WRITE(*,*)  "b = ", b

   WRITE(*,*)  "c = ", c

   WRITE(*,*)


   Cond_1 = (a > 0.) .AND. (b > 0.) .AND. (c > 0.0)

   Cond_2 = (a + b > c) .AND. (a + c > b) .AND. (b + c > a)

   IF (Cond_1 .AND. Cond_2) THEN

      s    = (a + b + c) / 2.0

      Area = SQRT(s * (s - a) * (s - b) * (s - c))

      WRITE(*,*) "Area = ", Area

   ELSE

      WRITE(*,*) "Não é um triângulo"

   END IF


END PROGRAM  FormulaDeHeron

Mucho más parecido a lo que conocemos hoy en día, ¿verdad? Vemos algunos desarrollos:

  • IF-ELSE nació en Fortran 77
  • Las definiciones de tipos surgieron en Fortran 66
  • Desaparecieron las instrucciones de tipo GO TO

Curiosidades

Con solo 64kb de memoria, los satélites Voyager 1 y 2 atravesaron el Sistema Solar con código Fortran elaborado por ingenieros de la NASA. Es el equipo hecho por el hombre que está más alejado de nuestro planeta. Se pueden ver más detalles aquí.

En la NASA, Dorothy Vaughn, interpretada por Octavia Spencer en la película Talentos ocultos (Hidden Figures), fue pionera en aprender y transmitir el idioma Fortran a sus compañeros de trabajo y se convirtió en una de las mayores expertas en el idioma del mundo, trabajando en cálculos que aseguraron el éxito de las misiones espaciales estadounidenses a la Luna.

Dorothy Vaughn trabajando en un mainframe IBM

Finalmente, hoy los puntos de referencia para definir las computadoras más rápidas del mundo son los códigos Fortran con cálculos extremadamente avanzados.


¿Fortran sigue existiendo?

Fortran sigue siendo un lenguaje utilizado para simulaciones masivas como modelos astrofísicos, modelos climáticos y cálculos de ingeniería. La razón por la que todavía se usa tanto es similar a COBOL: todavía se usa y actualiza una gran cantidad de código heredado.

En comparación con los lenguajes contemporáneos, Fortran (especialmente hasta Fortran 77) carecía de varios recursos de programación conocidos en la actualidad y, por lo tanto, comenzó a caer en desuso con la aparición de C y C++.

La sintaxis y el formato de Fortran influyeron en Basic y Visual Basic. Los conceptos del lenguaje matemático han influido en lenguajes como R y Matlab.

Fortran también ha influido en bibliotecas científicas como Scikit-Learn, Pandas y NumPy para Python, muy utilizadas por los científicos de datos.

Escenas de los próximos capítulos...

¿Te ha gustado nuestro artículo sobre Fortran? Podemos ver muchas similitudes con tu lenguaje preferido.

En el próximo artículo, hablaremos sobre uno que permitió el nacimiento de la Inteligencia Artificial: ¡LISP! Asegúrate de seguir la serie :-).

⚠️
Las opiniones y comentarios emitidos en este artículo son propiedad única de su autor y no necesariamente representan el punto de vista de Revelo.

Revelo Content Network da la bienvenida a todas las razas, etnias, nacionalidades, credos, géneros, orientaciones, puntos de vista e ideologías, siempre y cuando promuevan la diversidad, la equidad, la inclusión y el crecimiento profesional de los profesionales en tecnología.