en Otros

¿Cómo utilizar programas en Fortran desde Excel?

En la actualidad tenemos a nuestra disposición una gran variedad de software de cálculo numérico. Tenemos software libre (Octave, FreeMat, Scilab, Sage, Maxima, …), software comercial (Mathematica, Maple, MATLAB, …) y un número casi indeterminado de librerías de funciones numéricas (listado), pero es evidente que las hojas de cálculo están ganando la partida, básicamente por su comodidad y facilidad de uso.

Actualmente, es Excel quien domina el mercado, por desgracia no se diseñó pensando en cálculos de ingeniería, precisamente, y tiene grandes carencias en cuanto a funciones para análisis numérico, resueltas sólo en parte con el paquete de macros SOLVER, muy útil, si, pero no siempre válido. 

Es decir, que si queremos tantear resultados o resolver ecuaciones no lineales complicadas con Excel, las opciones disponibles son:

  1. Usar soluciones abiertas tipo XNUMBERS (ya descatalogada, por desgracia).
  2. Utilizar soluciones comerciales cerradas, tipo “caja negra”.
  3. Programar las funciones por nuestra cuenta… 🙁

Bien, pues si todavía conservas rutinas escritas en Fortran y quieres “llamarlas” desde Excel sin tener que “traducirlas” a VBA, en Newton Excel Bach, Not (Just) An Excel Blog explican cómo hacerlo en dos partes ( y ).

El proceso consiste, básicamente, en crear una librería DLL compatible mediante el compilador Silverfrost Personal Fortran 95 (libre para uso personal), y definir después las funciones en VBA. Una vez hecho esto, se pueden usar las funciones de la librería DLL como si se tratara de las típicas funciones de Excel.

Es una lástima no haber encontrado antes este enlace (es de diciembre de 2008), porque ya tengo casi todos mis antiguos programas “reconvertidos” a VBA, pero puede ser un buen método para “resucitar” los listados en Fortran que aparecen en libros de geotecnia y mecánica de suelos de hace ya unos años.

En cuanto a la proverbial rapidez de Fortran, en el blog hacen un comentario al respecto también, pero en esta interesante presentación [pdf – 1,90 MB] sobre modelos constitutivos del Grupo de Investigación en Geotecnia de la Universidad de los Andes, en Colombia, se cita un texto en el que se afirma que, para determinados cálculos, 10 segundos de Fortran son equivalentes a 80 horas de Visual Basic… no está mal para un lenguaje de 1957.


Escribe un comentario

Comentario

  1. Los lenguajes de programación para la ingeniería siempre suscitan debates. Yo siempre he usado VBA y VB, pero reconozco que FORTRAN está mejor encarado a resolver problemas de ingeniería. Ya conocía la web de Newton Excel Bach…, pero no había visto ese post.

    Gracias por el link.

  2. En este caso no hay mucho que debatir, por rápido que sea el Fortran, sus tiempos de gloria ya pasaron. Lo importante es poder reutilizar el código existente y no tener que repetirlo todo de nuevo. Personalmente, salvo un par de programas raros que tengo abandonados, yo no programo nada que merezca tanta rapidez, la verdad.

    Un saludo.

    • La verdad es que cada lenguaje tiene su nicho, y pues existen ya estándares nuevos del Fortran, como el 2003, que implementa el paradigma orientado a objetos. Por otro lado, no solo el Fortran, hasta el COBOL, lenguajes ya muy veteranos pero aún con mucho uso en desarrollos nuevos.

    • @Jaume FORTRAN forever!
      @Enrique Python está bien pero es un lenguaje interpretado por lo que para aplicaciones de alta demanda de computación siempre deberemos acompañarlo de un amiguete fuertote… Me quedo con fotran orientado a objetos frente a la complejidad de C…
      J
      @jcrosa

  3. Por supuesto, VBA no es la panacea, lo que ocurre es que, hoy por hoy, los productos de Microsoft están tan extendidos que programar en VBA es una elección muy versátil, pero nada más.

    Personalmente, creo que Python tiene mucho que decir estos próximos años.

  4. Igual para realizar tareas serias de ingenieria, calculos en simuladores de toda especie y demas siempre se requiere eficiencia, que bueno contar aun con estos lenguajes que aunque feos son bastante utiles.