Qu'est-ce que Ken Thompson voulait dire quand il a dit: «J'orthographierais creat avec un 'e'.»?


59

1
En fait, il n'a probablement pas voulu dire ce qu'il a dit: il voulait probablement dire qu'il épelerait creatavec deux «e» - après tout, l'un est déjà présent. Bien entendu, le message implicite étant qu'UNIX s'est avéré tel qu'il était censé être sans modifications substantielles nécessitant simplement de corriger cette [une] faute de frappe.
Dietmar Kühl

Réponses:



33

Non seulement il fait référence à man 2 creatun appel système. Il fait également référence aux tendances obsolètes pour économiser chaque caractère minuscule, lorsque cela est possible, ce qui est parfois déroutant, surtout maintenant, lorsque la saisie et le stockage d'un autre caractère constituent rarement un obstacle.


15
Je pense que dans le contexte de la question, il ne faisait référence qu'à creat (). Ce qu'il disait, c’est qu’il n’aurait rien fait à propos d’Unix, à part cette petite erreur d’orthographe dans l’appel système à créer un fichier.

15
@jmucchiello, ce n'est pas une faute d'orthographe. C'est une abréviation délibérée (bien que non standard). Il correspond à l'utilisation lourde des abréviations comme fcntl, ls, mv, etc., en général.
Matthew Flaschen le

6
D'accord, mais j'adore ces abréviations même lorsque nous avons des TB à stocker :)
mercredi

2
Les touches de télétype sont difficiles à appuyer. Il était avantageux de conserver quelques lettres. Les premiers à être éliminés étaient les voyelles et les consonnes redondantes.
Erkin Alp Güney

24

Il fait référence à l'appel système UNIX pour créer de nouveaux fichiers. Les lieurs sur certaines machines étaient limités à des identifiants d'au plus 6 caractères. Apparemment, Ken devait travailler avec un tel éditeur de liens et par conséquent, l' appel système create a été abrégé en creat pour correspondre à cette limitation. L'ironie est que créer fait aussi.

Voir aussi: Que signifie le 9ème commandement?


15
La limite de 6 caractères a été traduite en 5 caractères, car le compilateur (afin d'éviter tout conflit entre les symboles utilisateur et ceux générés par le compilateur) a précédé '_'le nom de la variable utilisateur / du nom de la fonction avant, en prenant soin de ne pas l'utiliser '_'lors de la génération de symboles.
vonbrand

3
@vonbrand: Cela ne semble pas expliquer comment unlinkou umountpourrait exister, ce qui, à mon avis, serait contemporain creat.
Dolda2000

@ Dolda2000 Eh bien, il est fort possible que l'éditeur de liens ait eu cette limitation, contrairement au compilateur. Alors umountserait en conflit avec umounou umounxou autre chose, mais le nom serait autorisé. Mais ce n’est que pure spéculation :)
Luaan

23

J'ai six ans de retard pour répondre, mais je pense que les réponses existantes manquent toutes le sens de la citation de Thompson.

J'épelle creat avec un 'e'.

Ken Thompson ne déplore pas le nom de la fonction utilisée pour ouvrir et éventuellement créer un fichier. Il affirme plutôt qu'Unix a été fait correctement, c'est-à-dire qu'il n'y a rien de majeur qui aurait dû être fait différemment.

Le point subtil est que l'architecture Unix est bonne et que les implémentations sont correctes. Il faudrait bikeshed pour trouver quelque chose à améliorer sous Unix. Ainsi, le nitpick évident sur le nom d'un appel système commun.


3
C'est vrai, il veut nous dire que l'architecture UNIX peut être améliorée dans de très petits aspects. Mais fondamentalement, UNIX a bien fait les choses. BTW. createst un appel système et non une commande CLI.
ikrabbe
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.