Por qué debes aprender más lenguajes de programación (incluso si no los vas a utilizar)

04/06/2019Artículo original

Imagina que te han entregado una tarea y eres libre de elegir el lenguaje de programación. La asignación implica todo tipo de manipulación de cadenas: leer cadenas, dividir cadenas, recortar, unir y ejecutar expresiones regulares sobre cadenas, todo en UTF-8 y, por supuesto, los emojis deben funcionar. ¿Qué lenguaje elegirías? ¿C? Oh, por favor no.

Otro trabajo, esta vez en una institución financiera. Necesitas realizar decenas de miles de cálculos concurrentes. Tener alto rendimiento es un requisito irrenunciable. ¿Deberías usar… Ruby? Venga. A continuación te cae: crear un script único que cambie el nombre de un grupo de archivos … ¿lo escribirías en Java? ¿Hacer un descargador de datos de la web… en Python? Programar un controlador para un dispositivo médico con… ¿C#? ¿Swift? ¿Lua? ¿Ves por dónde voy?.

Los diferentes lenguajes de programación son buenos para algunas cosas y malos para otras. Cada uno hace ciertas cosas más fáciles y, a su vez, otras más difíciles. Dependiendo de lo que queramos hacer, podemos ahorrar mucho trabajo si elegimos el lenguaje de programación apropiado, el que hace que resolver el tipo de problema al cual nos enfrentamos sea más sencillo.

Ese es uno de los beneficios tangibles y sensatos de aprender varios lenguajes: añades otra herramienta a tu caja de herramientas y, cuando llegue el momento, podrás elegir la mejor. Pero yo iría un paso más allá.

  Azure Web Apps: Cómo acceder correctamente a través de FTP

Creo que es valioso aprender nuevos lenguajes de programación incluso si -aquí viene el golpe- nunca los sacas de la caja.

Las lenguas moldean nuestra forma de pensar*, y cada una lo hace de su propia forma. Eso es cierto también para los lenguajes de programación. Cada lenguaje contiene un modelo mental diferente, una perspectiva distinta sobre cómo pensar acerca de la computación y sobre cómo escribir programas.

Toma el lenguaje SQL, por ejemplo, y piensa cómo moldea tus pensamientos sobre el flujo y la forma de los datos en tu programa. Ahora considera cómo se vería en un lenguaje imperativo y orientado a objetos como Java, o en un lenguaje funcional como Haskell. O en C. Imagina cómo sería un servidor de juegos multijugador si lo programases en Python, en Haskell o en Erlang. O la transmisión y el procesamiento de terabytes de datos en C, en Go, en Clojure. O una interfaz de usuario en Tcl, en Lua, o en JavaScript.

Cada lenguaje de programación es una lente a través de la cual podemos ver el problema que intentamos resolver. A través de algunos de ellos el problema parece complicado, agotador. A través de otros, ni siquiera parece un problema en absoluto, apenas se ve la diferencia con cualquier otra cosa mundana que uno pueda hacer en este lenguaje.

  El síndrome de "Burnout" o el desgaste profesional del programador

Al aprender un nuevo lenguaje, incluso si lo dejas en tu caja de herramientas para toda la eternidad, obtienes una nueva perspectiva y una manera diferente de pensar en los problemas. Una vez que hayas implementado un servidor de juegos en Erlang, verás los servidores de juegos desde otra perspectiva. Después de haber procesado datos con Lisp, al aprender a pensar en los datos como un conjunto de listas que puedes moldear enviándolas a través de una serie de pequeñas funciones que se pueden componer para formar tuberías de funciones, verás como aparecen por todas partes sombras de este patrón. En cuanto hayas probado por primera vez la administración de la memoria en C, empezarás a apreciar lo que Python, Ruby y Go están haciendo por ti, mientras valoras el esfuerzo de su trabajo. Y si alguna vez has construido una interfaz de usuario en JavaScript con React.js, sabes que estás pensando en usar componentes para la UI, cambiando el modelo de manera fundamental.

Estas nuevas perspectivas, estas ideas y patrones, persisten, permanecen contigo, incluso si terminas por escoger otro lenguaje. Y eso es algo lo suficientemente poderoso como para seguir aprendiendo nuevos lenguajes, porque una de las mejores cosas que pueden sucederte cuando intentas resolver un problema es un cambio de perspectiva.

  Fundamentos de testing: preguntas y respuestas

*Esto es lo que se conoce como relatividad lingüística o hipótesis de Sapir-Whorf. En el contexto de este artículo apoyo la tesis en cierto modo, pero debes saber que entre la comunidad científica su validez aún está muy abierta al debate. Lee este artículo para una introducción a los problemas con esta tesis.

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Contiene enlaces a sitios web de terceros con políticas de privacidad ajenas que podrás aceptar o no cuando accedas a ellos. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Más información
Privacidad