Activa las notificaciones para estar al tanto de lo más nuevo en tecnología.

¿Qué lenguaje de programación aprender?

Esta pregunta me la hacen con frecuencia los estudiantes que inician una carrera en ciencias o ingeniería de la computación. La realidad es que no...

programacion00Esta pregunta me la hacen con frecuencia los estudiantes que inician una carrera en ciencias o ingeniería de la computación. La realidad es que no hay una sola respuesta correcta. En mi experiencia, no me parece que haya un lenguaje que deba ser favorecido por entre la miriada que hay de ellos.  Lo que hay que decidir es qué alcance queremos tener para nuestros trabajos de programación y entonces, tomar la que podría ser “la mejor decisión”.

Lo que importa aquí es que el lenguaje a elección sea moderno, que tenga programación orientada a objetos, estructuras dinámicas, que sea estructurado y que además, haya un buen número de adeptos al lenguaje en cuestión. La razón de esto es que muchas veces encontraremos que hacer una tarea determinada, un algoritmo en particular, requiere tal vez de conocimientos que no tenemos. Entonces aquí entran los foros y las comunidades de programadores del lenguaje que hemos elegido y que, probablemente, ya han resuelto el algoritmo que no nos sale o en el peor de los casos, una versión que se acerca a lo que nosotros necesitamos.

Por ejemplo, podemos pensar en Java como un buen lenguaje de programación porque entre otras cosas, es multiplataforma. Aunque el sistema no genera código nativo del procesador en donde se ejecuta el compilador, sino que se genera un seudo-código (bytecode), que corre en una máquina virtual (un intérprete escrito para la plataforma en partivular que usamos), este código en realidad se ejecuta muy rápidamente. En pruebas que he hecho al respecto, aunque no deben considerarse un “benchmark” oficial, sino una mera experiencia personal, hallé que Java corre en muchos casos a la misma velocidad que código nativo en x86 en Delphi y que conste, el código que genera Delphi (turbo Pascal para Windows, siendo estrictos), es muy eficiente y rápido.

En mi opinión, los lenguajes interpretados, a excepción de Java, como pueden ser Python o Ruby on Rails, no son una buena idea para muchas aplicaciones porque comparativamente con la mayoría de los programas compilados, son excesivamente lentos. De nuevo, en pruebas informales usando código de la programación lúdica de algunos de los programadores que han entrado en estos retos, demuestran los mencionados lenguajes interpretados son totalmente inoperantes en términos reales.  Y sí, entiendo que Python tiene estructuras de datos que ya soñarían otros lenguajes, pero en el mundo real, no parecen poder ser tan exitosos como programas escritos en C por mencionar quizás el lenguaje más usado en el mundo.

Pienso que como profesionales de la programación no es mala idea adherirse a un lenguaje en particular, porque con el tiempo uno empieza a agarrar experiencia en cómo hacer las cosas y además, si hablamos de lenguajes populares, hay muchas bibliotecas casi literalmente para todo tipo de tareas que se nos puedan ocurrir. Esto implica sin embargo un riesgo: que por alguna razón y el lenguaje empiece a perder popularidad. Entonces veremos que hay menos gente que lo usa, menos bibliotecas (o las que hay nunca más se actualizarán), etcétera. Ningún lenguaje se salva de que le pase esto, pero si utilizamos los considerados más populares, se minimiza el riesgo de que esto ocurra.

Finalmente, una vez elegido un lenguaje, hay que crear código… Pero para ello se necesita tener un proyecto, ya sea de alguien que nos ha contratado para escribir un programa en particular o bien, entrarle a esto de programar generando uno mismo un proyecto interesante del cual, cuando se concluya, seguro habremos aprendido mucho de cómo hacer las cosas en el lenguaje elegido. Hay muchos ejemplos de que esto es una buena estrategia para aprender. El autor de un procesador de textos gráfico, con tipos de letras de distintos tamaños, escrito para la Apple II fue creación de un programador que quería aprender s programar en ensamblador del procesador 6502 y se le ocurrió que MultiScribe (como se llamaría a la postre el software), era un buen proyecto para empezar a trabajar.

Cabe decir sin embargo que todo profesional de la programación sabe que muchas veces un lenguaje puede no ser el mejor para desarrollar un software particular. Si alguien le pide un programa que utilice técnicas de Inteligencia Artificial, entonces habrá que ver hacia lenguajes como Lisp y Prolog. Sin embargo, esto es en muchas ocasiones parte del trabajo de programación.  Lo que importa aquí es tener un lenguaje base que pueda sacarnos de los problemas de programación en el menor tiempo posible. No es una elección fácil pero tampoco algo que tenga que considerarse por meses o años antes de tomar una decisión. Es quizás cuestión de sentido común.

Comentarios