Por que os nomes das chamadas do sistema UNIX / POSIX são ilegíveis?

42

Qual é o motivo para usar nomes de chamadas de sistemas como time e creat em vez de getCurrentTimeSecs e createFile ou, talvez mais adequado em 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 o caso do camelo ou pelo menos sublinhar para torná-lo legível? É claro que as chamadas teriam mais caracteres, mas todos nós sabemos que a legibilidade do código é mais importante, certo?

    
por Benjoyo 09.07.2015 / 09:09

4 respostas

60

É devido às restrições técnicas do tempo. O padrão POSIX foi criado na década de 1980 e se referia 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 se estabeleceu o padrão para o comprimento da variável e função nomes.

    
por 09.07.2015 / 09:30
24

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ê tivesse sorte, você tinha algo parecido com uma máquina de escrever antiga. Se você não tivesse sorte, teria que lidar com sistemas que exigissem trabalho físico real para operar (como em, era preciso muita força para pressionar a "tecla") ou você perfurava manualmente um cartão.

Isso significa que, mesmo dentro do limite de 6 a 8 caracteres, você tentou manter seus comandos o mais curtos possível. É por isso que você tem ls em vez de list e creat em vez de create . O código daquela época está cheio de variáveis como a , x e i - e, é claro, x2 e amigos. A digitação foi muito trabalhosa - hoje, você é menos forçado a digitar listIndex do que costumava ser de "digitar" i - e nem é mais tão lento assim (especialmente com tecnologias adicionais como auto- conclusão).

A verdadeira questão é - por que tantas expressões do Unix persistem mesmo que não sejam mais desejáveis?

    
por 09.07.2015 / 17:59
19

Além das outras respostas, gostaria de salientar que o Unix foi desenvolvido como uma reação ao Multics, ao CTSS e a outros sistemas operacionais contemporâneos, que eram significativamente mais detalhados sobre suas convenções de nomenclatura. Você pode ter uma ideia desses sistemas operacionais no link . Por exemplo, o link change_name como o comando para renomear um arquivo; compare Unix mv .

Além disso, a principal razão pela qual os nomes muito curtos de chamada do sistema persistirem é a compatibilidade com versões anteriores. Você notará que APIs mais novas tendem a ser mais explícitas; por exemplo. gettimeofday e clock_gettime em vez de apenas time .

(Mesmo hoje, usar whateverIndex em vez de i para um índice de loop é uma falha automática de revisão de código no meu livro; -)

    
por 09.07.2015 / 21:23
8

Dennis Ritchie estabeleceu para si mesmo uma restrição com C que não dependeria de nenhum recurso de vinculador que não fosse exigido pelo Fortran. Daí o limite de 6 caracteres em nomes externos.

    
por 10.07.2015 / 22:14