O que Ken Thompson quis dizer quando disse: "Eu soletraria creat com um 'e'."?

59

Ken Thompson, o criador do Unix, foi perguntado uma vez o que ele faria se tivesse que fazer novamente. Ele disse: "Eu soletraria creat com um 'e'".

A que Ken se refere? Existe um comando "creat"?

Kusalananda
fonte
11
Na verdade, ele provavelmente não quis dizer o que disse: ele provavelmente quis dizer que soletraria creatcom dois 'e's - afinal, um já está presente. Obviamente, a mensagem implícita é que o UNIX acabou do jeito que deveria ser, sem alterações substanciais, exigindo apenas a correção desse [um] erro de digitação.
Dietmar Kühl 06/02

Respostas:

33

Ele não apenas se refere à man 2 creatchamada do sistema. Ele também se refere às tendências obsoletas de economizar em todos os personagens minúsculos, sempre que possível, às vezes isso é apenas confuso, especialmente agora, ao digitar e armazenar outro personagem raramente é um obstáculo.

P Shved
fonte
15
Eu acho que no contexto da pergunta ele estava apenas se referindo a creat (). O que ele estava dizendo era que não havia nada sobre o Unix que ele teria feito de maneira diferente, exceto por esse pequeno erro de ortografia na chamada do sistema para criar um arquivo.
15
@ jmucchiello, não é um erro de ortografia. É uma abreviação deliberada (embora não padrão). Enquadra-se com a utilização pesada de abreviaturas como fcntl, ls, mv, etc., em geral.
Matthew Flaschen
6
Concordo, mas eu adoro esses abbrvtns mesmo quando temos TBs para armazenar :)
tgkprog
2
As teclas de teletipo são difíceis de pressionar. Foi benéfico guardar algumas cartas. Os primeiros que poderiam ser eliminados foram vogais e consoantes redundantes.
Erkin Alp Güney
24

Refere-se à chamada do sistema UNIX para criar novos arquivos. Os vinculadores em algumas máquinas estavam limitados a identificadores de no máximo 6 caracteres. Aparentemente, Ken teve que trabalhar com esse vinculador e, portanto, a chamada do sistema de criação foi reduzida para criar para corresponder a essa limitação. A ironia é que criar também.

Veja também: O que o nono mandamento significa?

ubiyubix
fonte
15
O limite de 6 caracteres foi convertido para 5, pois o compilador (para evitar que os símbolos do usuário colidissem com os gerados pelo compilador) '_'precedeu um nome de variável / função antes do usuário e teve o cuidado de não usar '_'ao gerar símbolos.
vonbrand
3
@ vonbrand: Isso não parece explicar como unlinkou umountpoderia existir, no entanto, com o qual eu acho que é contemporâneo creat.
Dolda2000
@ Dolda2000 Bem, é bem possível que o vinculador tenha essa limitação, enquanto o compilador não. Então, umountentrariam em conflito com o que umounquer que umounxfosse, mas o nome seria permitido. Mas isso é pura especulação :)
Luaan
23

Estou seis anos atrasado para responder, mas acredito que todas as respostas existentes não atendem ao ponto da citação de Thompson.

Eu soletraria creat com um 'e'.

Ken Thompson não está lamentando o nome da função usada para abrir e possivelmente criar um arquivo. Em vez disso, ele está expressando que o Unix foi feito corretamente, ou seja, não há nada importante que deva ter sido feito de maneira diferente.

O ponto sutil é que a arquitetura do Unix é sólida e as implementações são boas. É preciso andar de bicicleta para encontrar algo para melhorar no Unix. Assim, o óbvio óbvio sobre o nome de uma chamada de sistema comum.

dotancohen
fonte
3
Certo, ele quer nos dizer, que a arquitetura UNIX pode ser aprimorada em aspectos muito pequenos. Mas basicamente o UNIX fez o certo. Entre. creaté uma chamada do sistema, não um comando da CLI.
precisa saber é