Programa

Sun 31 May 1992

La concepción clásica de un programa de ordenador, es la de una secuencia de instrucciones o pasos, que permiten indicar al aparato como llevar a cabo determinada tarea o cálculo. Lo anterior no difiere mucho de la definición general de la palabra “programa” en el diccionario.


Los primeros computadores eran programados pasando interruptores o algo parecido, lo cuál consumía muchisimo tiempo y hacía que se cometieran numerosos errores. Las personas capaces de programar esos aparatos eran merecidamente tratados casi como genios, una especie rara y escasa. Los primeros lenguajes de programación y las lectoras de tarjetas perforadas (que curiosamente habían ya sido empleadas desde hacía más de un siglo para programar telares), fueron adoptadas para permitir que los programas pudieran expresarse en una forma más sencilla para el programador, disminuyendo el tiempo empleado y los errores cometidos en cada programa. Los primeros lenguajes de programación concibían los programas como secuencias de instrucciones, y muchos de los lenguajes posteriores y actuales siguen el esquema “secuencial” de programación, ya que este hasta ahora se ha prestado para casi todas las aplicaciones del ordenador. Aún así, paralelamente, se han venido diseñando lenguajes para ordenadores que permiten adoptar hacia los programas puntos de vista muy diferentes al secuencial: lenguajes lógicos, funcionales, relacionales, orientados a objetos, etc. etc. etc. Los modernos lenguajes para ordenador abundan . Algunas de sus características son comunes entre varios de ellos, pero muchas otras son muy particulares de cada grupo o de cada uno. Lo notable es que dichas características no reflejan diferencias entre los ordenadores que son programados en dichos lenguajes, sino más bien diferencias en la concepción de como escribir un programa, ya que los computadores actuales son, a efectos prácticos, casi todos iguales, fundamentalmente tontos y muy parecidos en su concepción a los que había hace cuarenta años. Entonces, ¿por qué diseñar nuevos lenguajes si los existentes sirven al proposito deseado? ¿qué se busca al concebir la programación desde diversos puntos de vista?


George Orwell, en su libro de ficción titulado “1984”, describle como “El Partido” dedica considerables esfuerzos en la definición del idioma oficial del imperio, la “neolengua”. Mes a mes se inventan nuevas palabras que describen de manera más adecuada los conceptos y la ideología de “El Partido”. Pero más importante aún, cientos y cientos de palabras, verbos, sustantivos y adjetivos, son eliminados del idioma oficial, con un objetivo bien definido: evitar que conceptos o ideas contrarios a los de “El Partido” puedan expresarse en el idioma, y de esa manera afectar para siempre la mente de las personas, bajo la consigna de que no se puede pensar ni transmitir un concepto que no se puede expresar en palabras. La proposición del libro de Orwell es un tema clásico en filosofía: “el lenguaje es límite del pensamiento”. Es decir, por ejemplo, que amor y libertad son conceptos transmitidos de generación en generación y no emociones arraigadas en la mente y el alma humanas. ¡Falso entre todas las falsedades! Las ideas y conceptos pertenecen al hombre, y es el hombre mismo quien encuentra la manera de expresarlos, con el lenguaje hablado, el de la pintura, el de la música o el que haga falta. Quién dude, que reflexione acerca de la paradoja de la palabra “lenguaje”.


Los científicos de la informática han creído en que el lenguaje es solo el medio de expresión para la mente, y en eso radica su afán por estudiar e inventar nuevos lenguajes más ricos y expresivos. ¿Por qué no usar un lenguaje humano, como el castellano, para programar ordenadores? No conocemos un lenguaje más expresivo que el que hablamos, pero este todavía es inadecuado desde el punto de vista de la informática. El lenguaje hablado es sumamente complejo en su estructura y está plagado de ambigüedades. Una frase tiene significado diferente deacuerdo a las frases que le preceden y le siguen, o sea el contexto, y esto es todavía muy dificil de tratar en un ordenador. Entendemos el lenguaje que hablamos porque somos muy inteligentes, aunque aún asi no seamos completamente inmunes a las dificultades del idioma: “No me estas entendiendo…dejame expresarme de otra manera”. Los lenguajes de programación incorporan, fundamentalmente, expresiones del lenguaje usado en las matemáticas, poseen frases que son normalmente independientes del contexto y dejan poco margen a la ambigüedad, lo cuál los hace mucho más utiles y aplicables a las necesidades de la informática. Dando por sentado que los “programadores” son personas inteligentes y preparadas, es razonable que se dedique un considerable esfuerzo a proporcionarles herramientas, entre ellas lenguajes, que permitan que sus ideas se hagan eficazmente palpables en un ordenador.


Para terminar, es notable el hecho de que a pesar de las diferencias entre los lenguajes hablados y los de programación, ambos grupos sean estudiados dentro del mismo marco teórico. Los estudios, investigaciones y resultados en la teoría de los lenguajes son generales, y aplicables por igual a los lenguajes hablados y a los de programación. El estudio de otros lenguajes, como el de las ballenas, podría encajar dentro de la misma teoría o una ampliada. Así, cada descubrimiento en el área de los lenguajes puede traducirse en el diseño de un mejor lenguaje de programación y, aunque suene poco ortodoxo, lo mismo puede ocurrir con los otros grupos de lenguajes, incluso el humano. Una vez entendido el lenguaje de las ballenas, podríamos mejorarlo y enseñar la nueva versión a dichos mamíferos, haciendo de la comunicación entre ellos y con nosotros más sencilla, pero es poco probable que los descubrimientos en la teoría de los lenguajes provoquen cambios fundamentales en las lenguas nacionales, ya que estas sufren de una evolución y una inercia que ni siquiera las academias nacionales de la lengua pueden controlar. Pero lo anterior no impide que se diseñen nuevos lenguajes de habla humana para áreas de intercambio internacional como el de la diplomacia. El medico polaco Zamenhof dedicó gran parte de su vida a la tarea de diseñear un lenguaje compacto, coherente, regular, sin excepciones y muy fácil de aprender, con la idea de que con un idioma común las naciones se acercarían y terminarían las guerras. Zmanhof publicó en 1887 el Esperanto, un idioma completo con solo 16 reglas gramaticales, pero que nunca tuvo la aceptación que él esperaba. Tal vez sea este el momemto de hacer otro intento, y el “nuevo orden mundial se preste para ello”.


Por último, queda en mi cabeza, al respecto de los ordenadores y el lenguaje, un tema para los escritores de ciencia ficción. La era de los ordenadores “inteligentes” se acerca. Estos, seguramente, entenderán bastante bién los lenguajes que hablamos y serán bastante capaces de resolver las dificultades e inconsistencias de los mismos. Este hecho tiene una implicación notable: las máquinas del futuro serán programadas, y en genral instruidas, a través del habla. Vamos a hablar con las máquinas, y parte de su respuesta será también pronunciada en nuestro idioma: “máquina, dibuja un círculo!”, “¿que és un círculo?”. La manera en que lograremos que las nuevas máquinas hagan lo que deseamos será tal vez a través de un proceso que imagino muy parecido al de enseñanza entre maestro y alumno. Y entonces ¿qué relaciones de poder y dependencia aparecerán entre nosotros y esos entes artificiales? ¿cómo reaccionaremos ante un aparato que sea capaz de pronunciar nuestro nombre cuando requiera nuestra atención? ¿serán estas máquinas como nuestros esclavos, nuestras máscotas o nuestros alumnos? ¿les pondremos nombres? ¿serán buenas compañeras de conversación, o contribuirán a acrecentar la sensación de soledad característica del hombre moderno?…”ATENCION POR MOTIVO de viaje me venden, ordenador INTELIGENT 1, sexto grado primaria aprobado, responsable, simpatico, exelente para labores de seguridad, Robotino, tlf. 575-7575, 1200 bps, 1 stop-bit, sin paridad, las 24 hrs”.