Matlab versus Octave

Logos MATLAB Octave

La asignatura ‘Informática’ que se imparte en el primer curso de la Escuela de Ingenieros de Caminos de la Universidad Politécnica de Madrid (UPM), consiste en enseñar a los alumnos a utilizar MATLAB y Octave. En ambos casos, se trata de software matemático orientado al cálculo numérico. También ofrecen un lenguaje de programación, denominado lenguaje m, que permite la realización de programas.

MATLAB es un software privativo de la empresa Mathworks. Es un software caro, cada licencia cuesta unos dos mil euros al año. Octave es la versión de código abierto de MATLAB. Su utilización es libre y gratuita.

En la UPM se dispone de un acuerdo con Mathworks mediante el cual, tanto alumnos como profesores, disponemos de una licencia de MATLAB que podemos utilizar sin coste. Es la vieja técnica de regalar droga en la puerta del colegio para enganchar a los chicos a futuro. Y surte efecto. En la UPM se enseña preferentemente MATLAB frente a Octave.

Siempre que se trata de utilizar versiones de código abierto de algún software comercial, surge la pregunta de cuál es mejor de los dos. En la mayor parte de las ocasiones la pregunta está mal planteada, pues “ser mejor” es un concepto subjetivo, que depende en gran medida de los condicionantes del uso que se vaya a hacer del software.

Si nos fijamos únicamente en la velocidad de operación de los cálculos, MATLAB es más rápido. Lo que sucede es que, en la práctica, dicha velocidad es difícil de apreciar. Desde luego en los programas que hacemos en nuestro curso de informática no se nota en absoluto. Si uno hace el cálculo de la inversa de una matriz de 1000 filas y 1000 columnas, pues sí que se nota la diferencia. Lo que pasa es que no es habitual tener que hacer ese tipo de cálculos.

Pero hay otros aspectos que hay que valorar a la hora de decidir si un software es mejor que otro. Es paradigmático el caso del uso del lenguaje Python, que pese a ser mucho más lento que alternativas como el C u otras, no deja por ello de ser la principal opción a la hora de desarrollar aplicaciones de inteligencia artificial y muchos otros cálculos científicos. La existencia de librerías de funciones, la facilidad de uso, la facilidad programación y otros aspectos son fundamentales a la hora de decidirse por un lenguaje de programación concreto para su uso en determinado campo del conocimiento.

Pasa lo mismo con la comparación entre MATLAB y Octave. Octave, por ejemplo, es muy sencillo de utilizar desde otros lenguajes. Esto permite programar en cualquier lenguaje y utilizar por debajo Octave para la realización de los cálculos matemáticos complejos. Esta característica, por sí sola, puede ser clave a la hora de decidirse por su utilización. Creo que es uno de los motivos por los que Octave es la solución de cálculo numérico preferida en el CERN, seguramente el laboratorio de física de partículas más avanzado del mundo [1].

El funcionamiento de MATLAB y Octave es casi idéntico. Hay pocas diferencias y, la mayoría, ni siquiera es uno consciente de ellas en el funcionamiento normal. Siempre recomiendo a mis alumnos que, puesto que disponemos de licencia de uso de MATLAB, aprendan a utilizar los dos, que se instalen los dos programas en sus computadoras. En las clases yo utilizo preferentemente Octave, aunque siempre hago indicaciones de cómo resolver cuestiones concretas en MATLAB, que suelen estar relacionadas con la localización de opciones en el interfaz gráfico.

Hay otros aspectos más objetivos que me hacen pensar que Octave es una opción mejor que MATLAB para su utilización en el ámbito científico. Me llevan los demonios cada vez que leo un paper científico aceptado que utiliza MATLAB para resolver cálculos complejos. En mi opinión, esto no debería estar admitido en el ámbito científico. Cualquier experimento científico tiene que permitir que otros científicos puedan repetir el experimento de manera independiente. Pero, ¿cómo puede uno repetir un experimento que se resuelve mediante un algoritmo que no es de código abierto y que realiza los cálculos con una caja negra que es imposible de repasar? ¿Cómo se han resuelto las condiciones de borde? ¿Qué tratamiento da el algoritmo a determinados valores? De hecho, se han producido a veces errores importantes en diferentes campos científicos motivados por bugs en los algoritmos de software de código cerrado que no se habían detectado. Un ejemplo dramático se dio hace unos años en relación con el software que gestiona los scanner cerebrales [2]. Seguramente esta es otra de las razones por las que el CERN utiliza Octave: cualquier algoritmo se puede repasar y analizar, para detectar posibles errores, lo que no es posible hacer con MATLAB.

Y entonces, si esto es así, ¿por qué se permite la publicación de artículos científicos que basan sus cálculos en algoritmos de código cerrado de MATLAB? Pues para mí es inexplicable. La ignorancia y el dinero están detrás, no me cabe duda.

Hay un aspecto que suele condicionar la utilización de software privativo por parte de algunos usuarios. Se trata del interfaz gráfico. Los programas “caros” suelen tener interfaces gráficos más vistosos. El software libre lo desarrolla una comunidad de desarrolladores que actúa, en su mayor parte, de forma artesanal y en muchos casos de manera altruista. En ese sentido, no se suele dedicar mucho esfuerzo a la vistosidad o al marketing.

La versión actual de MATLAB utiliza un interfaz gráfico basado en la barra de herramientas que impuso hace unos años Microsoft en Windows, en su popular suite Office. Se basa en una barra de herramientas con botones grandes que permiten que cada opción lleve asociada una imagen coloreada. Hay botones que son eso, un botón. Otros son desplegables que abren a su vez otras opciones. También hay unas pestañas que permiten seleccionar diferentes barras de herramientas. Empresas como Microsoft o Apple nos tratan de imponer desde hace años la sustitución de las palabras por las imágenes, en las formas de navegar a través de las opciones que ofrecen los programas. Personalmente no me gusta esa forma de interpretar la navegación por un mapa de opciones. Me sitúo mejor navegando al viejo estilo Menú->Submenú, que me proporciona una estructura de árbol en la cuál mi cerebro se posiciona con más facilidad. En las barras de herramientas se pierde esa organización de la información en forma de árbol.

Además, los botones me suelen obligar a utilizar más el ratón y menos el teclado. Normalmente tengo que sobrevolar el botón con el cursor del ratón para que aparezca el tip de texto e interpretar adecuadamente la opción que busco, lo que me parece una pérdida de tiempo. Estoy acostumbrado a utilizar el teclado. Los menús son fáciles de acceder mediante combinaciones de teclas. Cada vez que tengo que soltar el teclado y agarrar el ratón, me parece que pierdo el tiempo.

Por ello, y aunque comprendo que a algunos les parezca mejor el interfaz gráfico de MATLAB, a mí personalmente me gusta menos que el de Octave.

Hay una razón de tipo social, que supongo que también es opinable. Imponer a nuestros futuros científicos e ingenieros la utilización de un software “caro”, cuando existen alternativas libres perfectamente equiparables, me parece ineficiente. La utilización de soluciones libres y de código abierto, permite que el dinero, en vez de utilizarse en pagar licencias a multinacionales, se utilice en otras cosas, por ejemplo, en pagar a desarrolladores, científicos e ingenieros locales.

En mi uso particular, siempre uso Octave. A mí me gusta más. No tengo ninguna duda de que es un software mucho mejor, en el contexto de utilización que yo hago. Y por ello, mientras siga siendo posible, seguiré utilizando en mis clases de manera preferente Octave frente a MATLAB, y seguiré recomendando a mis alumnos que aprendan a utilizar los dos programas.

[1] https://information-technology.web.cern.ch/services/software/octave

[2] https://elpais.com/elpais/2016/07/26/ciencia/1469532340_615895.html

2 comentarios en “Matlab versus Octave

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *