¿Qué quiso decir Ken Thompson cuando dijo: "Deletrearía creat con una 'e'"?

59

A Ken Thompson, el creador de Unix, se le preguntó una vez qué haría si tuviera que hacerlo de nuevo. Él dijo: "Deletrearía creat con una 'e'".

¿A qué se refiere Ken? ¿Hay un comando "creat"?

Kusalananda
fuente
1
En realidad, probablemente no quiso decir lo que dijo: probablemente quiso decir que deletrearía creatcon dos 'e', después de todo, uno ya está presente. Por supuesto, el mensaje implícito es que UNIX resultó como debe ser sin ningún cambio sustancial que solo requiera arreglar este [un] error tipográfico.
Dietmar Kühl

Respuestas:

33

No solo se refiere a la man 2 creatllamada al sistema. También se refiere a las tendencias obsoletas para ahorrar en cada pequeño personaje, siempre que sea posible, a veces esto solo es confuso, especialmente ahora, cuando escribir y almacenar otro personaje rara vez es un obstáculo.

P Shved
fuente
15
Creo que, en el contexto de la pregunta, solo se refería a creat (). El punto que estaba diciendo era que no había nada sobre Unix que hubiera hecho de manera diferente, excepto por este pequeño error de ortografía en la llamada al sistema para crear un archivo.
15
@jmucchiello, no es un error ortográfico. Es una abreviatura deliberada (aunque no estándar). Encaja con el uso intensivo de abreviaturas como fcntl, ls, mv, etc, en general.
Matthew Flaschen
66
De acuerdo, pero me encantan esas abreviaciones incluso cuando tenemos TB para almacenar :)
tgkprog
2
Las teclas de teletipo son difíciles de presionar. Fue beneficioso guardar algunas cartas. Los primeros que pudieron eliminarse fueron las vocales y las consonantes redundantes.
Erkin Alp Güney
24

Se refiere a la llamada al sistema UNIX para crear nuevos archivos. Los enlazadores en algunas máquinas se limitaron a identificadores de como máximo 6 caracteres. Aparentemente, Ken tuvo que trabajar con dicho vinculador y, por lo tanto, la llamada al sistema de creación se acortó a creat para que coincidiera con esta limitación. La ironía es que crear también lo hace.

Ver también: ¿Qué significa el noveno mandamiento?

ubiyubix
fuente
15
El límite de 6 caracteres se tradujo a 5, ya que el compilador (para evitar que los símbolos de usuario entren en conflicto con los generados por el compilador) antepuso un nombre de '_'variable / función anterior al usuario, y tuvo cuidado de no usarlo '_'al generar símbolos.
vonbrand
3
@vonbrand: Eso no parece explicar cómo unlinko umountpodría existir, sin embargo, con lo que creo que son contemporáneos creat.
Dolda2000
@ Dolda2000 Bueno, es muy posible que el enlazador tuviera esta limitación, mientras que el compilador no. Entonces umountchocaría con umouno umounxo lo que sea, pero el nombre estaría permitido. Pero eso es pura especulación :)
Luaan
23

Tengo seis años de retraso para responder, pero creo que todas las respuestas existentes pierden el punto de la cita de Thompson.

Deletrearía creat con una 'e'.

Ken Thompson no lamenta el nombre de la función utilizada para abrir y posiblemente crear un archivo. Más bien, está expresando que Unix se hizo correctamente, es decir, no hay nada importante que debería haberse hecho de manera diferente.

El punto sutil es que la arquitectura Unix es sólida y las implementaciones están bien. Uno necesitaría bikeshed para encontrar algo para mejorar en Unix. Por lo tanto, el punto obvio sobre el nombre de una llamada de sistema común.

dotancohen
fuente
3
Correcto, quiere decirnos, que la arquitectura UNIX se puede mejorar en aspectos muy pequeños. Pero básicamente UNIX lo ha hecho bien. Por cierto. creates una llamada al sistema, no un comando CLI.
ikrabbe