📐 MATLAB — 1984

⬅️ Atlas · 🗂️ Todas las fichas · 📚 Índice de clases

MATLAB empezó como una interfaz cómoda para las bibliotecas de álgebra lineal en Fortran —de ahí el nombre, MATrix LABoratory— y se convirtió en el entorno estándar de la ingeniería mundial. Es de los pocos lenguajes de esta lista que es a la vez un lenguaje y un producto comercial, y esa dualidad explica sus fortalezas y su principal debilidad.

🎯 Por qué está en este programa

MATLAB es un primo de la familia array / científica (Atlas), junto a APL, J, R, Julia y Fortran.

Aporta al programa dos cosas: la programación vectorizada aplicada a la ingeniería (clase 089) y el caso de estudio más claro de generación de código desde un modelo —Simulink— que la clase 155 nombra como cuarta capa de un sistema poliglota, y que en aviación y automoción es donde de verdad se escribe el software.

Año 1984 (comercial); el prototipo, de finales de los setenta
Autoría Cleve Moler, Universidad de Nuevo México; MathWorks desde 1984
Familia Array / científica; construido sobre LINPACK y EISPACK (Fortran)
Paradigma Imperativo y vectorizado; con objetos añadidos después
Tipado Dinámico; todo es una matriz de dobles por defecto
Memoria Automática, con copia al modificar
Ejecución Interpretado con JIT; con generación de C y de HDL como productos
Estado 🟢 Dominante en ingeniería; propietario y caro, con GNU Octave como alternativa

📜 Historia

Cleve Moler enseñaba análisis numérico en la Universidad de Nuevo México en los años setenta, y sus estudiantes tenían que escribir Fortran para usar LINPACK y EISPACK —las bibliotecas de álgebra lineal de la época, precursoras de LAPACK (clase 149)—.

Escribir Fortran para hacer un ejercicio de matrices era desproporcionado, así que Moler hizo un intérprete que llamaba a esas bibliotecas con una notación matricial directa. No pretendía ser un producto: era material docente, y lo repartía libremente.

En 1983, el ingeniero Jack Little vio el potencial, lo reescribió en C, le añadió funciones y gráficos, y fundó MathWorks con Moler y Steve Bangert. MATLAB salió al mercado en 1984.

Y el momento que definió su posición industrial fue Simulink (1990): un entorno gráfico de modelado por bloques para sistemas dinámicos y de control. Con Simulink Coder y Embedded Coder, del modelo se genera código C o Ada certificable que se ejecuta en el vehículo real.

Eso cambió qué significa "programar" en esos sectores: en buena parte de la automoción y la aviación, el ingeniero de control dibuja el modelo y el código lo genera la herramienta (clase 155) — y lo que se certifica es la cadena de generación, no el código a mano.

🏭 Dónde vive hoy

🧠 Lo que enseña: matrices por defecto, y el coste de un ecosistema propietario

La vectorización, que es la misma idea de R y APL (clase 089):

A = [1 2; 3 4];
b = [5; 6];
x = A \ b;              % ← resolver Ax = b. Una barra invertida.
y = sin(0:0.1:2*pi);     % la función se aplica a TODO el vector

A \ b es probablemente la operación más elegante de esta lista: resuelve el sistema lineal eligiendo el algoritmo según la forma de la matriz —LU, QR, Cholesky o mínimos cuadrados—. Es LAPACK por debajo (clase 149), y esa es exactamente la razón de ser del lenguaje.

Y hay dos peculiaridades que conviene conocer:

Una, todo es una matriz de dobles. Un escalar es una matriz 1×1, y el tipo por defecto es double. Eso simplifica el modelo y hace que trabajar con enteros o con memoria sea antinatural.

Y dos, los índices empiezan en 1 y se usan paréntesis: A(1,2) es a la vez la indexación de una matriz y la llamada a una función, según qué sea A — una ambigüedad sintáctica que Julia heredó y que Fortran también tiene.

Y la ficha debe ser honesta con lo que más pesa en la clase 164: MATLAB es propietario y caro.

Una licencia completa con cajas de herramientas cuesta miles de euros al año, y cada caja de herramientas se compra aparte. Eso tiene tres consecuencias reales: el código no se puede ejecutar sin licencia, lo que complica la reproducibilidad (clase 154); la comunidad no puede corregir el lenguaje; y quien aprende MATLAB en la universidad se encuentra con que en su empresa no hay licencias.

GNU Octave es una reimplementación libre muy compatible para el lenguaje base, y no cubre Simulink — que es justamente donde está el valor industrial. Y esa es la razón por la que Julia y Python+SciPy le han ido ganando terreno en investigación, aunque no en ingeniería de control.

🔄 Lo que se ha modernizado

⚙️ Cómo se ejecuta hoy

matlab -batch "main"                  # ejecutar sin interfaz
octave --no-gui main.m < entrada.txt   # ← la alternativa libre

# Y dentro: runtests para las pruebas, y el Profiler para la clase 152

🧪 El programa de la clase 041 en MATLAB

Esta versión se escribe aquí y no está verificada en CI (clase 040). Funciona igual en GNU Octave.

v = sscanf(input('', 's'), '%f');
total = v(1) * v(2) * (1 - v(3));
fprintf('Total: %.2f\n', total);

Lo que hay que ver.

📚 Fuentes y bibliografía


⏮️ Volver al Atlas · 🗂️ Todas las fichas · 🔗 Relacionadas: Fortran · Julia · R · APL · Ada