11 de agosto de 2011

\r\nHerencia de máquinas de escribir mecánicas

Hasta en los formatos de texto más simples* aunque no tengan colores y chiches, es necesario poder codificar no sólo letras, símbolos y números visibles, también necesita codificar una mínima cantidad de cosas invisibles que son parte del formato, metadatos, que por ejemplo corresponden al espaciado y saltos de línea, lo que permite dar claridad al texto. Por otro lado en las comunicaciones usuario-máquina, si son mediante comandos (también minimalistas) tienen metadatos por ejemplo para permitir borrar caracteres, mover el cursor, o para avisar al otro lado de la red cuando se presiona ENTER mediante algún contrato, es otro hecho indispensable.

*(formatos simples, en el sentido de minimizar los pasos necesarios en el procesamiento de los datos por software al momento de alistarlos para la lectura humana del texto como tal)

Obviamente hay complejos formatos y protocolos de alto nivel, comprimidos, no comprimidos, encriptados, human-readable o no, etc.. muchísimos para elegir, HTML, JSON y XML podrían ser ejemplos, y pueden listarse miles, pero aún debajo de algunos de ellos suelen seguir subsistiendo aquellos simples y viejos códigos de metadatos, cuyos nombres se remontan en el tiempo hasta las máquinas de escribir mecánicas y quien sabe cuanto tiempo más van a estar entre nosotros!

Este post está dedicado al dúo Retorno de Carro y Salto de Línea (CRLF) o ("\r\n")
  • Retorno de carro (CR, carriage return).
    Es '\r' en  lenguaje C, es 0x0D (13 en decimal) en ASCII
    Retorna al comienzo de la hoja (izquierda) el "carro mecánico" o el cursor
  • Saltar a siguiente linea (LF, line feed).
    Es '\n' en  lenguaje C, es 0x0A (10 en decimal) en ASCII
    "Alimentar" Linea, o sea alimentar la máquina de escribir con una línea más de papel
    o "bajar" a la linea siguiente en una pantalla.
El mismo símbolo de la tecla ENTER ya nos recuerda ese significado de dos acciones (bajar y volver al comienzo)


El uso depende de la plataforma, por ejemplo:

En Linux se utiliza simplificado sólo el LF, o sea '\n', sólo el 0x0A (el 10) de ASCII
 
En Windows normalmente se utiliza CRLF (consola y archivos) es decir la conjunción  "\r\n"

Aunque esta información está repetida en muchos lugares por internet (como ven incluso está repetida en este mismo texto), el objetivo era hacer una nota para mi mismo, y tener un lugar confiable de donde leerlo, aprovechando que los verifiqué personalmente, los anoto con redundancia para recordarlos.