El lenguaje humano y el de las computadoras

"Los límites de mi lenguaje son los límites de mi mundo." - Ludwig Wittgenstein (1889-1951), filósofo austríaco.

⏱️ 9 min. de lectura

El lenguaje humano

Hace unos días, charlando con mi amigo Nico por un sistema de mensajería, él me compartió el siguiente meme:

Como todo chiste, este meme (diría Freud) tiene algo de verdad. Y esta verdad es que el lenguaje humano es ambiguo. Las frases que usamos en forma cotidiana, la mayoría de las veces, tienen más de una posible interpretación. Y esta interpretación tiene mucho que ver con la subjetividad y el contexto de quien la escucha.

De ahí surgen la mayoría de las equivocaciones: de una mala interpretación de las frases que usamos. Sorprendería saber la cantidad de errores (muchas veces costosos en términos de tiempo y dinero) que se producen por culpa de esa ambigüedad de nuestro lenguaje humano.

Pero esa ambigüedad, esa libre interpretación, está en nosotros. En nuestra misma esencia. ¿Cuántas de nuestras discusiones políticas, filosóficas, e incluso discusiones en las relaciones de pareja, se deben a esa ambigüedad del lenguaje? No tengo datos empíricos, fácticos, para decirles este es el porcentaje de errores o malentendidos en cada conversación que se produce debido a la ambigüedad de nuestro lenguaje. De todas maneras, intuyo que ese porcentaje es muy alto.

Algunos ejemplos que se me vienen a la cabeza: "Encontrémonos en el mismo lugar de siempre" (si las personas se encontraron antes en varios lugares diferentes, es muy probable que "el mismo lugar de siempre" lo interpreten en forma diferente). Me ha pasado de decirle a alguien "Veámonos en el bar Sablé de París de la calle Jujuy". Y ambos fuimos a distintos bares que se llamaban, sí, Sablé de París, pero tuvimos la mala suerte que había dos bares con el mismo nombre, y ambos estaban sobre la calle Jujuy. Ninguno de los dos notó este posible error, y ambos lo interpretamos a nuestra manera (resolvimos la ambigüedad en forma subjetiva). Ambos terminamos en bares diferentes, y la cita falló.

También me ha pasado en situaciones de trabajo. Tuve un jefe, hace muchos años, al que le gustaba hablar en forma críptica, con sobreentendidos. El esfuerzo adicional que le hubiese llevado dar instrucciones más claras era mínimo. Hubiese tenido que hablar 10 segundos más, a lo sumo, para decir una frase mucho más unívoca y clara. Menos propensa al error de interpretación. Pero no. Esta persona seguía hablando siempre con sobreentendidos. Después se producían errores, que muchas veces nos costaban a ambos varias horas de trabajo.

En política, sobre todo en la política entendida como una ideología que se debe discutir (y no como la implementación de un plan concreto y medible para resolver determinado problema público) también son habituales las discusiones interminables, agotadoras y que no llevan a nada productivo. Las personas que se trenzan en este tipo de discusiones interminables son muchas veces amigos, compañeros de trabajo o familiares. A menudo luego de las discusiones político-ideológicas, terminan enojados entre sí, quieriendo forzar la visión de la otra persona para que encaje (a la fuerza) con la visión propia. Sin embargo, la gran mayoría de esas discusiones en apariencia irreconciliables se deben no definir bien, en forma previa a la discusión, los términos que se están empleando. Muchas veces quien habla de justicia, igualdad o derechos entiende estos términos en forma sutilmente diferente a su interlocutor. Y estas sutiles diferencias hacen que las conclusiones sean otras. Pero estas diferencias no se explicitan. Están implícitas. La discusión se va por el lado pasional y demagógico (como casi siempre sucede en estos temas) y termina desbarrancando en insultos y enojos. Más tiempo perdido.

El lenguaje de las computadoras

Por el contrario, el lenguaje de las computadoras es unívoco, tiene una sola interpretación posible. Me estoy refiriendo aquí a los lenguajes de programación.

Estos lenguajes de programación, o computer code como se les suele decir en inglés, evolucionaron desde la lógica matemática. En particular, desde un tipo especial de lógica, el Algebra de Boole. También a veces se la llama lógica binaria. Desde un punto de vista erudito, son cosas levemente diferentes, pero para simplificar aquí las consideraremos como la misma cosa.

Mi amigo Joel es un devoto (casi diría, un devoto sacerdote) de la lógica de primer orden, otro sistema simbólico y lógico que busca eliminar las equivocaciones que se producen en el razonamiento humano debido a las trampas semánticas que nos tiende nuestro lenguaje del hombre común. En particular, cuando lo aplicamos a problemas abstractos, como los de la filosofía. Esta lógica de primer orden es utilizada predominantemente en los países anglosajones, entre los cultores de la escuela analítica de filosofía, que tiene tintes positivistas.

Pero bueno, volviendo al lenguaje de las computadoras, la idea general es que en este tipo de lenguaje las frases tienen una sola interpretación posible. Las computadoras no toleran la ambigüedad, porque no saben cómo manejarla y resolverla. Podríamos decir que las máquinas no entienden la subjetividad, y mucho menos el contexto de lo que se está hablando. Por eso, aún no logran engañarnos haciéndose pasar por un ser humano. Porque no pueden resolver ese contexto y esa subjetividad que es tan común en nuestras conversaciones. Nosotros resolvemos todos los días ese contexto de las frases, esa subjetividad de quien nos habla, sin darnos cuenta. Lo hacemos naturalmente.

A veces (la mayoría de las veces) resolvemos bien ese contexto y esa subjetividad implícita en lo que nos están diciendo, o estamos leyendo. Y otras veces (la minoría) lo resolvemos mal, y ahí es cuando se producen los errores y malentendidos a los que aludí más arriba. Estos errores de interpretación nos cuestan tiempo, dinero y enojos. E incluso pueden hacer fallar proyectos complejos (que involucran muchas horas de trabajo de muchas personas, trabajando en equipo), cuando la formulación inicial de ese proyecto está realizada de una forma ambigua, que permite más de una posible interpretación.

A modo de ejemplo, voy a traducir a pseudocódigo la frase del meme con el que iniciamos este artículo. El pseudocódigo es un lenguaje a medio camino entre el lenguaje humano que usamos nosotros, y el lenguaje de las computadoras. Lo usan algunos programadores para aclarar sus ideas antes de ponerse a programar, y también se usa en los libros de texto de introducción a la programación.

(traer un litro de leche); if (hay papas) then (traer cuatro papas);

Eso de arriba sería lo que la mujer quiso decir, escrito en pseudocódigo, que elimina la ambigüedad del lenguaje. Y esto de abajo sería lo que el hombre entendió, escrito también en pseudocódigo:

if (hay papas) then (traer cuatro litros de leche) else (traer un litro de leche);

If quiere decir si se cumple la condición. Then quiere decir entonces. Si se cumple la condición (hay papas) entonces (traer cuatro papas). Las distintas instrucciones se separan con punto y coma. Algunas instrucciones no tienen condición. Se van a ejecutar siempre, por eso no tienen if adelante: traer un litro de leche es incondicional, en la primer versión del pseudocódigo.

Alguna vez el lector habrá escuchado la palabra algoritmo, cuando se habla de aplicaciones tecnológicas. Un algoritmo es la secuencia de pasos lógicos necesarios (el método) para resolver un problema. Y el pseudocódigo es un lenguaje de descripción de algoritmos. Cuando hablan del algoritmo de Netflix, el algoritmo de Google o el algoritmo de Facebook, todos esos algoritmos se podrían describir con un pseudocódigo como el que vimos aquí. De muchas más líneas e instrucciones, eso sí.

Cualquier algoritmo descripto en pseudocódigo después se puede traducir a uno de los lenguajes de programación tradicionales (como Perl, Python o Javascript) de forma bastante lineal. Una vez que el algoritmo está en un lenguaje de programación verdadero, la máquina puede seguir esas instrucciones al pie de la letra, sin desviarse en ningún momento de las intenciones del diseñador original. No hay libre albedrío en las máquinas.

Comparaciones

Podemos notar varias diferencias entre el lenguaje de las computadoras y el de los seres humanos. El lenguaje de las computadoras elimina la ambigüedad, y está basado fuertemente en la lógica matemática. El lenguaje de los seres humanos tiene el problema de la ambigüedad, pero la ventaja de su flexibilidad y poder de expresión. Además, el lenguaje de los seres humanos permite expresar las emociones, cosa que el lenguaje de las computadoras no. Hay muchas otras cosas que el lenguaje de las computadoras tampoco permite hacer: escribir poesías, letras de música, o escribir un texto en prosa como el que estás leyendo en este momento.

Es que son lenguajes para propósitos diferentes: el de las computadoras busca la exactitud, la eliminación de la ambigüedad y el transmitir instrucciones paso a paso. El de los seres humanos busca comunicar emociones, pensamientos, describir lo que la otra persona ha observado o escuchado, y muchas otras cosas más.

No se puede traducir un poema de Neruda a pseudocódigo, ni tampoco una letra de tango.

Neruda

Pero sí se podrían traducir a pseudocódigo todas las las teorías científicas, la mayoría de los conceptos filosóficos y todas las leyes.Los manuales de procedimientos de fábricas y empresas, también.

El lenguaje de los seres humanos se aplica entre pares: hablamos con otros seres humanos que tienen las mismas capacidades, sentimientos y expectativas que nosotros. El lenguaje de las computadoras, en cambio, se aplica en una relación amo-esclavo: el amo (programador o diseñador del software) le dice al esclavo (la máquina) qué secuencia de instrucciones tendrá que seguir, y cómo, sin el menor atisbo de duda. La computadora es como un robot esclavo sin sentimientos, que ejecuta ese algoritmo al pie de la letra. De forma mucho más veloz y eficaz que lo haría un ser humano, eso sí. Y sin errores de cálculo. Por eso a veces parece magia lo que las computadoras hacen. Pero siempre hay un ser humano detrás, que diseñó esas instrucciones originales. Siempre.

Podría decirse que si las computadoras alguna vez tuviesen una religión, los seres humanos seríamos sus creadores omniscientes, sus dioses originales y misteriosos. Llenos de impulsos ilógicos (las emociones) que ellas no entenderían. Pero que respetarían como un capricho de los dioses.

IA-Humanos

Hay algunos dominios de nuestro saber humano, sin embargo y como dije antes, que quizás se beneficiarían de la traducción a un pseudocódigo. Especificando bien los términos utilizados antes, como si fuesen axiomas. Estas áreas del saber son: cualquier tipo de instrucciones detalladas sobre cómo resolver un problema, las teorías científicas, las leyes, y algunos conceptos filosóficos. Probablemente también, hasta se podrían especificar en pseudocódigo muchas propuestas políticas y planes de políticas públicas (salud, educación, asistencia social, etc.). Se eliminaría así una increíble cantidad de charlatanería, equívocos y errores de interpretación. Y se podría verificar con máquinas que tales propuestas tuviesen sentido. Antes de ejecutarlas y perder mucho tiempo, dinero y horas de trabajo en cosas que a veces no funcionan.

Se podría, finalmente, dejar el uso del lenguaje humano reservado para lo que mejor hace: las poesías, la música, la literatura de ficción, los ensayos, las charlas entre amigos y las reuniones familiares. Todo lo que necesite demostrar sutileza, afecto y sentimientos.

Vuelvo a decirlo: no se puede traducir un poema de Neruda a pseudocódigo.


(C) 21 de Junio de 2020, Alejandro Moliné.

Sus comentarios o feedback son bienvenidos:

contacto@alemoline.com

Volver a la lista de artículos