Lenguajes de programación y lingüística aplicada

texas ordenador infantil

Una relación obvia

Siempre he visto clarísima la relación entre los lenguajes de programación y las lenguas naturales, o, más particularmente, las lenguas humanas creadas artificialmente. No me refiero a las áreas propias de la lingüística computacional, que son todas las que las nuevas tecnologías han abierto a la lingüística aplicada (traducción automática, Interfaces de Lenguaje Natural, simuladores de conversación, correctores ortográficos y de estilo, procesamiento de información, documentación, manejo de datos, aprendizaje de lenguas, etc.). Todas interesantísimas. Pero yo me refiero al análisis de los lenguajes de programación desde la perspectiva lingüística, como herramienta de comunicación y vehículo cultural.

Simulador de conversación
Simulador de conversación

Un filólogo o un lingüista no tiene por qué saber o interesarse por la arquitectura de redes (¡aunque le convendría!), pero sí debería sentir curiosidad o al menos estar predispuesto a entender cómo se comunican los nodos entre sí, qué sintaxis, semántica, «gramática» y «vocabulario» usan las máquinas para poder expresarse entre ellas y con sus programadores.

¿Por qué existe un ámbito dentro de los estudios sobre comunicación dedicado al lenguaje animal, y no uno dedicado al lenguaje computacional? ¿O es que sí existe pero yo no me he enterado?

Syntax Error

Larry Wall

El único lingüista que yo sepa que ha diseñado un lenguaje de programación ha sido Larry Wall, que escribió el Perl. En realidad primero era informático y después lingüista: mientras estudiaba programación en la Universidad de Seattle, se puso a estudiar lingüística junto a su mujer con el objetivo de encontrar una lengua sin escritura en África y confeccionarla ellos (y ya de paso evangelizar a sus hablantes, porque son muy religiosos y querían ser misioneros). ¿Se puede ser más idealista? La página personal de Larry Wall es un canto al idealismo ochentero.

Por problemas de salud tuvieron que abandonar su misión y seguir estudiando informática en Seattle, y cuando Mr. Wall necesitó herramientas que no encontró, decidió crear el lenguaje Perl aplicando los conocimientos lingüísticos de los que disponía.

Larry Wall
Larry Wall

En este vídeo Larry Wall explica que las lenguas naturales son mucho más ambiguas debido a la necesidad evolutiva que tenemos los seres humanos de interpretar los contextos, mientras que en los lenguajes de programación los contextos son mucho más pobres y las máquinas aún no interpretan subjetivamente el código (de momento). Sin embargo, encuentra los paralelismos entre ambos tipos de lenguas: se producen dialectos, hay combinaciones como pidgins, lenguas criollas, lenguas con el mismo nombre pero diferentes variedades, etc. Como conclusión argumenta que la gente debería aprender lenguajes de programación por las mismas razones por las que estudian otras lenguas naturales.

Profundizando un poco más

Los lenguajes de programación son lenguajes formales, que quiere decir que disponen de un sistema predeterminado de símbolos (alfabeto, vocabulario, fonemas, etc.) y de un conjunto de reglas para combinarlos (según los niveles, su fonética, sintaxis, gramática, etc.). La Semántica se ocupa del estudio de las interpretaciones, o correspondencias entre las unidades del sistema y lo que significan. En un lenguaje formal, una interpretación es una asignación de significado a cada símbolo, por lo que los lenguajes de programación comparten con otros lenguajes formales (como la lógica matemática, los autómatas de Turing) la «semántica formal«; pero además, tienen una «semántica operacional«, que describe el proceso que sigue una computadora cuando ejecuta un programa en ese lenguaje específico. Esto sería el equivalente en las lenguas naturales a la estructura profunda de Chomsky (el código máquina, que permitiría traducir el programa a distintos lenguajes consiguiendo un resultado idéntico o similar).

texas ordenador infantil

Como nos explica Mr. Wall en el vídeo, los procesos que hacen evolucionar y adaptarse a los lenguajes naturales, los préstamos de otras lenguas, los pidgins, los neologismos, etc., todos los fenómenos que pueden sufrir las lenguas tienen su reflejo en los lenguajes de programación. A un nivel más profundo, la teoría de los predicados transformadores de Dijkstra, que son los que definen un fragmento de un programa como la función que transforma una post-condición a la pre-condición necesaria para establecerla, resulta muy similar a las tesis chomskyanas del Programa Minimalista. Hay influencia mutua, ¿no?

 

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *