Categorías
Python talks

Charla: Introducción a Python para científicos e ingenieros

Python es un lenguaje de programación libre y gratuito que está sustituyendo a MATLAB (entre otros) en universidades norteamericanas tales como MIT, Stanford o Caltech, y que está siendo utilizado por empresas como Google o la NASA. La temática de la charla está orientada descubrir o conocer más detalles de este lenguaje y el cambio que está suponiendo en el ámbito científico e ingenieril.


Presentador:

Juan Luis Cano

Juan Luis Cano es estudiante de Ingeniería Aeronáutica de último año en la Universidad Politécnica de Madrid y editor del blog de Pybonacci, referencia a nivel nacional en cuanto al uso de Python en cálculo científico e ingenieril.
Juan Luis se encargó de la organización del track científico de la PyConES (primera conferencia nacional dedicada a Python) dando varios cursos de introducción así como avanzados. Es desarrollador de varios paquetes especializados en ingeniería y ha sido formador para empresas interesadas en adoptar Python como herramienta de trabajo.

Aprende más sobre Python

El ecosistema Python es muy amplio y se encuentra plena evolución, si quieres saber más puedes ver nuestras entradas más recientes y el blog de Pybonacci:

Categorías
Python

Control PID con interfaz web y Python (PIDW)

Nelson Carrasquel presenta un Controlador PID con interfaz web realizado en Python. Para ello usa un PC para controlar un proceso dinámico que incluye:

  • Una interfaz gráfica web (javascript) para monitoreo y ajuste de control mediante Bottle.py
  • Servidor Modbus que permite la conexión a través del protocolo TCP/IP
  • Previsto para comunicación OPC (adquisición de las variables de campo), aunque en el ejemplo se hace uso de NI Modbus para obtener las variables de un reactor químico simulado mediante LabVIEW
  • Algoritmo genérico de PID y la librería threading que permite la ejecución de los sistemas en paralelo con Python

El siguiente vídeo presenta PIDW (PID-web) y lo pone en práctica para simular el control PID de un reactor químico.

 

 

 

El propósito del proyecto PID-web es investigar los resultados del mismo probando unas simulaciones dinámicas en la escuela de Ing. Química de la Universidad Central de Venezuela. A largo plazo, se pretende llevar a cabo una prueba de concepto donde se logre sustituir todos los elementos de control tanto por software como hardware libre.

Si deseas aprender más sobre teoría de control, te recomendamos las entradas de Pybonacci:

Categorías
CAChemE

Análisis de nuestro primer año #2014pythonmeme

Aprovechando que es año nuevo, queremos hacer un alto en el camino para analizar todo lo que ha pasado desde que dos ingenieros químicos nos juntamos a finales del 2012 a hablar de lo que podía ser CAChemE.

Sin entrar mucho en detalle, la idea general de por qué se creó CAChemE fue la necesidad de fomentar aquello que nos había distinguido profesionalmente frente a otros ingenieros así como demostrar las capacidades del software libre actual en este aspecto.

Mapa de visitas 2013 a CAChemE.org
Mapa de visitas durante el 2013 – CAChemE.org

CAChemE es a día de hoy una joven comunidad de ingenieros que engloba tanto a estudiantes como profesores así como a profesionales del sector. Nuestras siglas (Computer-Aided Chemical Engineering) recogen varias áreas como programación, análisis numérico, modelado, simulación, optimización y control de procesos. Por tanto, si aún desconocías qué hace un Ingeniero Químico en CAChemE, otro nombre más específico podría ser el de Ingeniero de Procesos (Químicos o no).

1. ¿Cuál es la aplicación, framework o biblioteca Python más interesante que has descubierto en el 2013?

Anaconda es sin duda uno de los paquetes que recomendamos para instalar Python y todo su ecosistema de bibliotecas científicas. También está disponible winpython (Windows) que permite trabajar de forma portátil con Python (sin instalación) desde un USB. Si quieres trabar desde el navegador, Wakari o Sage Cloud pueden ser interesantes.

Por otro lado y tras nuestra charla en la magnífica PyConES, descubrimos y presentamos Pyomo (alternativa a CVXOpt más similar a GAMS-AMPL) y FyPy para la resolución de ecuaciones en derivadas parciales mediante el método de volúmenes finitos.

CAChemE en el track científico de la PyConES
CAChemE en el track científico de la PyConES

Además de Python, también hemos trabajado con XCOS (Scilab), que es, a día de hoy, lo único que se puede considerar como ‘alternativa’ a Simulink. Por otro lado, también hemos presentado ChemSep y COCO simulator como alternativas a simuladores de procesos tipo ASPEN y ChemCAD.

2. ¿Qué nueva técnica de programación aprendiste en el 2013?

En realidad, somos bastante neófitos en el mundo de Python y nuestra experiencia hasta ahora había sido MATLAB. Es por ello que estamos tratando migrar a este lenguaje de programación (NumPy, SciPy, matplotlib, etc.) así como a la programación orientada a objetos mediante el mismo. Es inútil decir que entre CAChemE y Python fue amor a primera vista.

3. ¿A qué proyecto de software libre contribuiste más en el 2013? ¿Qué hiciste?

Aún somos muy principiantes como para contribuir de forma directa en proyectos de software libre. No obstante, tenemos varios videotutoriales en nuestro canal de YouTube, así como cursos de XCOS (Simulink). También tradujimos al español el espectacular curso de CFD con Python de Lorena Barba que cuenta además con una introducción rápida a Pyton (NumPy). Además, hemos publicado varias entradas que tratan sobre Python para aprendices.

Recientemente, llevamos a cabo un taller gratuito de programación con Octave UPM (alternativa a MATLAB más compatible y con interfaz visual desarrollada por @Herraiz en la la Universidad Politécnica de Madrid).

Por otro lado, participamos en la PyConES con la charla ya mencionada: “El uso de Python en la Ingeniería Química”, donde conocimos a gente espectacular y descubrimos la comunidad de Python en España.

Y nos dejamos para el final nuestro nuevo y flamante Podcast de CAChemE en el que hablamos de Python, Octave UPM y la PyConES 2013 haciendo disponible información sobre el software libre también en este formato.

CACheme's Podcast

Como puedes ver, se puede contribuir de numerosas formas al software libre. ¡Si tienes ganas de aprender siempre eres bienvenido! 🙂

4. ¿Qué blog o web sobre Python leíste más en el 2013?

Sin duda alguna, el blog de Pybonacci ha sido y es una referencia en cuanto a programación de Python científico en español. De hecho, esta entrada viene inspirada por ellos. Lo dicho, no nos cansaremos nunca de recomendarlos 😉

5. ¿Cuáles son las tres cosas que más te gustaría aprender en el 2014?

¿Sólo tres? Bueno, vamos allá:

  • Computación eficiente con Python.
  • Análisis de datos y aprendizaje automático (machine learning).
  • Creación de interfaces gráficas (GUIs) con Python

6. ¿Cuál es el programa, aplicación o biblioteca que más te gustaría que alguien escribiera en 2014?

Mejoras en SciPy sobre el control de procesos en Python así como una alternativa a Simulink. Descubre el potencial de Python sobre esta área de aplicación en Pybonacci.

Si quieres hacer tu propia versión de este meme de Python, recuerda:

Copia y responde las preguntas en tu blog.
Si tienes tuiter, anúncialo en el hashtag #2014pythonmeme

Y poco más, agradecer a todos vosotros por estar participando y apoyando nuestro proyecto, CAChemE. Si tienes alguna sugerencia para el nuevo año, puedes comentárnosla en esta entrada o por nuestro formulario de contacto 🙂

¡Feliz año 2014!

Categorías
Python

Sage vs SymPy como alternativa a Mathematica, Maple y MATLAB (Mupad)

SymPy y Sage son dos alternativas de código abierto y gratuitas a Maple / Mathematica / Mupad (MATLAB). Permiten realizar operaciones de Cálculo Simbólico y proporcionan un sistema de álgebra computacional (en inglés CAS, Computer Algebraic System) haciendo uso de Python para ello. Pero, ¿cuál es mejor? ¿tiene sentido hacerse esa pregunta?

Sage como alternativa a Mathematica
Sage (versión online y cloud) – Doc

Sage pretende agrupar todos los paquetes de software de código abierto de matemática (de hecho, SymPy está incluido en Sage) y proporciona una interfaz para todos ellos. A día de hoy, Sage puede parecer mucho más completo ya que hace uso de varías funcionalidades de estos paquetes en un mismo entorno. Dada su licencia GPL, su código se puede reutilizar siempre que se mantenga esta misma licencia.

SymPy como alternativa a Mathematica
SymPy (versión online) – Doc

SymPy utiliza un enfoque diferente ya que es un módulo (biblioteca) de Python, ligero, fácil de instalar y utilizar. Así, la principal ventaja de SymPy es que está escrito en Python puro (no se necesita nada más) y es perfectamente multiplataforma (Sage no se encuentra en Windows). Su licencia además es BSD lo cual permite utilizar el código para un proyecto y decidir si se libera o no.

Diferencias de sintaxis entre Sage y SymPy

Sus sintaxis es diferente ya que SymPy no pretende crear un entorno nuevo y sigue una nomenclatura tipo Python a diferencia de Sage que es más similar a un entorno más clásico. Sin duda, este extenso análisis de diferencias de sintaxis y posibilidades entre Sage y SymPy (en inglés) te ayudará a ver tales diferencias. Por ejemplo, en SymPy el operador de exponenciación es ** tal y como lo es en Python. Sage admite además ^ como en muchos otros sistemas.

Conclusión ¿Sage o Sympy?

En nuestra opinión, la filosofía de SymPy y su integración completa con Python y por ende su compatibilidad con el resto de librerías en el ecosistema de Python científico (NumPy, matplotlib etc) lo hace más interesante.

Pero, sin duda dependerá de las necesidades de cada uno. Lo bueno es que ambas son alternativas libres y gratuitas 😉

Si te decides por empezar con SymPy, te recomendamos las entradas del magnífico blog de Pybonacci: Introducción y ejemplos reales con SymPy.

Y tú, ¿crees que es mejor Sage o SymPy?, ¿qué ventajas o inconvenientes les ves frente a Mathematica o Maple?

Categorías
podcast Python

Análisis de la PyConES (track científico) – CAChemE’s podcast #3

El pasado mes de noviembre se celebró la PyConES, primera conferencia dedicada a Python de forma exclusiva en España. Para hacer un análisis más interesante hemos entrevistado a @pybonacci (organizador), @jlcercos (ponente) y @herraiz (asistente):

loteria-python

Secciones de la entrevista con links para obtener más información:

Como siempre, si hay algo que te hubiera gustado añadir puedes comentárnoslo justo aquí abajo.

Música:

Categorías
Python

El uso de Python en la Ingenieria Química

CAChemE es una comunidad formada por ingenieros químicos y estudiantes que pretende estimular las posibilidades de software en la ingeniería química y organización industrial. Nuestro objetivo es promover las ventajas de las nuevas herramientas de software libre disponibles y fomentar su uso en la universidad e industria. En la conferencia de Python nacional (PyConES) que se celebró en madrid se propuso la introducción teórica y resolución de ejemplos mediante Python de problemas clásicos presentes en ingeniería química.

Diapositivas de nuestra ponencia en el track científico realizado en la PyConES 2013 (Madrid)Autores: Francisco J. Navarro, Isaías Cuenca, Jorge Bernabé, Rubén Ruíz-Femenia. 

Resumen:

Python para resolver Ecuaciones en Derivadas Parciales (EDPs):

La resolución de ecuaciones diferenciales parciales (EDPs) mediante métodos numéricos permite obtener soluciones a problemas típicos presentes tanto en el ámbito ingenieril como científico. Tales problemas incluyen diferentes fenómenos físicos como propagación del sonido o del calor, la electrostática, la electrodinámica, la dinámica de fluidos, la elasticidad, etc.Existen numerosos paquetes de software para resolver EDPs, usando una variedad de idiomas y métodos numéricos. Muchos de ellos son propietarios y suponen un alto coste para las empresas y/o universidades. Además, la madurez de los mismos y su sencillez de uso pueden ocasionar efectos adversos convirtiendo estás herramientas en auténticas cajas negras.

En este marco, Python, en conjunto con sus librerías (NumPy, SciPy, FiPy), proporciona una herramienta perfecta que facilita el aprendizaje y desarrollo de la intuición necesarias para la resolución de estos problemas de forma libre y gratuita. Para problemas multifísicos y con geometrías especiales, FiPy permite resolver EDPs mediante el método de volúmenes finitos.

Programación matématica (optimización) con Python:

Los programas de modelado algebraico son utilizados para la resolución de diferentes problemas que van desde la selección óptima de equipos y recursos en sector industrial químico a la gestión logística de una empresa genérica. La resolución de casos de estudio reales de la industria mediante métodos de optimización, tan comunes en un ámbito de investigación científica, son a menudo desconocidos por las empresas, que resuelven estos problemas mediante métodos menos eficientes y a que a menudo les conducen a trabajar en unas condiciones sub-optimizas. El paquete basado en Python llamado pyomo permite la formulación y resolución de problemas de optimización con restricciones no lineales de manera eficiente, reutilizable y portátil.

Diseño de reactores químicos con Python

Un reactor químico es un equipo en cuyo interior tiene lugar una reacción química, estando éste diseñado para maximizar la conversión y selectividad de la misma con el menor coste posible. El diseño de un reactor químico requiere conocimientos de termodinámica, cinética química, transferencia de masa y energía, así como de mecánica de fluidos; balances de materia y energía son necesarios. Por lo general se busca conocer el tamaño y tipo de reactor, así como el método de operación, además en base a los parámetros de diseño se espera poder predecir con cierta certidumbre la conducta de un reactor ante ciertas condiciones, por ejemplo un salto en escalón en la composición de entrada. En estas diapositivas indicamos las ecuaciones y la llamada al ODE necesario para resolverlo con Python.

Categorías
MATLAB Octave

Curso básico de modelado de reactores químicos en MATLAB-Octave UPM

Aquí recogemos el material del curso gratuito que tuvo lugar durante la primera y segunda semana de diciembre de 2013 para alumnos de grado de Ingeniería Química. Octave UPM que es la alternativa a MATLAB más interesante para los que busquen máxima compatibilidad.

[box]Accede a los contenidos actualizados de la segunda edición de este curso

Horario y aulas 

Horario de 16 a 18 h para los siguientes días de diciembre, y en las aulas de informática de la EPS:

  • martes 3 (L25);
  • miercoles 4 (L18);
  • jueves 5 (L13);
  • martes 10 (L25);
  • miercoles 11 (L25);
  • jueves 12 (L13);

¡Aquellos alumnos que asistan a un 80% del curso, recibirán un certificado de asistencia!
¿Por qué Octave UPM y no MATLAB?

  • Octave UPM es una adaptación de GNU Octave que se emplea para la docencia de Informática en la Escuela de Ingenieros de Caminos, Canales y Puertos de la UPM y ha sido desarrollado por Israel Herraiz (@herraiz)
  • Es altamente compatible con MATLAB.
  • Es software libre y gratuito, disponible para Windows y Linux
Entorno de programación (similar a MATLAB)
Entorno de programación de Octave UPM (similar a MATLAB)

Actualización: La nueva versión de GNU Octave ya incorpora interfaz gráfica (descargar para Windows)

El curso es gratuito y de acceso libre, todo el material utilizado durante el mismo será también públicado para aquellos que no puedan asistir. No obstante, recomendamos este curso ya que su intención es más práctica que teórica y además estaremos a vuestra disposición para ayudaros a encontrar fallos en vuestros scripts así como resolver dudas puntuales que tengáis. Recomendamos que vengáis con vuestro portátil para poder trabajar siempre que queráis con Octave UPM en vuestro ordenador.

¿Por dónde empezar?

Los requisitos del curso serán tener conocimientos básicos de programación y de reactores químicos. Para el que quiera ir repasando:

Día 1:

Iniciacion al modelado de reactores quimicos com MATLAB – Octave (intro) por CAChemE

Día 2 y 3:

Simulación de reactores químicos con octave por CAChemE

Días 4 y 5:

Reactor flujo piston en MATLAB – Octave UPM – Craqueo térmico por CAChemE

Día 6:

Reactor de flujo piston con MATLAB Octave from CAChemE
Archivo principal:
pkg load odepkg

close all
clear all
clc

global k0 Ea R Seccion Qv1 alfa U Tw Tref d DCp DHref Cp Qv2

%Sacarosa(A) medioacido(B) glocosa(C) fructosa(D) indes(E)

%DATOS TERMODINAMICOS Y CINETICOS
%        A  B C D E 
alfa = [-1 -1 1 1 0
        -1 -1 0 0 2];

Cp = [62.0 75.2 80.0 80.0 80.0]; % kJ/kmol.K
PM = [342 18 180 180 180]; % Kg/Kmol

DHref = [-11000 -12000]; % kJ/kmol
Ea = 125300; % J/mol
R = 8.314; % kJ/kmol.K o J/mol.K
k0 = 0.0193/(exp(-Ea/R/(273+50)));
DCp = Cp*alfa'; % Equivalente a sum(Cp.*alfa)
Tref = 25+273; % K

% DATOS DE LOS REACTORES Y REFRIGERACION
Seccion = 0.1; % m2
d = (Seccion*4/pi)^0.5; % m
U = 1.0; % kJ/s·m2·K
Tw = 30+273; % K

% DATOS ALIMENTO
Talim = 50+273; % K
Qv0 = 0.4/60; % m3/s
Qv1 = 0.2/60; % m3/s
Qv2 = 0.3/60; % m3/s
Qv3 = 0.1/60; % m3/s

% EJECUTO PRIMER REACTOR Y TANTEANDO VOY A VER QUE LONGITUD DE REACTOR
% NECESITO PARA LLEGAR A LA SALIDA A C(3)=1.5M

C0 = [2 16.6 0.1 0 0]; % kmol/m3
L1 = 1; % no conocemos este valor, se pone 1 para empezar

y0 = [C0 Talim]; % Condiciones iniciales
[x1,Y1] = ode45(@fdif_rfp1,[0 L1],y0);

% REPRESENTACIÓN DE RESULTADOS
L_r1 = x1; % variable independiente
C_r1 = Y1(:,1:5);
T_r1 = Y1(:,6);
C_salida_r1 = Y1(end,1:5); % variable dependiente (C)
T_salida_r1 = Y1(end,6); % variable dependiente (Tª)

figure(1)
plot(L_r1,C_r1)

xlabel('L / m')
ylabel('C_j / kmol/m^3')
title('Variación de concentraciones en el RFP_1')
legend('Sacarosa', 'Agua acidulada', 'glucosa', 'Fructosa', 'indesada')

figure(2)
plot(L_r1,T_r1)
xlabel('L / m')
ylabel('T / K')
title('Variación de temperatura en el RFP_1')

Archivo de función:

function z=fdif_rfp1(x,y)

global k0 Ea R Seccion Qv1 alfa U Tw Tref d DCp DHref Cp

% Se asginan de nuevo las variables del vector de
% condiciones iniciales "y"

%Sacarosa(A) medioacido(B) glocosa(C) fructosa(D) indes(E)

C=y(1:5);
T=y(6);

n = C*Qv1; % Flujo molar;

% BALANCE DE MATERIA

k1 = k0*exp(-Ea/R/T);
k2 = exp(-5.64-220/T);

k = [k1 k2];

r(1) = k(1)*C(1);
r(2) = k(2)*C(1);

dndL(1) = Seccion*r*alfa(:,1);
dndL(2) = Seccion*r*alfa(:,2);
dndL(3) = Seccion*r*alfa(:,3);
dndL(4) = Seccion*r*alfa(:,4);
dndL(5) = Seccion*r*alfa(:,5);

dCdL = dndL/Qv1;

% % Equivalente pero mediante bucle:
%  for i=1:5;
%    z(i)=(Seccion/Qv1)*r*alfa(:,i);
%  end

% BALANCE DE ENERGIA 
for i=1:2;
    DH(i)=DHref(i)+DCp(i)*(T-Tref);
end

Q = U*pi*d*(Tw-T);

dTdL = (Q - Seccion*sum(r.*DH))/ sum(n'.*Cp);

z = [dCdL, dTdL]';

end

 

Categorías
MATLAB Octave podcast

¿MATLAB? Yo uso Octave UPM – Podcast #2

¿Buscas una alternativa a MATLAB libre y que sea compatible con tu trabajo ya hecho? ¿tienes problemas de licencias o te gustaría reducir el coste de las mismas?

En esta ocasión entrevistamos al desarrollador principal de Octave UPM, una de las alternativas más atractivas a MATLAB. Israel Herraiz (@herraiz) nos responde a todas las preguntas sobre este proyecto basado en GNU Octave que busca la máxima compatibilidad con MATLAB y le añade una entorno gráfico también similar.

Disclaimer: Después de este podcast no te quedarán casi excusas para no probar software libre «tipo MATLAB».

Secciones de la entrevista con links para obtener más información:

  • ¿Por qué Octave? [EN] GNU Octave, a great time saver.
  • [EN] Problemas de licencia con MATLAB y sus toolboxes diseñados para pasar por caja (ej. el toollbox de estadística necesario para funcionesciones triviales como random entre a y b).
  • GNU Octave (Wikipedia) – ¡Originalmente creado con la finalidad de calcular reactores para procesos Químicos!
  • ¿Por qué voy a querer una alternativa a MATLAB si funciona tan bien y es tan solicitado?
  • ¿Por qué Octave si es tan similar no se usa? Compatibilidad entre MATLAB y Octave (+1) y falta de una interfaz gráfica y entorno de programación,
  • Octave UPM: origen, motivación y objetivos.
  • Resultados y aceptación por alumnos de la UPM.
  • Octave está trabajando en una GUI también ¿se sabe algo?
  • Continuidad de Octave UPM y diferencias con GNU Octave.
  • Material libre para aprender a programar: MiriadaX (Wiki) y materiales de Guillem Borrell.

Actualización: La nueva versión de GNU Octave ya incorpora interfaz gráfica (descargar para Windows)

Y como siempre, si hay algo que te hubiera gustado añadir puedes comentárnoslo justo aquí abajo.

Música:

Agradecimientos a la EPS de Alicante, a los ing. técnicos de sonido y a Marisa por sus mensajes de error 😉

¿MATLAB? Yo uso Octave UPM de Israel Herraiz
Categorías
podcast Python

Descubre Python en 30 minutos – Podcast #1

Descubre que ventajas está suponiendo el uso de Python en el ámbito científico e ingenieril. Entrevistamos a Juan Luis Cano de Pybonacci (@Pybonnaci) para que nos hable y responda a todas las preguntas sobre Python y su ecosistema. Escucha online o descárgate nuestro (primer) podcast y te contamos todo lo que siempre quisiste saber en menos de 30 minutos.

Podcast donde halamos de Python y las ventajas que supone frente a otras herramientas

Disclaimer: Después de este podcast quedarás pythonizado y aún no existe cura (que sepamos).


Secciones de la entrevista con links para obtener más información:

Actualización: Hemos organizado un curso gratuito de programación con Python para científicos e ingenierios [Acceder]

¡Ah! Si hay algo que te hubiera gustado añadir puedes comentárnoslo justo aquí abajo.

Música:

 

Categorías
Python

Ventajas de Python vs Fortran / C ¿Cuál es mejor o más rápido?

Siendo Python un lenguaje de alto nivel, ¿qué hay de su velocidad?, ¿acaso no es Fortran o C más rápido para el cálculo científico?

En cierto sentido la respuesta es «sí», ya que estos lenguajes son mucho más cercanos al hardware dando más opciones de control y velocidad.

[box]Actualización (2015): Numba es una librería que está cambiando las reglas del juego permitiendo acelerar código Python a velocidades cercanas a C++ con tan sólo un par de líneas más en tu código. En el ámbito científico, numba puede convertirse en una revolución. Si quieres ver un ejemplo en vídeo de numba de nuestro curso online.

Antes de seguir,vamos a resumir las mayores virtudes de Python que explican por qué, en estos últimos 10 años, se ha establecido como uno de los lenguajes más comunes para el cálculo científico:

  • Python es lenguaje de alto nivel conveniente para un desarrollo rápido de código
  • Su filosofía de diseño enfatiza la simplicidad y legibilidad de código
  • Posee núcleo de lenguaje relativamente pequeño con el apoyo de magníficas librerías (NumPy, SciPy, pandas, matplotlib etc.)
  • Es lenguaje multiparadigma, en el que varios estilos de programación son compatibles (imperativo, orientado a objetos, funcional)
  • Lenguaje de programación interpretado en lugar de compilado.
  • Es multiplataforma (Windows, MacOS y Linux), gratuito y open source.

Eso esta muy bien, pero entonces, sin ser tan rápido como Fortran o C, ¿por qué es interesante usar Python para cálculo científico?

¿Optimizando qué?

Hay que recordar tu tiempo es un recurso mucho más valioso que el tiempo de cálculo de un ordenador.

La función objetivo correcta para minimizar el tiempo total sería:

donde el primer término es un factor humano mientras que el segundo es computacional.

Lenguajes de alto nivel como Python o MATLAB están optimizados para humanos, mientras que lenguajes de de nivel inferior, como Fortran y C, están optimizados para ordenadores.

xkcd-python

Así, aunque C y Fortran funcionen (mucho) más rápido y den mayor control, usarlos conlleva:

  • dedicarle más tiempo a aprender, escribir y depurar código
  • direccionamiento detallado (declaración de variables, asignación/desasignación de memoria , etc.)
  • necesidad de código repetitivo el cual es tedioso y propenso a errores

Por estas razones, el paradigma científico actual resulta de la combinación de los puntos fuertes de lenguajes de alto y bajo nivel de la siguiente forma:

  1. Escribir un programa prototipo en un lenguaje de alto nivel como Python
  2. Si el programa es demasiado lento, entonces analizarlo (profiling) para averiguar donde están los cuellos de botella
  3. Volver a escribir esas y sólo esas pequeñas partes del código en Fortran / C
  4. Modificar el programa Python existente para llamar a este nuevo código Fortran / C cuando sea necesario

Si deseas saber cómo implementar código C y Fortran en Python puedes echar un vistazo a este notebook de J.R. Johansson

Nota: Esta entrada es una traducción libre del material disponible (y muy recomendable) de Quantitative Economics.