
Lenguajes, errores y la invención de la Red
Dos temas en uno: la programación y el origen de Internet
1 minuto de lectura'

Estuve escribiendo bastante código en las últimas semanas, básicamente porque necesitaba refrescar algunos conocimientos y porque es muy instructivo ponerse del lado de los programadores de vez en cuando.
Todo el software que existe está escrito por personas, a las que se conoce como programadores o desarrolladores. Ellos redactan las instrucciones para que una aplicación haga su trabajo, desde calcular una raíz cuadrada hasta controlar una fábrica. El Word es un programa, lo mismo que el Tetris , un virus o el mismo Windows .
Las instrucciones que componen el software se escriben en lo que se denomina lenguaje de alto nivel. Alto nivel no significa que sea mejor, sino que está más cerca de los idiomas humanos. Se usan palabras y estructuras que una persona puede aprender en unas pocas semanas, y luego leer y editar fácilmente. Las computadoras, por su parte, apelan a un inextricable dialecto de ceros y unos en el que sólo con una paciencia a toda prueba es posible escribir programas.
Lo que escribe el desarrollador, llamado código fuente , debe convertirse en ese dialecto electrónico de la máquina, una transformación que tiene diferentes instancias, según se trata de un lenguaje u otro. Genéricamente, se llama a esto compilar el código fuente, aunque en rigor pueden existir otros pasos y no todos los programas necesariamente se compilan.
Equivocarse puede ser útil
Como usuarios, tendemos a ver los programas como cajas negras, y en buena medida lo son, cuando ya están traducidos al lenguaje de la máquina, y por lo tanto sus fallas son odiosamente inexplicables e inoportunas, tanto como sus virtudes pasan por fenómenos de magia. Nada de eso. El escribir un poco de código es educativo porque pone al software en su dimensión humana.
Se aprende, así, que por prolijo y metódico que uno intente ser, siempre se filtran errores, llamados bugs en la jerga. A propósito, se los llama bugs (bichos, en inglés) desde que Grace Murray Hopper, la creadora del lenguaje Cobol , descubrió que un insecto atrapado dentro de una de las primeras computadoras del mundo, la Mark I, hacía que ésta funcionase mal. Hopper escribió en su cuaderno "Bicho en el Relé número 70 del Panel F", de donde viene la palabra bug (bicho). Otras fuentes dicen que la Sorprendente Grace , como se la llamaba, halló una polilla haciendo corto entre dos cables de una impresora, provocando fallas en el aparato. En todo caso, el Oxford Dictionary consigna que ya Edison había usado el término bug en un sentido semejante.
Hay tres clases de errores en programación: los de tipeo (escribimos mal un valor, una instrucción, un parámetro), los de razonamiento (creamos un procedimiento basándonos en supuestos incorrectos) y los provocados por el usuario (que, por ejemplo, puede ingresar una letra en un cuadro donde sólo se aceptan números). Los de tipeo y los de razonamiento deben corregirse siempre, para lo cual los lenguajes traen hoy potentes herramientas de depuración. Los introducidos por el usuario deben procesarse para que no bloqueen el equipo o cierren el programa sin aviso.
Como fuere, programar es una lección sobre los errores humanos y sobre las inmensas limitaciones que sufren estas máquinas que muchas veces nos meten miedo y a las que solemos considerar inteligentes. El empleo del término lenguaje para referirnos al C++ , el Java o el Visual Basic es, de hecho, una falacia. Lenguaje es el humano, con su inconcebible sutileza, variedad, flexibilidad y capacidad de depurar errores en tiempo real sin mayores consecuencias; con su fuerza poética y su deliciosa habilidad para producir múltiples sentidos. Y con su extraordinario mecanismo de doble articulación, que nos permite infinitos significados con sólo un puñado de sonidos. Por el contrario, al programar una computadora se tiene la clara sensación de estar comunicándose por señas con un extraterrestre.
Claro que el comunicarse no parece ser la función de las máquinas. Quizá, pero es una de las actividades humanas más esenciales. Así que las que han de cambiar son las computadoras.
Llamen al inventor
Cambiando de tema, estamos orgullosos de la nota de tapa que le ofrecemos en esta edición: nada menos que un reportaje al inventor de Internet, Leonard Kleinrock.
Pero, ¿puede Internet tener un inventor? Como explica Kleinrock en la nota, el desarrollo de la Red tuvo características únicas, fue algo lento y oculto durante 22 años, y cuando finalmente supimos de ella, ya era algo masivo y difuso que, por otro lado, se basaba en inventos tangibles: la computadora, la línea telefónica.
Sin embargo, Kleinrock es considerado el inventor de la Red no sólo porque publicó en 1961 el primer documento sobre la forma en que Internet funcionaría, sino porque de su oficina salió el primer mensaje de la red global. Hay un emocionante paralelismo entre Kleinrock comunicándose con la máquina de Douglas Engelbart, en Stanford, y Graham Bell llamando por teléfono a su asistente.
Como suele ocurrir con los inventos, hubo otras mentes brillantes orillando los mismos conceptos en la misma época: Donald Davies, del National Physical Laboratory inglés, y Paul Baran, de la corporación norteamericana RAND. Y como es también muy frecuente, ninguno sabía lo que el otro estaba haciendo. Al final, Kleinrock estuvo ahí, como Bell, como los hermanos Wright. Inventar no es sólo tener una idea, es también hacerla funcionar, y esto requiere mucho esfuerzo adicional y algo de suerte. O de destino.
Bob Kahn y Vinton Cerf, por haber creado más tarde los protocolos TCP/IP, son considerados también fundadores de Internet.
Pero si Internet tuvo un padre espiritual, ése fue el genial Joseph Carl Robnett Licklider, que antes que nadie describió la sociedad vinculada por redes galácticas (así las llamaba) a las que todos tendrían acceso. Licklider, que había estudiado física pero también psicología, falleció en 1990.






