viernes, junio 26, 2015

¿Más lenguajes de programación?

Así como se contempla un atractivo y alejado paraje al mismo tiempo que crece un vehemente anhelo de muchas y variadas vivencias en dicho paraje, así quisiera yo entender lo que Ludwig Wittgenstein quiso decir en la proposición 5.6 de su obra «Tractatus logico-philosophicus: Die Grenzen meiner Sprache bedeuten die Grenzen meiner Welt (los límites de mi lenguaje significan los límites de mi mundo).»

Quizá la enorme diversidad de formas de expresión humana sea un indicio de lo mucho que los humanos pretendemos expresar. Si es verdad que algunas formas de pensamiento filosófico sólo pueden ser expresadas a cabalidad en determinado lenguaje, entonces quizá eso sugiera algunas diferencias entre un espacio conceptual y un espacio lingüístico. Por ejemplo, la diferencia de amplitud; es decir, hay un número mucho mayor de conceptos en comparación con el número de palabras a la fecha para expresar todos esos conceptos. Otro ejemplo, la diferencia diacrónica; es decir, la precedencia en el tiempo del concepto –que ocurre por primera vez en alguna mente humana– con respecto a la expresión lingüística para dicho concepto –que surge como necesidad de expresar el concepto.

Me pregunto si algo así aplica para el caso de los lenguajes artificiales que aspiran a ser medio para expresar intenciones computacionales.

Quizá un lenguaje artificial usado para adiestrar a una computadora (o el adiestrado resulta ser uno mismo), en general, sería un medio para expresar una forma particular de computación digital en un determinado nivel de abstracción; digamos, no es lo mismo pensar CLR via C# que pensar Windows via C++ (como lo explica Jeffrey Richter), o no es lo mismo la actitud racional hacia el diseño de programas que alude Alexander Stepanov en su «From Mathematics to Generic Programming» que el énfasis visual de Scratch, ofrecido por MIT.

Entonces, por ejemplo, en el caso de Rust o de Go, o de muchos otros lenguajes de programación de computadoras, no veo otra más que conocer e intentar masticar las formas de expresión propias de un lenguaje artificial (o natural) para luego evaluar con cuál puedo expresar diferentes formas de computación. ¡Al parecer la diversión no termina, sino apenas empieza!

Por lo que sí tiene sentido preguntarse: What is code?