¿Programar en MATLAB? – !Eso no es programar!

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:
Es decir, la definición misma de computador depende de la de programación.A computer is a general-purpose device that can be programmed to carry out a set of arithmetic or logical operations automatically.
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
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