Conoce bien más de dos lenguajes de programación
Autor: Russel Winder

La psicología de la gente programadora ha sabido, desde hace mucho tiempo, que la experiencia de programación está relacionada directamente con el número de diferentes paradigmas de programación con que el programador se sienta cómodo. No se refiere sólo saber o saber un poco, sino a poder programar genuinamente con ellos.

Cada programador inicia con un lenguaje de programación. Este lenguaje tiene un efecto dominante en la forma en que el programador piensa acerca del software. No importa cuántos años de experiencia tenga el programador usándolo, si se queda con él sólo sabrá ese lenguaje. Un programador de un solo lenguaje está limitado en su pensamiento por ese lenguaje.

Un programador que aprende un segundo lenguaje será desafiante, especialmente si tiene un modelo computacional diferente que el primero. C, Pascal, Fortran, todos tiene fundamentalmente el mismo modelo computacional. Cambiar de Fortran a C introduce unos pocos, pero no muchos retos. Moverse de C o Fortran a C++ o Ada introduce retos fundamentales en la forma en que los programas se comportan. Pasarse de C++ a Haskell es un cambio significativo y, por lo tanto, un desafío importante. Moverse de C a Prolog es un desafío muy concreto.

Podemos enumerar varios paradigmas de computación: procedimental, orientado a objetos, funcional, lógico, de flujo de datos (dataflow), etc. Moverse entre estos paradigmas crea los mayores desafíos.

¿Por qué son buenos estos desafíos? Tiene que ver con la forma en que pensamos en la implementación de algoritmos, los modismos y patrones de implementación que aplican. En específico, la fertilización cruzada es la base de la experiencia. Los modismos para la solución de problemas que aplican en un lenguaje podrían no ser posibles en otro. Tratar de portar el modismo de un lenguaje a otro nos enseña sobre ambos lenguajes y sobre el problema a ser resuelto.

La fertilización cruzada en el uso de lenguajes de programación tiene enormes efectos. Quizás el más obvio es el uso creciente de modos de expresión declarativos en los sistemas implementados en lenguajes imperativos. Cualquier persona versada en programación funcional puede aplicar fácilmente un enfoque declarativo cuando está usando un lenguaje como lo es C. El uso de enfoques declarativos generalmente conduce a programas más cortos y más comprensibles. C++, por ejemplo, sin duda, toma esto en cuenta con su apoyo incondicional de la programación genérica, que casi necesita un modo de expresión declarativo.

La consecuencia de todo esto es que le incumbe a cada programador ser diestro en la programación en, al menos, dos diferentes paradigmas, e idealmente en los cinco arriba mencionados. Los programadores deben estar siempre interesados en aprender nuevos lenguajes, preferiblemente de un paradigma en el que no están familiarizados. Incluso si en el trabajo diario siempre usa el mismo lenguaje de programación, la mayor sofisticación en el uso de ese lenguaje cuando una persona puede hacer fertilización cruzada desde otro paradigma no debe ser subestimada. Los empleadores deberían tomar esto en cuenta y permitir en su presupuesto de capacitación aprender lenguajes que actualmente no están siendo usados, como un modo de incrementar la sofisticación de los lenguajes que se utilizan.

A pesar de que es un inicio, un curso de capacitación de una semana no es suficiente para aprender un nuevo lenguaje, generalmente toma unos cuantos meses de uso, aunque a tiempo parcial, para ganar un conocimiento adecuando de un lenguaje. Son sus modismos de uso, no sólo la sintaxis y el modelo computacional, los factores importantes.

Traducción: Espartaco Palma

Leer contribución original