Was meinte Ken Thompson, als er sagte: "Ich würde Kreation mit einem 'e' buchstabieren."

59

Ken Thompson, der Schöpfer von Unix, wurde einmal gefragt, was er tun würde, wenn er es noch einmal tun müsste. Er sagte: "Ich würde Kreation mit einem 'e' buchstabieren."

Worauf bezieht sich Ken? Gibt es einen "creat" -Befehl?

Kusalananda
quelle
1
Eigentlich meinte er höchstwahrscheinlich nicht, was er sagte: Er meinte wahrscheinlich, dass er creatmit zwei Es buchstabieren würde - schließlich ist eines bereits vorhanden. Die implizite Botschaft ist natürlich, dass UNIX wie vorgesehen ohne wesentliche Änderungen verlaufen ist und nur diesen [einen] Tippfehler behoben werden muss.
Dietmar Kühl

Antworten:

33

Nicht nur er bezieht sich auf man 2 creatSystemaufruf. Er verweist auch auf die veralteten Trends, nach Möglichkeit bei jedem winzigen Zeichen zu sparen. Manchmal ist dies nur verwirrend, besonders jetzt, wenn ein anderes Zeichen eingegeben und gespeichert wird, selten ein Hindernis.

P Shved
quelle
15
Ich denke, im Zusammenhang mit der Frage bezog er sich nur auf creat (). Der Punkt, den er ansprach, war, dass es an Unix nichts gab, was er anders gemacht hätte, außer bei diesem kleinen Rechtschreibfehler im Systemaufruf, um eine Datei zu erstellen.
15
@jmucchiello, es ist kein Rechtschreibfehler. Es ist eine absichtliche (wenn auch nicht standardmäßige) Abkürzung. Er paßt mit dem starken Gebrauch von Abkürzungen wie fcntl, ls, mvusw., im Allgemeinen.
Matthew Flaschen
6
Stimmen Sie zu, aber ich liebe diese Abkürzungen, auch wenn wir TBs zu speichern haben :)
tgkprog
2
Teletyp-Tasten sind schwer zu drücken. Es war von Vorteil, ein paar Briefe zu speichern. Die ersten, die beseitigt werden konnten, waren Vokale und überflüssige Konsonanten.
Erkin Alp Güney
24

Es bezieht sich auf den UNIX-Systemaufruf zum Erstellen neuer Dateien. Linker auf einigen Computern waren auf Bezeichner mit höchstens 6 Zeichen beschränkt. Anscheinend musste Ken mit einem solchen Linker arbeiten und daher wurde der Systemaufruf create auf creat verkürzt, um dieser Einschränkung zu entsprechen. Die Ironie ist, dass schaffen auch tut.

Siehe auch: Was bedeutet das 9. Gebot?

ubiyubix
quelle
15
Die Begrenzung auf 6 Zeichen wurde in 5 übersetzt, da der Compiler (um zu vermeiden, dass Benutzersymbole mit vom Compiler generierten Symbolen in Konflikt geraten) einem '_'Variablen- / Funktionsnamen vorangestellt und darauf geachtet hat, dass er '_'beim Generieren von Symbolen nicht verwendet wird.
Vonbrand
3
@vonbrand: Das scheint aber nicht zu erklären, wie unlinkoder wie umountes existieren könnte, was ich für zeitgemäß halte creat.
Dolda2000,
@ Dolda2000 Naja, es ist gut möglich, dass der Linker diese Einschränkung hatte, während der Compiler dies nicht tat. So umountwürde kollidieren umounoder umounxoder was auch immer, aber der Name würde erlaubt werden. Aber das ist reine Spekulation :)
Luaan
23

Ich bin sechs Jahre zu spät dran, aber ich glaube, dass die erhaltenen Antworten alle den Sinn von Thompsons Zitat verfehlen.

Ich würde Kreation mit einem 'e' buchstabieren.

Ken Thompson beklagt nicht den Namen der Funktion, die zum Öffnen und möglicherweise Erstellen einer Datei verwendet wird. Er drückt vielmehr aus, dass Unix richtig gemacht wurde, dh es gibt nichts Wichtiges , was anders hätte gemacht werden sollen.

Der subtile Punkt ist, dass die Unix-Architektur solide ist und die Implementierungen in Ordnung sind. Man müsste mit dem Fahrrad fahren , um in Unix etwas zu verbessern. Somit ist der offensichtliche Trottel über den Namen eines gängigen Systemaufrufs.

dotancohen
quelle
3
Richtig, möchte er uns sagen, dass die UNIX-Architektur in sehr kleinen Aspekten verbessert werden kann. Aber im Grunde hat UNIX es richtig gemacht. Übrigens. creatist ein Systemaufruf, kein CLI-Befehl.
ikrabbe