Ir al contenido principal

Fortran en un vistazo

Quien lleva algo de tiempo en estos temas de la programación sabrá que existe un lenguaje de programación llamado Fortran. Un lenguaje de programación bastante poderoso para el ámbito científico y que ahora, en estos tiempos, ha ido recobrando un poco de popularidad.

En este blog ya hablamos un poco de ello:

Pues ahora continuaremos hablando de el.

Fortran al igual que C, C++, Oberon o Java es necesario especificar los tipos de datos a tratar. Olvidemos las malas costumbres de lenguajes como Javascript y Python a la hora de definir nuestras variables. No, no es lo mismo var numero = "911" que int numero = "911";. Quienes aprendimos C como primer lenguaje lo sabemos a detalle.

Pues en Javascript y/o Python se puede hacer cosas como estas (casi sin ningún reparo) var numero = "911"; numero = 911; console.log("Valor del número: ", numero);, pero en Fortran y demás lenguajes no se podrá. El programa no compilará.

Las ventajas de esto es que un programa compilado ( y tipado fuerte) es más eficiente que un programa interpretado. Y en su ejecución se verá. Ya que su rendimiento y eficiencia es mucho mejor. Esta es una de las razones por la que "lenguajes muertos" como Fortran vuelven a estar en la pasarela de la programación.

Quienes se dedican al tratamiento de datos no dejarán mentir. Un programa en Fortran es mucho más eficiente que uno hecho en Python (sin uso de librerías como Pandas, Numpy o cualquier otra librería, pues ellas hacen el trabajo pesado).

Fortran es muy similar a lenguajes como Pascal y Oberon (los cuales son de paradigma procedural). Nació con el objetivo de resolver problemas numéricos, probabilísticos y todo tipo de operación que fuese compleja para los seres humanos. Un lenguaje que prometía bastante hasta la llegada del poderoso C de Dennis Ritchie. Que fue un boom en su época, pues marcó la pauta para la existencia de lenguajes aún más poderosos (Java, C++, etc.).

Miremos el clásico "Hola, mundo" hecho en este lenguaje (Fortran 90/95). Ve el enlace de arriba si quieres saber donde descargarlo.

holamundo.f90

program holamundo

print *, '¡Hola, mundo en Fortran!'

end program holamundo

Lo compilamos y, una vez creado el ejecutable, lo haremos andar:

$ gfortran holamundo.f90 -o holamundo.exe

Salida:

¡Hola, mundo en Fortran!

Uno de los aspectos a criticar es su sintaxis, ya que a los programadores actuales les parecerá poco atractiva e incluso arcaica o fea. Siendo sincero, una sintaxis como la de Golang o Python sería más atractiva. Veamos un ejemplo de un programa que obtenga las raíces de una ecuación cuadrática. El usuario introducirá tres valores y, si hay solución, mostrará el resultado en pantalla. En caso de no haber solución, mostrará un mensaje.

cuadratica.f90

program quadratica
  
  implicit none

  real :: a, b, c
  real :: discriminante
  real :: x1, x2

  print *, "Introduce los valores de a, b y c:"
  read *, a, b, c

  discriminante = b**2 - 4*a*c

  if ( discriminante>0 ) then

    x1 = ( -b + sqrt(discriminante)) / (2 * a)
    x2 = ( -b - sqrt(discriminante)) / (2 * a)
    print *, "Raices reales:"
    print *, x1, x2

  else if ( discriminante==0 ) then

    x1 = - b / (2 * a)
    print *, "Raiz real:"
    print *, x1
  else

    print *, "Sin raices reales."
  end if
end program quadratica

Compilación:

$ gfortran cuadratica.f90 -o cuadratica.exe

Salida:

Introduce los valores de a, b y c: 
3
4
1
Raices reales:
 -0.333333343      -1.00000000

Observemos que en un programa Fortran es preciso definir los tipos de datos a usar. En este caso definimos seis variables de tipo ``real`` lo que vendría siendo ``double`` en lenguajes como C..

Veamos ahora un programa que calcule el IMC de una persona. El programa solicitará el peso y talla de la persona. Obtendrá el IMC y su diagnóstico general.

imc_calculador.f90

program imc_calculador
  implicit none
  real :: peso, talla, imc
  character(len=50) :: cad

  ! Solicitar el peso
  print *, 'Tu peso: '
  read *, peso

  ! Solicitar la talla
  print *, 'Tu talla: '
  read *, talla

  ! Calcular el IMC
  imc = peso / (talla * talla)

  ! Evaluar las categorías del IMC
  if (imc < 16.0) then
    cad = 'Infrapeso: Delgadez Severa'
  else if (imc >= 16.0 .and. imc <= 16.99) then
    cad = 'Infrapeso: Delgadez Moderada'
  else if (imc >= 17.0 .and. imc <= 18.49) then
    cad = 'Infrapeso: Delgadez Aceptable'
  else if (imc >= 18.5 .and. imc <= 24.99) then
    cad = 'Peso Normal'
  else if (imc >= 25.0 .and. imc <= 29.99) then
    cad = 'Sobrepeso'
  else if (imc >= 30.0 .and. imc <= 34.99) then
    cad = 'Obeso: Tipo I'
  else if (imc >= 35.0 .and. imc <= 40.0) then
    cad = 'Obeso: Tipo II'
  else
    cad = 'No existe clasificación'
  end if

  ! Imprimir los resultados
  print *, 'Tu IMC es: ', imc
  print *, 'Tu diagnóstico es: ', trim(cad)

end program imc_calculador

Observemos que definimos tres variables tipo ``real`` y una cadena de caracteres ``character`` con una longitude 50.

Compilamos:

$ gfortran imc_calculador.f90 -o imc_calculador.exe

Salida:

 Tu peso:
65
 Tu talla:
1.66
 Tu IMC es:    23.5883293
 Tu diagnóstico es: Peso Normal

Fortran en la actualizad es un lenguaje poderoso en el ámbito científico. Solo seguido de lenguajes como Julia y R. El inconveniente sería su sintaxis ya que no es muy atractiva o sencilla como la de esos dos. Pero en capacidad puede superarlos.

Con el advenimiento de las I.A.s ( y el Vibe Coding) saber programar cada vez será esencial para los que realmente quieren dedicarse a ello. Conocer los aspectos de un lenguaje, su próposito, filosofía y casos de uso no se debe dejar en saco roto.

Contnuaremos con esta serie sobre lenguajes de programación.

Enlaces:

https://fortran-lang.org/es//
https://wwwhatsnew.com/2021/05/05/fortran-el-lenguaje-de-programacion-vuelve-a-ser-popular/
https://flibs.sourceforge.net/examples_modern_fortran.html

Comentarios

Entradas populares de este blog

Programación Windows Batch (CMD) parte 3

Crear ciclos para efectuar operaciones tediosas nos ahorrará tiempo para realizar otras tareas. En está ocasión veremos ciclos con FOR . ¿Cuál es la síntaxis de bucle FOR en Windows Batch? Si está dentro de un archivo *.bat : FOR %%variable IN (seq) DO operaciones Si lo ejecutamos en una terminal: FOR %variable IN (seq) DO operaciones Ejemplo 1 . Recorrer una secuencia de números del 0 al 5: recorrer.bat @ echo off FOR %%i in ( 0 1 2 3 4 5 ) DO echo Hola no. %%i pause Nos imprimirá en pantalla: Hola no. 0 Hola no. 1 Hola no. 2 Hola no. 3 Hola no. 4 Hola no. 5 ¿Puedo usar contadores? Si, se pueden usar. Ejemplo 2 . Uso de contadores: contador.bat @ echo off set numeros = 1 2 3 4 5 6 7 8 9 10 set cont = 0 for %%a in ( %numeros% ) do ( echo Hola no. %%a :: Contador set /a cont+ = 1 ) echo Total: %cont% Este código nos imprimirá, además de los mensajes Hola no. 0 ..., el total de valores conta...

TIOBE index 2024

El índice TIOBE (o índice de la comunidad de programación TIOBE) mide la popularidad de los lenguajes de programación. Su índice no se basa en qué lenguaje de programación es mejor, si tiene mejor perfomance, si posee escalabilidad, si es más sencillo de aprender, de usar, de implementar, etc. Sólo se basa en la popularidad. En el número de referencias ya sea en blogs, foros de consulta, etc. No necesariamente si las empresas lo están usando en alguno de sus desarrollos. Este índice es útil para darse una idea qué lenguaje está cobrando más popularidad y prestigio. Enseguida una tabla con los primeros 5 lenguajes más populares. Índice de Noviembre 2024   Nov 2024  Nov 2023  Change  Programming Language  Ratings  Change  1  1    Python  22.85%  +8.69%  2  3  +  C++  10.64%  +0.29%  3  4  +  Java  9.60%  +1.26%  4 ...

Programación Windows Batch (CMD) parte 4

Siguiendo con la serie de post sobre programación ( 1 , 2 , y 3 ) batch ahora veremos algunas cosas como operaciones aritméticas, operadores lógicos  y uso de ficheros. Cuando somos administradores de servidores o desarrolladores muchas veces tenemos que realizar tareas que nos quitan, relativamente, tiempo valioso que podríamos ocupar para otras cosas (como ver nuestro Facebook, jeje, broma).  Aprender a escribir scripts que nos faciliten algunas tareas siempre es útil. Por ejemplo, conocer todas las características técnicas de nuestro equipo de cómputo nos servirá cuando se realiza peritajes informáticos y soporte al equipo. Realizar respaldos automáticos a nuestras carpetas , archivos y directorios será más sencillo gracias a un script. Pero antes debemos aprender lo básico de la programación en batch. Ejemplo 1. Operaciones aritméticas básicas. aritmetica.bat @ echo off ::Nombre del archivo, imprimirá: aritmetica.bat echo %0 :: Set nos servirá para a...