Filosofías de programación

Dependiendo del tipo de problema que queramos resolver – numérico, administrativo, de propósito general, inteligencia artificial, lógico – tenemos distintos lenguajes de programación que permiten representar de mejor manera los formatos de los datos y los recursos que requerimos para resolver el problema. Así, para procesos numéricos se requiere de bibliotecas muy extensas con funciones matemáticas, un manejo sencillo de matrices y, en general, de espacios de varias dimensiones, etc. El lenguaje que fue diseñado para este tipo de problemas fue FORTRAN, y recientemente se usa C. Si lo que queremos es resolver problemas administrativos tenemos a COBOL, que se rehusa a morir, o Visual Basic que provee una fabricación rápida de interfaces con el usuario 2 . Como representantes de lenguajes de propósito general tenemos Pascal, C, Algol. 

Para problemas que involucran cambios de estado en los datos, o situaciones que suceden no forzosamente una después de la otra se cuenta con lenguajes orientados a objetos como C++, SmallTalk y Java. Para resolver problemas que involucran manejo simbólico de datos, como lo que se requiere para Inteligencia Artificial, se tienen lenguajes como LISP y Scheme. Para problemas de tipo lógico se tiene ProLog. En fin, casi cualquier tipo de aplicación que se nos ocurra, se puede diseñar un lenguaje de programación para el cual el lenguaje que se utilice en el algoritmo sea mucho muy cercano al lenguaje de programación: éste es el objetivo que se persigue cuando se diseñan nuevos lenguajes de programación.

Es importante darse cuenta que, finalmente, cualquier problema se puede resolver utilizando cualquier lenguaje: finalmente, todo programa tiene que traducirse a lenguaje de máquina, por lo que no importa en qué lenguaje hayamos programado, terminaremos con un programa equivalente escrito en lenguaje de máquina. El meollo del asunto es, simplemente, qué tanto trabajo nos cuesta pensar en el problema en un lenguaje pensado para resolver otro tipo de problemas. Buscamos que el lenguaje de programación se ajuste de manera sencilla a nuestro modo de pensar respecto al problema que deseamos resolver.