Lenguajes de programación gratuitos

17/02/2018 9 comentarios
Menear

Una revista a las herramientas gratuitas más populares, que son una opción nada desdeñable en cuanto a prestaciones y facilidad de uso para la computación científica

Hace poco leí que "la programación va a ser el nuevo inglés". Se quería decir que si ahora se valora el dominio de los idiomas extranjeros, es verosímil que en el futuro se pregunte qué lenguajes de programación se manejan con soltura. Hasta hace pocos años, programar (me refiero exclusivamente a las aplicaciones científicas) requería por lo general o bien programas comerciales, o bien herramientas y lenguajes gratuitos, pero cuyo aprendizaje distaba de ser sencillo.

Pues bien, los entornos de programación gratuitos han alcanzado su mayoría de edad. En este momento pueden ya plantar cara al software comercial y salir bien parados. Pensando en los lectores de Investigación y Ciencia, paso revista a continuación a los que me parecen más notables. Quiero matizar que sin duda muchos de los lectores de Investigación y Ciencia saben de esto más que yo; me dirijo más bien a aquellos que no estén tan al día de estos avances, o a quienes dudan en la elección del lenguaje más indicado para sus necesidades. También pienso en los que se dedican a la docencia y se plantean enseñar a programar.

Admitamos que los entornos de programación comerciales ofrecen prestaciones que pueden justificar el gasto. Yo mismo suelo programar en Matlab. Aparte de la facilidad de uso, la rapidez, el entorno integrado, la amplia gama de funciones disponibles y la comodidad, Matlab tiene una serie de aplicaciones incorporadas, como puede ser un visor de imágenes o un diseñador de filtros, que ahorra gran cantidad de tiempo, y una comunidad de usuarios donde se puede encontrar código para resolver justamente el problema que uno tiene entre manos. Ahora bien: incluso con el descuento para instituciones educativas, Matlab sale por unos 500 euros. Muchas universidades, como la mía, tienen una licencia de Campus. Pero ¿y si uno no dispone de ella? ¿y si se plantea que cada alumno tenga el programa en su ordenador personal? ¿y si sencillamente no se está dispuesto a gastar ese dinero? Lo mismo cabría decir de otros excelentes programas comerciales, como Mathematica o Maple.

Ofrezco a continuación cuatro soluciones gratuitas. Son cuatro lenguajes de programación distintos, de los cuales expondré mi opinión. Me centro exclusivamente en lenguajes con la potencia necesaria para las aplicaciones científicas, dejando de lado algunas opciones muy interesantes en la enseñanza primaria o secundaria como el Scratch. Los cuatro lenguajes son: C, Python, R y Octave. Todos cuentan con entornos de programación que facilitan su uso, disponibles para Microsoft Windows, Apple OS y Linux (el entorno de programación es un sistema de ventanas donde se combina la escritura del programa, la presentación de resultados gráficos y de texto, la ayuda, etcétera). De cada uno señalo ventajas e inconvenientes; las calificaciones las doy sobre cinco estrellas (cuantas más, mejor). Se ofrecen los enlaces a los sitios de Internet oficiales para descargar los programas.

Octave [+] es un entorno de programación con una sintaxis casi idéntica a la utilizada en Matlab. Es un lenguaje de alto nivel, lo cual quiere decir que se parece mucho al inglés (en cambio, un lenguaje de bajo nivel es más difícil de leer directamente y es más cercano al lenguaje del procesador). De esta manera, la programación es muy sencilla e intuitiva: aprender a programar requiere pocas horas. Los gráficos son de gran calidad, es rápido, y está orientado al cálculo numérico y al procesamiento de datos.

Ventajas: Facilidad de programación; versatilidad; gráficos. Se puede utilizar código de Matlab casi sin modificar.
Puntos débiles: ayuda escasa; los paquetes de funciones disponibles no están tan desarrollados como en otros lenguajes.
Facilidad de aprendizaje *****      Potencia ***      Entorno / gráficos ****
Recomendado para: análisis de datos y de imágenes, cálculo numérico, docencia.

Octave screenshot

Captura de pantalla de Octave

R [+] es un lenguaje de programación enfocado a la estadística y que se está expandiendo con gran rapidez. Su especialidad es tratar con data frames, es decir, estructuras de datos que contienen varios formatos (numéricos, cualitativos, lógicos, etcétera) en un solo objeto. Piénsese en un archivo, en forma de hoja de cálculo (como Excel), que contenga datos de tales como nombre, edad, sexo, peso, altura... Es muy fácil abrir cualquier archivo así en R y elaborar histogramas, buscar relaciones entre las distintas variables, o llevar a cabo un contraste de hipótesis, porque tiene funciones definidas para todas las operaciones estadísticas más habituales. Junto con R, el entorno de programación RStudio [+] ofrece comodidad de uso, integrando gráficos, sistema de ayuda, y editor (la versión Desktop es gratuita). Cabe decir que programar no es tan intuitivo como en Octave.

Ventajas: Facilidad de uso; gráficos; funciones estadísticas integradas; comunidad en la red (foros con soluciones a las tareas más comunes); permite componer fácilmente documentos de gran calidad (con R Markdown).
Puntos débiles: la ayuda es rigurosa, pero para iniciados; la programación para el cálculo numérico no es intuitiva (para aprender a programar hay mejores alternativas).
Facilidad de aprendizaje ****      Potencia ***      Entorno / gráficos ****
Recomendado para: análisis de datos, estadística.

R Screenshot

Captura de pantalla de RStudio

Python [+] se está convirtiendo en el lenguaje de programación preferido de muchos científicos. Es muy rápido, tiene una sintaxis coherente y bien estructurada. La comunidad que lo usa ha desarrollado muchas funciones, agrupadas en paquetes, para cálculo numérico, para tratamiento de imágenes, y para otras muchas tareas específicas. Más potente que R y que Octave, sin duda. Sin embargo, es un lenguaje orientado a objeto; eso significa que los procedimientos son un poco diferentes a las funciones de los otros lenguajes, y cuesta un poco hacerse a ello. Es de nivel más bajo que Octave y R. Aprender a programar cuesta un poco más, pero el esfuerzo merece la pena. Además, hay magníficos libros y material didáctico gratuito.
Existen entornos de programación gratuitos para Python que integran gráficos, editor, la ayuda, una terminal de comandos, etcétera, realmente cómodos. Uno de ellos es Spyder [+].

Ventajas: Potencia de cálculo; gran cantidad de paquetes y funciones; comunidad en la red, ayuda y material gratuito.
Puntos débiles: la instalación puede ser un poco complicada; el aprendizaje exige cierto esfuerzo.
Facilidad de aprendizaje ***      Potencia ****      Entorno / gráficos ***
Recomendado para: aplicaciones científicas que necesiten rapidez de cálculo.

Spyder screenshot

Captura de pantalla de Spyder

Por último, me permito volver la vista al C. El lenguaje C puede ser la elección más acertada para los que quieren sacarle todo el jugo al procesador. Es de bajo nivel, compilado. Lo cual implica cierto esfuerzo; y es inmisericorde con los errores. Pero es excelente en cuanto a la velocidad de ejecución. Una buena noticia es que ahora hay entornos de programación gratuitos muy cómodos y sencillos de utilizar. Para Apple, está Xcode [+]. En Linux, yo utilizo Geany [+] que encuentra él solo el compilador gcc (incluido en la distribución del sistema operativo). Para Windows, sugiero Code::Blocks [+], que ofrece la posibilidad de instalarlo junto con un compilador gratuito llamado MinGW, ya que con el sistema operativo Microsoft Windows no viene ninguno. Ahora bien: presentar un resultado en un gráfico, o interactuar con los datos, son tareas ímprobas en este marco.

Ventajas: Potencia de cálculo, velocidad.
Puntos débiles: lenguaje de bajo nivel; figuras y gráficos ausentes o de difícil elaboración.
Facilidad de aprendizaje **      Potencia *****      Entorno / gráficos **
Recomendado para: cálculo numérico.

Geany screenshot

Captura de pantalla de Geany

¿Me dejo alguno? ¿Alguien opina de otra manera? Estaré encantado de retocar este elenco.