Aprovechando la inercia creada por los últimos posts de Alcides, quiero dedicar una pequeña nota a la importancia de los lenguajes de programación.
Existe una hipótesis en lingüística y psicología denominada como el Principio de Relatividad Lingüística, también llamada la Hipótesis Saphir-Whorf. Esta hipótesis sostiene que la lengua que se habla tiene una influencia en la manera de pensar, conceptualizar y en la forma de experimentar el mundo.
Esta es una hipótesis muy debatida, ya que por un lado, hay proponentes de esta hipótesis que aseguran que el lenguaje condiciona completamente al pensamiento, mientras que por otro lado, se afirma que el pensamiento es anterior al lenguaje y no al revés. Ahora, dejemos que los científicos hagan su trabajo y últimamente concluyan si fue primero la gallina o el huevo. Lo que si es innegable es que la lengua que usamos para comunicarnos si tiene un impacto en la manera en que componemos e hilamos nuestros pensamientos.
No sé si a ti amable lector, que eres bilingüe o incluso políglota, te ha pasado que al pensar sobre cierto tema particular te sientes más cómodo al hacerlo en una lengua que en otra. A mi en lo particular, me ciento más cómodo pensando sobre programación en ingles que en español. No es malinchismo ni nada que se le parezca. Simplemente que cuando comenzaba a aprender sobre el tema, eran relativamente pocos los libros y revistas que había disponibles en español (ni hablar que algunas traducciones eran de plano pésimas, pero esa es otra historia), por lo cual me vi obligado a satisfacer mi curiosidad y mis necesidades académicas con publicaciones escritas en la lengua de Shakespeare.
Ahora bien, ¿alguna vez nos hemos puesto a pensar en el impacto que tiene el Lenguaje de Programación que usamos para nuestro trabajo diario en la efectividad con la que desempeñamos el mismo? En otras palabras, el lenguaje que estoy usando en mi proyecto actual ¿Ayuda o inhibe el proceso mental que me permite hallar respuestas a los problemas que enfrento el día de hoy?
Debemos recordar que si bien todos los lenguajes de programación son, de hecho Equivalentes Turing, eso no significa que todos sean igualmente adecuados para cada tarea.
Por ejemplo, hay muchos filósofos e intelectuales que han comentado que los mejores lenguajes para el pensamiento son el latín, el griego y el alemán (…) Es curioso notar que a pesar de ser la lengua más hablada del mundo, nadie ha afirmado jamás que el ingles sea una buena lengua para el pensamiento. Pensemos en ello un momento.
Recordemos que el desarrollo de software es una actividad eminentemente intelectual. Es quizás, junto con la poesía y otras formas de creación literaria, una de las actividades más puramente intelectuales en las que se puede embarcar el ser humano. Nuestro trabajo consiste 80% o un 90% en pensar, y después un 10% o un 20% en otras cosas como teclear, etc.
Entonces, ¿hay acaso lenguajes que son mejores para el pensamiento que otros?, ¿cuales? y por otro lado, el hecho de que la mayor parte de los proyectos, libros y artículos de revistas se escriban en Visual Basic, C# y Java ¿no es razón suficiente para concentrar mis esfuerzos en esos lenguajes?
De hecho, hay lenguajes que son mejores para el pensamiento que otros: smalltalk, lisp y posiblemente ruby, son algunos de ellos. Aunque en muchos aspectos estos lenguajes difieren enormemente entre sí (como el griego y el alemán también lo hacen), tienen una característica que a mi modo de ver es esencial: son lenguajes tersos. ¿A qué me refiero con eso? A que:
Permiten un contenido semántico rico con un mínimo de elementos sintácticos.
Esto no significa otra cosa que el hecho de que estos lenguajes permiten expresar una gran cantidad de conceptos utilizando muy pocas palabras reservadas, puntuación, operadores, etcétera.
Ahora bien, no estoy afirmando que todos debiéramos renunciar a nuestros trabajos actuales o ponernos en huelga para exigir que los proyectos se desarrollen exclusivamente en lisp. Sería fantástico que todos tuviéramos por lo menos una vez la experiencia de desarrollar un proyecto grande en estos lenguajes. Sin embargo, esto no siempre es posible. Desgraciadamente, aunque no es un buen lenguaje para el pensamiento, el ingles sigue siendo la lengua más hablada en el mundo, y una gran cantidad de ciencia, tecnología e incluso literatura se realizan todos los días utilizando esa lengua.
¿Entonces porqué aprender griego clásico o smalltalk? Porque nos dan más y mejores herramientas para pensar. En varias ocasiones me he tenido que romper la cabeza tratando de darle la vuelta a un problema que parece que no tiene solución en Visual Basic o en Javascript. Y en muchas de esas ocasiones lo que me ha salvado el día es pensar “¿Cómo lo resolverías si el lenguaje no fuera una limitante?”… Usualmente recuerdo una técnica o idea que aprendí en Python o en Lisp que me permiten destrabar mi proceso mental y llegar a una solución práctica.
Alguna vez leí que Google contrata mejores programadores que su competencia porque la mayoría de sus programadores programa en dos o tres lenguajes distintos que no son necesariamente los lenguajes más comerciales del momento.
Esto me lleva a un corolario de la hipótesis Saphir-Whorf con la que comencé esta nota:
El lenguaje de programación no es un condicionante para escribir código malo.
Me gustaría leer sus comentarios.
Saludos