En estos días, mientras escribía un fragmento de código muy sencillo para recolectar datos de Internet, recordé esa duda que tuve hace ya varios años y que cualquier persona con un mínimo de interés en la programación ha llegado a tener: "¿Cuál es el mejor lenguaje de programación?". Si bien la vida se encargó de regalarme mi propia respuesta, quise hacer una búsqueda simple en la red para ver cómo iba el panorama. Lo que me encontré fue precisamente lo que sospechaba, que las discusiones alrededor del tema siguen siendo unas batallas campales que no parecen tener final, afortunadamente son sólo virtuales. Si se dieran en el mundo real, de seguro la mitad de la población habría desaparecido.
A mi parecer, y repito, "mi parecer", la respuesta a esta pregunta es muy simple: todos y ninguno. ¿Contradictorio? Puede ser, aunque no creo que tanto, al menos no si tenemos en cuenta que más allá del lenguaje de programación, lo que realmente importa es saber programar. Y de ser posible, saber hacerlo bien. Una vez que esto se logra, la elección del lenguaje se vuelve algo meramente técnico o incluso hasta de preferencia personal, dependiendo del caso. Claro está que esta es sólo una opinión muy personal y no por ello van a dejar de haber peleas virtuales en foros en los que unos defienden casi a muerte al dúo C/C++, otros dan la vida por Java y otros tantos prefieren atacar en nombre de Python. Y todo esto sólo por dar ejemplos con algunos de los lenguajes de programación más conocidos. La lucha se repite día tras día, a diferentes niveles, con diferentes lenguajes y diferentes protagonistas. Algo muy entretenido, no lo niego. El problema con esto que parece ser que muchos entendidos del tema, no todos, omiten o prefieren omitir, es la gran mayoría de estos lenguajes no trabajan solos. Suelen hacerlo en equipo. Nuestro reproductor de música favorito pudo haber sido programado en un lenguaje, mientra que los controladores de audio que maneja pudieron haber sido escritos en otro.
Y es que todo esto no es capricho. Normalmente cada lenguaje nace con la intención de facilitar u optimizar algo en lo que otros pueden estar fallando. Esto hace que el lenguaje nuevo, al igual que todos sus predecesores, tenga ventajas y desventajas. Pero son estas características las que dan sentido a su existencia. Un lenguaje de programación supremamente eficiente en el manejo de recursos y veloz en la ejecución, normalmente es más complejo. Cada instrucción debe ser dada con extremo cuidado. Ahí es donde radica gran parte de la magia de su rendimiento. Esto hace que programar en ellos sea una tarea más demorada. Por otra parte, un lenguaje en donde las instrucciones suelen ser muy simples, pierde un poco de esa eficiencia y de esa velocidad de ejecución, pero gana en tiempo de desarrollo y mantenimiento de código.
Es precisamente por todo esto que los lenguajes pueden y deben trabajar en equipo. En una aplicación muy muy muy compleja, lo ideal es estructurar el código de una manera que se facilite tanto el desarrollo de la aplicación, como la corrección de errores y mejoras futuras. En esto ayudan los lenguajes de más alto nivel, como por ejemplo Python. Por otra parte, si lo que se requiere es algo muy muy muy crítico en donde el tiempo de ejecución y el control de los recursos es fundamental, pues tendremos que irnos a un nivel mucho bajo, como C o incluso Ensamblador.
Dado que los extremos no resultan ser muy cómodos para todo o simplemente son muy complicados de manejar, en la práctica suelen buscarse equilibrios. Lo ideal, claro, es hacer aplicaciones que sirvan, que sean rápidas y que sean bonitas, pero no sólo ante los ojos de los usuarios, sino también ante los ojos de los programadores, ya que son ellos los que deberán mantener actualizado el código. Si este está bien hecho, podrá ser entendido y bien mantenido por sus desarrolladores, incluso si estos llegasen a cambiar. Y es precisamente por estas necesidades por las que empiezan a aparecer combinaciones de lenguajes. En muchos proyectos, por ejemplo, suelen usarse lenguajes de alto nivel para hacer la estructura general del código mucho más amigable para los programadores. Estos pueden trabajan de la mano con otros lenguajes que faciliten el trabajo a los diseñadores gráficos que harán que el programa sea estéticamente agradable al usuario. Pero también pueden estarse utilizando de forma simultánea otro lenguaje de un nivel mucho más bajo para mejorar la velocidad y eficiencia del programa, sobretodo en las partes más críticas.
Visto de esta manera las discusiones sobre qué lenguaje de programación es mejor que otro, en últimas, terminan convirtiéndose en un mar de "dependes". Depende de si es para esto o para esto otro, de si es para usarlo aquí o para usarlo allá, de si se necesita para la próxima semana o para dentro de un año. En fin, una cuestión de nunca acabar. ¿Será que Google obliga a sus ingenieros y sus científicos a trabajar sólo con un lenguaje de programación? Creo que no hace falta trabajar allá para intuir una respuesta. Los lenguajes de programación no son más que herramientas. Lo realmente interesante está en saber cuándo usar cada y cuándo buscar a alguien que sí la sepa usar. Puedes clavar un clavo golpeándolo con una tuerca, pero la tarea te será difícil, ineficiente y puede que hasta dolorosa. Para eso inventaron amartillo, para facilitarte la vida. Ya si lo que necesitas no sólo es golpear un clavo, sino fabricar un submarino, pues puedes tratar de hacerlo tú solo y usando únicamente las herramientas que sabes usar, pero tarde o temprano entenderás que todo será más fácil si llamas a un grupo de expertos en cada una de ellas y acuerdan cómo unir esfuerzos.
Y no digo con todo esto que no haya lenguajes de programación quizás un poco más versátiles que otros, porque sin dudas los hay, pero todo ello suele tener, como ya comenté, un costo en rendimiento o alguna otra cosa, así que no vale la pena torturarse demasiado pensando en eso. Además, no hay que olvidar que un lenguaje de programación favorito es sólo eso, un "favorito", pero eso no hace que sea el mejor.
- Inicie sesión o registrese para enviar comentarios