jueves, 3 de junio de 2004

De nuevo jueves...

De nuevo jueves. Yo quería poneros una historia sobre ascii, y la estaba publicando cuando me he dado cuenta de que mi (!@|##|@%$/$·$!!!) router ha colgado la conexión de internet, porque la cuelga cada vez que se le pide una página que no existe. No me ha dado tiempo a cortar y pegar la ventana del explorador antes de que saliera la ventanita de "conexión perdida" y, cuando he tratado de reenviar el formulario Blogger me ha obligado a autentificarme, perdiendo por el camino los datos que yo le enviaba. En resumen: Una P*T*D*.

En fin, que os quería hablar de Bob Bremer, padre del ASCII (según la revista interna de Honeywell en 1979) y de las "secuencias de escape". Pero también de un poco de historia del ASCII.
¿Qué es el ASCII? Es sistema que asigna un número a cada carácter, es decir, a cada símbolo que podéis escribir en la pantalla. Bueno, no a todos. Sólo a los 127 primeros. Los demás están definidos por normas posteriores (como iso-8859 que define "juegos" de 256 caracteres, o UNICODE, que define un juego único de millones de caracteres). Pero todos los sistemas posteriores están basados, en mayor o menor medida, en ASCII.

Volviendo a Bob Bremer, él mismo acepta que, en realidad, no fue el creador de ASCII. Estuvo trabajando, sí, en una de las primeras computadoras de 8 bits, y formó parte del equipo que diseñó sus primeros caracteres. Obviamente, dotaron a ese ordenador de minúsculas (ESE ERA EL OBJETIVO PRINCIPAL DEL USO DE 8 BITS. PORQUE ANTES TODOS LOS ORDENADORES HABLABAN EN CAJA ALTA COMO HAGO YO AHORA; perdonad que no diga mayúsculas: no quería colocar ningún acento). Pero ésto no era original. Lo original fue la incorporación del símbolo "\" (de tan grato recuerdo a los usuarios de MS-DOS, y tan útil para los programadores de lenguaje C) y los símbolos "{[]}" (llaves y paréntesis cuadrados). Parece ser que Bob sugirió al equipo que añadieran estos caracteres al juego del nuevo ordenador, y luego sufrieron una serie de estandarizaciones. Hay disputas sobre si otros ordenadores anteriores ténían o no las llaves o los corchetes, pero lo claro es que, desde un teletipo de los años 40, ningún aparato había tenido la barra invertida en su teclado.

Parece ser que Bob pensó en la división invertida como símbolo gráfico para construir los signos "/\" y "\/", que en lógica representan las relaciones "Y" y "O", respectivamente. La idea era que las operaciones "/\" y "\/" se añadieran al lenguaje ALGOL como sustitutos de "AND" y de "OR", algo que, creo, no llego a suceder nunca. Posteriormente se apoyó el uso de ese carácter como signo de "división continua". Pero no me preguntéis en qué consiste dicha operación, porque no tengo ni idea.

Otro carácter cuya historia está ligada a la lógica es el carácter "|", creado para representar la barra vertical que en algunos manuales de programación simbolizaba el "O" lógico. ¿Os habéis preguntado alguna vez por qué tiene (al menos en el teclado) un agujero en medio? Pues bien: cuando un grupo de usuarios del lenguaje PL/I supo que la barra se había incluido en la sección destinada a las "versiones internacionales" (es decir, que cambiaría de forma de país en país, algo que le sucedió a los caracteres "#$@[\]^`{|}~", de forma que, en el estándar español, este código basic:
INPUT#1 A$: PRINT @1,1; A$
se convertía en
INPUT£1 A$: PRINT §1,1; A$ y, peor aún, que esta instrucción pascal:
Data[X,Y]=1; {El dato en X,Y es 1}
se convertía en esto:
Data¡X,Y¿=1; ºEl dato en X,Y es 1ç
con los consiguientes dolores de cabeza para los programadores, que, en su mayoría, seguían escribiendo EN LETRAS CAPITALES Y SIN ACENTOS.
Por tanto, los usuarios de PL/I, ante la disyuntiva de representar una barra con un símbolo que en estados Unidos era una barra, pero en España era una ñ y en Portugal una ç con cedilla, o usar otro carácter (el signo de admiración, "!") no demasiado parecido, pero igual en todo el mundo, decidieron quedarse con lo segundo. Y por tanto, pidieron que, para evitar confusiones, se retirara la barra vertical. La decisión fue partirla por la mitad para evitar confusiones.
Teóricamente, en 1977 se volvió a incluir, esta vez como barra vertical sólida. Así la mostraba, diez años atrás, la página de códigos 850 de MS-DOS (la página 437 la mostraba partida), y así la muestran los tipos de la bitácora que estáis leyendo. Pero en mi teclado sigue teniendo agujero. ¿Y en el vuestro?

No hay comentarios: