Cosa intendeva Ken Thompson quando disse: "Scriverei una creatura con una" e "."


59

1
In realtà, molto probabilmente non intendeva quello che diceva: probabilmente intendeva dire che si sarebbe sillabato creatcon due e - dopotutto, uno è già presente. Ovviamente, il messaggio implicito è che UNIX ha scoperto il modo in cui doveva essere senza modifiche sostanziali che richiedevano solo di correggere questo [uno] errore di battitura.
Dietmar Kühl

Risposte:



33

Non si riferisce solo alla man 2 creatchiamata di sistema. Si riferisce anche alle tendenze obsolete di risparmiare su ogni piccolo personaggio, laddove possibile, a volte questo è solo fonte di confusione, specialmente ora, quando si digita e memorizza un altro personaggio raramente è un ostacolo.


15
Penso che nel contesto della domanda si riferisse solo a creat (). Il punto che stava sottolineando era che non c'era nulla in Unix che avrebbe fatto diversamente se non per questo piccolo errore di ortografia nella chiamata di sistema per creare un file.

15
@jmucchiello, non è un errore di ortografia. È un'abbreviazione deliberata (anche se non standard). Si adatta con l'uso pesante di abbreviazioni come fcntl, ls, mv, ecc, in generale.
Matthew Flaschen,

6
D'accordo, ma adoro quegli abbracci anche quando abbiamo TB da archiviare :)
tgkprog,

2
I tasti del tipo di telefono sono difficili da premere. È stato utile salvare alcune lettere. I primi che potevano essere eliminati erano vocali e consonanti ridondanti.
Erkin Alp Güney,

24

Si riferisce alla chiamata di sistema UNIX per creare nuovi file. I linker su alcune macchine erano limitati a identificatori di massimo 6 caratteri. Apparentemente, Ken ha dovuto lavorare con un tale linker e quindi la chiamata di creazione del sistema è stata abbreviata in creat per adattarsi a questa limitazione. L'ironia è che crea anche.

Vedi anche: Cosa significa il nono comandamento?


15
Il limite di 6 caratteri tradotto in 5, in quanto il compilatore (al fine di evitare lo scontro di simboli utente con quelli generati dal compilatore) ha anteposto un nome di '_'variabile / funzione precedente all'utente, facendo attenzione a non utilizzarlo '_'durante la generazione di simboli.
vonbrand

3
@vonbrand: Questo non sembra spiegare come unlinko umountpotrebbe esistere, tuttavia, che riterrei contemporaneo creat.
Dolda 2000

@ Dolda2000 Bene, è possibile che il linker avesse questa limitazione, mentre il compilatore no. Quindi umountsi scontrerebbe con umouno umounxqualsiasi altra cosa, ma il nome sarebbe permesso. Ma questa è pura speculazione :)
Luaan,

23

Sono in ritardo di sei anni per rispondere, ma credo che le risposte esistenti perdano tutti il ​​punto della citazione di Thompson.

Scriverei creat con una "e".

Ken Thompson non sta lamentando il nome della funzione utilizzata per aprire e possibilmente creare un file. Piuttosto, sta esprimendo che Unix è stato fatto correttamente, cioè non c'è nulla di grave che avrebbe dovuto essere fatto diversamente.

Il punto sottile è che l'architettura Unix è solida e le implementazioni vanno bene. Bisogna andare in bici per trovare qualcosa da migliorare in Unix. Pertanto, l'evidente nitpick sul nome di una chiamata di sistema comune.


3
Giusto, vuole dirci, che l'architettura UNIX può essere migliorata in aspetti molto piccoli. Ma fondamentalmente UNIX ha fatto bene. BTW. creatè una chiamata di sistema non un comando CLI.
Ikrabbe,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.