Qual é a razão para usar nomes de chamada não reveladores do sistema como time
e em creat
vez de getCurrentTimeSecs
e createFile
ou, talvez mais adequado para Unix get_current_time_secs
e create_file
. O que me leva ao próximo ponto: por que alguém deveria querer algo como cfsetospeed
sem estojo de camelo ou pelo menos sublinhados para torná-lo legível? Claro que as chamadas teriam mais caracteres, mas todos sabemos que a legibilidade do código é mais importante, certo?
history
posix
system-calls
Benjoyo
fonte
fonte
ls -la | grep
seria algo como:listAllHiddenAndNormalFiles() | globallySearchARegularExpressionAndPrint()
.Respostas:
É devido às restrições técnicas da época. O padrão POSIX foi criado na década de 1980 e referido ao UNIX, que nasceu na década de 1970. Vários compiladores C na época estavam limitados a identificadores com 6 ou 8 caracteres, de modo que estabeleceu o padrão para o comprimento da variável e função nomes.
Perguntas relacionadas:
fonte
get_current_date()
eget_current_time()
não poderia ser diferenciado por algumas dessas cadeias de ferramentas anteriores. A razão era que esses sistemas estavam trabalhando em pequenas pegadas de alguns kilobytes.creat()
. Ken Thompson foi perguntado uma vez o que ele faria de diferente se estivesse redesenhando o sistema UNIX. Sua resposta: "Eu soletraria creat com um e".dr01 está certo, mas também há outro motivo - usabilidade. No passado, você não tinha algo tão confortável quanto um teclado para digitar. Se você teve sorte, tinha algo parecido com uma máquina de escrever da velha escola. Se você não teve sorte, teve que lidar com sistemas que exigiam trabalho físico real para operar (como em, foi preciso muita força para pressionar a "tecla") ou você fez manualmente furos em um cartão.
Isso significava que, mesmo dentro do limite de 6 a 8 caracteres, você tentava manter seus comandos o mais curtos possível. É por isso que você tem
ls
em vez delist
, ecreat
em vez decreate
. Código daquela época é cheia de variáveis comoa
,x
ei
- e, claro,x2
e amigos. Digitar era muito trabalhoso - hoje, você é menos exercitado com a digitaçãolistIndex
do que costumava ser com "digitação"i
- e nem é mais tão lento assim (especialmente com tecnologias adicionais como o preenchimento automático).A verdadeira questão é - por que tantos idiomas Unix persistem mesmo que não sejam mais desejáveis?
fonte
time
agetCurrentTimeSecs
ou algo assim, eu vou parar de atualizá-lo. Mesmo com o teclado confortável e o hardware recente, esses nomes permanecem extremamente convenientes e simples (a simplicidade é um dos fundamentos do UNIX). Realmente não sinto a necessidade de trazer esse tipo de nomeação no estilo Java / C # para a linguagem C, muito menos em um kernel Linux. Na IMO, da perspectiva de um desenvolvedor de kernel ou do UNIX em geral, esses idiomas não são nada indesejáveis .unRootlyLongNamed.Packaged.nonsensicalFunction
é feio para mim, e eu prefiro ter certeza do que faz, doman 2 time
que adivinhar o que parece fazer.get_X
ouremove_file_from_cache
(pode proponhormfc
?) São indesejáveis para kernel desenvolvedores, por favor, fazê-lo publicamente - Eu amo ver a reação dele.Além das outras respostas, gostaria de salientar que o Unix foi desenvolvido como uma reação ao Multics, CTSS e outros sistemas operacionais contemporâneos, que eram significativamente mais detalhados sobre suas convenções de nomenclatura. Você pode ter uma idéia desses sistemas operacionais em http://www.multicians.org/devdoc.html . Por exemplo, http://www.multicians.org/mspm-bx-1-00.html fornece
change_name
como o comando para renomear um arquivo; compare o Unixmv
.Além disso, a principal razão pela qual os nomes de chamadas muito curtos do sistema persistem é a compatibilidade com versões anteriores. Você notará que as APIs mais recentes tendem a ser mais explícitas; por exemplo,
gettimeofday
e emclock_gettime
vez de apenastime
.(Ainda hoje, usar em
whateverIndex
vez dei
para um índice de loop é uma falha automática de revisão de código no meu livro ;-)fonte
i
é bom para um índice quando você está, digamos, repetindo uma série coordena o uso.?x
Ey
Atravessar alguns ordinal Seja descritivo.?.)Dennis Ritchie estabeleceu uma restrição a C de que não confiaria em nenhum recurso de vinculador que também não fosse exigido pelo Fortran. Daí o limite de 6 caracteres em nomes externos.
fonte