miércoles, agosto 30, 2006

Nueva línea

Una de las cosas más curiosas cuando te metes un poco en el mundo de la informática, vamos, en programación, es el carácter de nueva línea. Bueno, el/los carácter/es de nueva línea. Porque en Windows los archivos cambian de línea con dos carácteres (CR LF), además de en los protocolos de Internet, como TCP/IP.

En cambio en Unix el fin de línea viene dado simplemente por LF. Si pasas un archivo de texto de Windows a GNU/Linux lo normal es que veas un ^M al final de cada línea. Ese es el CR que no sirve de nada en Unix. En cambio si abres con el Notepad de Windows un fichero de Unix verás que todas las líneas vienen seguidas, con un carácter raro (una especie de barra) en medio. Se puede hacer una conversión del fichero con los programas unix2dos y dos2unix, aunque la mayoría de los programas lo reconocen y no debieran dar muchos problemas.

Lo curioso es la historia. Lo de CR LF significa Carriage Return y Line Feed. Y se refiere a las máquinas de escribir antiguas, que primero había que "retornar el carro" al orígen, y luego "avanzar a la línea siguiente". Cuando entraron a funcionar sistemas automáticos de impresión, se necesitaba el tiempo de dos carácteres para cambiar de línea, ya que el cabezal tiene que avanzar hasta el principio, así que se mantuvo el CR LF.

Y aquí empieza la parte graciosa de la historia. En Unix se decidió que era una chorrada mantener eso, así que se paso a usar LF. Por otro lado un sistema operativo CP/M tenía problemas con AT&T, ya que decían estos últimos que era una copia de Unix. Para evitar problemas, los desarrolladores de CP/M decidieron introducir intencionadamente una incompatibilidad con Unix, y adoptaron CR LF como cambio de línea. Luego llegó un tío, se compró un manual de CP/M y en un par de meses programó desde cero una copia, a la que llamó QDOS (Quick and Dirty Operating System). Por otro lado otra empresa llamada Microsoft lograba un contrato para hacer un sistema operativo para los nuevos PC de IBM. Como no tenían tiempo para hacerlo decidieron comprar QDOS. Y Windows sigue usando en la actualidad el CR LF para el salto de línea.

Impresionante, ¿verdad?

Bueno, está un poco novelado, también había otro factor para adoptar CRLF, y es que ANSI lo había adoptado como estándar, aunque la ISO permitía tanto LF como CR LF.

Y como anécdota diré que Mac hasta el OSX usaba... ¡¡CR!! Actualmente el MacOS usa LF como fin de línea, como buen pseudo-Unix que es.

Más info:
Wikipedia: Nueva Línea



Tags Technorati: ,

2 comentarios:

e-ness dijo...

Jeje, pues sí que es interesante... nunca había entendido el porqué del ^M de unix, ni el porqué del cuadradillo asqueroso ese del notepad...

Lo gracioso es que al final todo se mueve por piques entre empresas, es genial. Y eso que parecían gente seria.

Me ha matado lo de que DOS era Quick and Dirty... con lo orgullosos que están en MS :)

Alex dijo...

Sí, era quick and dirty, aunque luego quitaron la Q y cambiaron la D de dirty a disk. Pero la verdad es que MS-DOS seguía siendo quick and dirty: no soportaba bien el hadrware más avanzado y tenían que hacer chapuza tras chapuza para que lo hiciera, era monousuario y monotarea...