Saltar al contenido

Artículos, tutoriales, trucos, curiosidades, reflexiones y links sobre programación web ASP.NET Core, MVC, Blazor, SignalR, Entity Framework, C#, Azure, Javascript... y lo que venga ;)

17 años online

el blog de José M. Aguilar

Inicio El autor Contactar

Artículos, tutoriales, trucos, curiosidades, reflexiones y links sobre programación web
ASP.NET Core, MVC, Blazor, SignalR, Entity Framework, C#, Azure, Javascript...

¡Microsoft MVP!
miércoles, 20 de junio de 2012
Barra invertidaDesde los tiempos de MS-DOS llevamos utilizando la barra invertida para separar los nombres de directorio cuando indicamos una ruta hacia un archivo o carpeta, pero, ¿os habéis preguntado alguna vez por qué esto es así?

Como siempre ocurre, nada es fruto del azar.


La barra invertida “\” fue introducida por primera vez en el conjunto de caracteres utilizado por el IBM 7030 a principios de los años 60 por Bob Bemer. El objetivo original era poder recrear los símbolos para el AND y OR lógico combinándolo con la barra inclinada tradicional (/\ y \/) en lenguaje ALGOL, y desde entonces ha formado parte de los juegos de caracteres estándar.

Bastante más adelante, rondando el año 1982, cuando Naranjito era lo más fashion que podías llevar en una camiseta, la primera versión de PC-DOS veía la luz acompañando al lanzamiento del célebre IBM PC. Este sistema operativo, entre otras cosas, podía manipular información almacenada sobre floppy disks en distintas unidades identificadas con una letra (característica heredada de CP/M), pero no existían como tal los directorios, todos los archivos se encontraban almacenados en lo que hoy entendemos como directorio raíz.

Ya entonces, las utilidades distribuidas con el sistema operativo utilizaban la barra inclinada “/” para especificar las distintas opciones (o switches) con los que podíamos invocarlos:
dir /p /w

¿Y por qué eligieron la barra inclinada para ello? En aquellos tiempos también existían distintas versiones de sistemas operativos estilo Unix que, en lugar de la barra “/”, utilizaban el guión “-“ para especificar estos modificadores. Sin embargo, los desarrolladores que implementaban las aplicaciones prefirieron inspirarse en otros sistemas coetáneos como los DEC, donde se utilizaba también el guión como carácter para identificar los switches.

Poco después aparecía DOS 2.0, el primer sistema operativo utilizado por el tándem Microsoft-IBM que ofrecía soporte para discos duros, por aquellos entonces con la nada despreciable capacidad de 10 Mb (!). Obviamente, esa ingente cantidad de información no podía ser almacenada de forma plana, por lo que decidieron mejorar el sistema de archivos y, entre otras cosas, introdujeron la posibilidad de organizar la información en directorios estructurados de forma jerárquica.

El ideal en ese momento habría sido adoptar el “estilo Unix”, ya bastante conocido y difundido, que consistía en utilizar la barra inclinada para separar los directorios partiendo desde el raíz “/”, pero se encontraron con dos problemas. En primer lugar, querían respetar la sintaxis usada para identificar las unidades de disco, utilizada desde DOS 1.0 y, en segundo lugar, la barra era utilizada para indicar los parámetros de los comandos, por lo que no podían emplearla también como separador de directorios.

En otros sistemas operativos se utilizaba también el punto para separar directorios, pero en DOS este carácter se utilizaba para separar el nombre del archivo de la extensión, por lo que tampoco era el camino, así que alguien pensó que lo mejor era usar un carácter lo más parecido posible a la barra inclinada, y el candidato ideal era la barra invertida “\”, que es el separador que ha perdurado hasta nuestros tiempos.

Fuentes:
Publicado en Variable not found.

4 Comentarios:

Jonathan dijo...

que interesante, jamás me lo habia preguntando. Gracias.

cristian dijo...

Genial!!

foxcarlos dijo...

Interesante , aunque tengo años en este medio no lo sabía

Andy dijo...

Desde el mismísimo MS-DOS 2.0 las rutinas internas del sistema operativo aceptaban tanto "\" como "/" para separar subdirectorios.

Por ejemplo, la famosa INT 21H, función "Open File", con AH=3DH, DS:DX=ASCIZ filename, aceptaba aquí "/" sin problema, ya que aquí no hay temor a confundirlo con una opción. De hecho, "ASCIZ" significa "conjunto de caracteres ASCII, terminados con un 0 binario", lo que llama la atención, ya que en ese momento las cadenas de caracteres normalmente se trataban con un byte indicando la longitud y a continuación la propia cadena (Microsoft Basic, por ejemplo).

Y es que en esa época el Unix más popular del mundo (por amplio margen) era Xenix, de Microsoft.

Microsoft tenía la intención de unificar MS-DOS con su Unix en versiones posteriores, asi que adoptaron muchas caracterísitcas de Unix en MS-DOS 2.0. Además de la indicada anteriormente:
- Las funciones de tratamiento de archivos de CP/M, en el que estaba basado MS-DOS 1.0 eran los "file control blocks", mientras que MS-DOS 2.0 introdujo "file handles" idénticos que en Unix.
- Los nombres de las funciones (open, close, read, write) son iguales que los de Unix. Pero el que más llama la atención es la función de borrar un archivo, que se llamaba "unlink", como en Unix, a pesar del hecho que MS-DOS nunca soportó links.
- Se introdujo redirección de entrada/salida de comandos con < y >, además de piping.
- Se introdujo el concepto de "fork" de procesos.
- Se escribió el driver "ansi.sys" para compatibilizar el control de pantalla con los del mundo Unix.

A mediados de 1982, Paul Allen (cofundador de Microsoft) declaró a la revista PC Magazine: "Es importante tener en cuenta de que MS-DOS es parte de una familia de sistemas operativos .... Proporcionar al usuario con las capacidades de una familia de sistemas operativos significa tener una clara ruta de migración desde MS-DOS a XENIX. Es decir, compatibilidad tanto para el usuario final como para el programador de sistemas. Una biblioteca para XENIX C-86 permitirá compilar un programa en XENIX y ejecutarlo luego en MS-DOS .... Los sistemas XENIX serán capaces de funcionar como servidores de archivos en red."

Luego Paul Allen dejó Microsoft, comenzaron a escribir OS/2 junto con IBM y el interés de la empresa por Xenix se desvaneció.

Una lástima.