Programar en Matlab (o en GNU OCTAVE)

Si uno lee comentarios en las redes sociales sobre la programación en MATLAB/GNU Octave, por ejemplo en Twitter, a veces uno se consigue con la queja:
¿Programar en MATLAB? – !Eso no es programar!


Y esto me hace reflexionar una y otra vez sobre si de verdad programar en GNU Octave es realmente programar. En mi opinión, todo depende de la definición de programar. Hoy en día, uno puede confundir la programación con OOP (object oriented programmingo programación orientada a objetos) o programación con algunos de los lenguajes de programación que se conocen (JAVA, Ruby, PHP, Python, C++, etc.). La mejor definición que encuentro en la siguiente:
Programar es crear un algoritmo diseñado para ser procesado por una computadora (create an algorithm designed for processing by a computer)

Y aquí vienen quizás los dos conceptos fundamentales detrás  de la programación: algoritmo y computadora. De Wikipedia, un algoritmo es un conjunto auto-contenido de operaciones paso por paso que serán (de alguna forma) ejecutadas. Hacer un algoritmo es independiente de la computadora. Todos ejecutamos algoritmos inconscientemente durante decenas de veces durante el día (p.e. al manejar un automóvil o al preparar una receta). Cuando un algoritmo se lleva a un computador (procesador, microprocesador, PIC, etc.). Es interesante apreciar la definición de computador en Wikipedia:
computer is a general-purpose device that can be programmed to carry out a set of arithmetic or logical operations automatically.
Es decir, la definición misma de computador depende de la de programación.
Visto así, es claro que hacer algoritmos que se ejecutarán en GNU Octave es un tipo de programación. Además un tipo de programación bien específico como se explica más abajo. MATLAB y GNU Octave están catalogados como lenguajes de cuarta generación por su nivel de abstracción y otras características particulares.
Entonces, ¿por qué la queja? Creo que el caso de GNU Octave/MATLAB amerita una explicación adicional. Creo que la programación en GNU Octave (o en MATLAB) es en cierta forma incomprendida. (Como algunas veces lo es la programación orientada a objetos.)

Prototipos
El lenguaje en el que se basan tanto Octave como MATLAB son excelentes lenguajes para la creación de prototipos rápidos de algoritmos de procesamiento (de datos, generación de gráficos, cálculos, etc., etc.).


Pensar en vectores y matrices
Este lenguaje tiene una particularidad extraordinaria para el caso de la ingeniería y, en cierto sentido, para las ciencias y las matemáticas, este lenguaje está basado en que sus variables no son más que vectores y matrices. De hecho, el diseño de muchos y potentes algoritmos se basa en esta particularidad.
Para precisarlo, más que listas, arreglos ordenados, las variables en GNU Octave (y en MATLAB) pueden verse como objetos puramente (matemáticos) algebraicos. Y de aquí sus ventajas para el diseño de algoritmos que tienen que ver con procesamiento de imágenes, con estructuras, con sistemas lineales, entre tantos otros campos.

No hay comentarios:

Publicar un comentario