¿Por qué los directorios / usr y / tmp para Linux pierden vocales en su ortografía?

34

A menudo he comenzado a pensar en esto, pero nunca encontré una buena respuesta. ¿Por qué estos dos directorios Unix no son /usery en su /templugar?

Todos los otros directorios rootparecen ser exactamente lo que uno supondría que son, pero estos dos parecen extraños, siempre los habría adivinado como usery temp.

¿Hay alguna razón histórica para la ortografía?

Lazer
fuente
2
Algo me dice que es un arrastre de Unix. En ese supuesto, supongo que la mayoría de estos truncamientos se basan en sílabas prominentes.
Ken
17
Una vez, se le preguntó Ken Thompson si él haría cualquier cosa diferente que se rediseñando Unix, y él respondió: "" Me deletreo creat con un e."
mattdm
3
"Todos los otros directorios bajo root parecen ser exactamente lo que uno supondría que son" -> Eso no me parece cierto. A excepción de boot, home, mediay roottodo lo demás se acorta. mntTambién carecen de sus vocales.
phunehehe
77
Pensé que 'u' era una vocal ...
Mr. Shickadance
1
@Señor. Shickadance: lo es.
0xC0000022L

Respuestas:

49

Sí, había razones. Se pronuncian usuario y temp. passwd es similar, como lo es resolv.conf. Unix es un sistema operativo hostil y amigable para los expertos.

Yo era estudiante cuando 300 módems Baud eran la norma. Era la envidia de mis compañeros, ya que tenía un terminal Silent 700 de Control Data donde trabajaba. Podrías ver la demora de escribir cada carácter y esperar a que se repita. Cada personaje contado; También lo veo como fomentar el comienzo de Leet Speak.

Los hjkl de vi tienen una historia que pocos conocen. vi fue desarrollado por Bill Joy cuando era un estudiante graduado en UCB durante estos mismos años. Los terminales ADM 3a en Cory Hall tenían teclas de flecha sobre esas letras

Tom Murphy
fuente
22
No creo que cuando se diseñó la idea de ser "amigable con los expertos, antagonista del usuario" fuera parte del objetivo. Más bien, todos los usuarios eran expertos, por lo que no hubo una distinción significativa.
mattdm
77
LOL "Experto amigable, antagonista del usuario". Me hizo el día. +1!
nico
55
Solo una pequeña nota (no es una corrección de ninguna manera). Aunque a veces se pronuncia "usuario", / usr significa "recurso de sistema universal" o "recurso de sistema unix". Cualquiera que sea el que sea, se ha perdido en medio de la niebla de la historia antigua :) de Unix
luis.espinal
21
En el momento en que se acuñó / usr, su significado era usuario y los directorios principales se encontraban allí. Unix / universal system resource es en realidad un backronym.
jlliagre
2
Cuando salió Unix, 300 bps era exuberante . Había enlaces de 75 bps, manejados por teletipos electromecánicos lentos y engorrosos (a menudo Teletype® ASR-33).
Alexios
20

Son restos de Unix. La memoria y el espacio en disco eran escasos. Hackear algunas vocales y otras abreviaturas dieron ahorros reales. Unos pocos bloques de disco o unos pocos bytes podrían significar la diferencia entre poder ejecutar un programa o no. (Una vez tuve que recortar un programa en 24 bytes antes de que se ejecute).

También, como Tom observó, las velocidades de los terminales eran lentas. Se introdujeron 1200 baudios como alta velocidad y así fue. Trabajé con un sistema que usaba un teletipo de media velocidad (55 baudios o 5 cps) como consola.

En los sistemas que ejecutan interfaces gráficas, generalmente no importa tanto, ya que los usuarios promedio no estarán hurgando en ellos. Los directorios generalmente están bien documentados en la hierpágina del manual.

Cambiar a nombres más largos causaría muchos problemas para los programas existentes. También limitaría la portabilidad del script. Vincular varios nombres a los mismos directorios probablemente sería más confuso que útil.

EDITAR: PDP-7 en el que se desarrolló Unix tenía una configuración básica de 4KW de memoria y un máximo de 32KW. Palabras donde 18 bits de ancho. La entrada era un teletipo, por lo que la velocidad era de 110 baudios o 10 cps, aproximadamente 100 palabras, que es significativamente más lenta que el habla.

BillThor
fuente
8
No compro mmory nd dsk spc, sino tltyps lentos. Siempre y cuando puedas descifrar los cronismos, ¿por qué no?
Usuario desconocido
@usuario desconocido: entonces eres joven y nunca tuviste que preocuparte por la memoria o el espacio en disco. Mi primera computadora tiene 30 años ahora, maravillate con las especificaciones.
1
Nunca he escrito o inspeccionado un sistema de archivos en profundidad, pero ¿el nombre de un archivo / directorio en el sistema de archivos ocupa más o menos espacio, dependiendo de 1 carácter? Los archivos en sí mismos siempre ocupan un múltiplo de algún tamaño, hoy 4k. Por lo tanto, la mayoría de los archivos que contienen una ruta a / usr o / tmp no se harán más grandes o más pequeños, dependiendo de uno solo e. Bueno, a veces lo harán, y luego crecen por un tamaño de bloque completo, pero rara vez. ¿Y en RAM? No lo sé.
Usuario desconocido
1
y hubiera sido más molesto escribir. "temporal vs tmp" ugh ... ¿por qué alguien los querría por más tiempo?
xenoterracide
44
Los directorios modernos de Unix tienen entradas de longitud variable. De vuelta en Research Unix, una entrada de directorio tenía 16 bytes fijos: 14 para el nombre de archivo, 2 para el número de inodo. Y puede haber sido más pequeño cuando / usr, etc. fueron canonizados.
geekosaur
5

Me sorprende que nadie haya comentado /usertodavía. Esto es obvio: porque no es "usuario", es "Recursos del sistema universal".

En cuanto a /tmp, es simplemente más corto y más fácil de escribir. Los programadores de C tienen la costumbre de usar nombres cortos cuando es posible porque terminan escribiéndolos muchas veces en un programa. Es muy común tener una variable temporal llamada "tmp" en lugar de "temp" por la misma razón, usa "i" i para el índice en un bucle for en lugar de "index" o "counter".

Shawn J. Goff
fuente
22
En el momento en que se acuñó / usr, su significado era usuario y los directorios principales se encontraban allí. Unix / universal system resource es en realidad un backronym.
jlliagre
3
@jlliagre Impresionante. Encontré otro hilo que en realidad tiene una fuente autorizada de eso. us.generation-nt.com/answer/…
Shawn J. Goff
2
La mayoría de los primeros programadores de C fueron los primeros programadores de FORTRAN. La forma en que escribió números enteros en Fortran IV fue iniciar el identificador con un carácter de 'i' a 'n', todo lo demás era un número REAL. Así, los índices de bucle eran típicamente i, j o ​​k; lo cual fue suficiente para las matrices que los programadores científicos estaban destruyendo en ese entonces.
Tom Murphy
@TomMurphy, la mayoría de las personas que comenzaron con C probablemente eran programadores de lenguaje ensamblador, o quizás usuarios de BCPL o B. RATFOR fue inventado para las almas pobres que no tenían un lenguaje decente a mano. Y el libro de Kernighan y Plaugher "Herramientas de software" fue escrito en (y enumera un preprocesador completo para) RATFOR. Todavía vale la pena leerlo.
vonbrand
1
/usrno era "Recursos del sistema universal", realmente era usuario . Ver Archivos de AT & T:: Youtube El sistema operativo UNIX (producido alrededor de 1982), donde, en alrededor de 35 segundos 13min, /usr/bwkestá claramente pronunciado "usuario-bwk" y /usrse pronuncia "barra-usuario" por Brian W. Kernighan . / usr también está claramente implicado como la ubicación que contiene los directorios principales en el diagrama a los 13 minutos y 30 segundos. No creo que puedas ser mucho más autoritario que eso.
un CVn
4

Un factor que nadie ha mencionado es que, dada la tecnología de teclado de la época, había una ventaja sustancial en el uso de nombres cortos que son más fáciles de escribir. Imprimir uservs usr, incluso en un teletipo de 110 BPS, probablemente no fue un gran problema; tener que escribir esa letra extra fue probablemente más significativo.

Keith Thompson
fuente
1

Todos los otros directorios bajo root parecen ser exactamente lo que uno supondría que son,

También hay / var, / mnt y / opt;)

pero estos dos parecen extraños, siempre los habría adivinado como usuario y temporal.

Casi ahi. Como dijo Shawn, "usuario" significa "Recursos del sistema universal" (aunque otros recursos según Google indica que significa "Recursos del sistema Unix").

¿Hay alguna razón histórica para la ortografía?

Atajos, abreviaturas. Recuerde que los comandos en cualquier sistema operativo están destinados a acceder de forma interactiva y programática. En particular, para la administración de sistemas donde las secuencias de comandos rápidas son una preocupación principal, las abreviaturas, los mnemónicos son tan buenos (o incluso mejores) que la palabra / comando deletreada por completo.

Además, en el pasado, si te conectabas remotamente a través de un módem lento como la melaza, afeitarte un par de vocales aquí y allá te haría la vida más fácil (o menos miserable si fueras un administrador de sistemas tratando de descubrir qué demonios) está mal con una caja remota).

Como se dijo antes, no es exclusivo de / usr y / tmp (ver / var, / mnt y / opt).

Además, no es exclusivo de Unix. Tomemos DOS, por ejemplo (chkdsk, por ejemplo). Los mnemónicos donde se afeitan las vocales son un concepto poderoso y útil.

Incluso en los lenguajes naturales (como los idiomas semíticos) existe el concepto (donde la raíz de las palabras se identifica universalmente y casi sin ambigüedades mediante grupos de 3 consonantes). Es un mecanismo humano innato para gestionar la información.

luis.espinal
fuente
El / var, / mnt y / opt llegaron MUCHO más tarde. Sin embargo, / bin, / dev y / etc estaban en UNIX muy temprano y por la misma razón la gente dijo: porque los ttys eran lentos y no todos eran CRT y espacio en disco. Existían sistemas de arranque UNIX con cinta de papel, unidades pequeñas (costosas) e incluso disquetes de 8 ". El espacio para ellos era muy escaso.
Arcege
1
Se podría argumentar que las lenguas semíticas en realidad no usan consonantes, sino sílabas con vocales indeterminadas. Entonces, las sílabas raíz proporcionan un significado semántico, mientras que las vocales específicas agregan un significado gramatical.
ninjalj