Por que scanf é chamado scanf? (O mesmo para printf.)

11

Estou apenas curioso por que, na linguagem de programação C, a função de ler entrada formatada foi chamada "scanf" em oposição a "readf". Suponho que seja derivado de um idioma anterior; portanto, nesse caso, por que foi nomeado dessa maneira no idioma anterior? (Recurso.)

Além disso, por que "printf" em vez de "writef"? Em idiomas diferentes de C, por que "imprimir" ou "escrever" em vez de "exibir"?

Doug Treadwell
fonte

Respostas:

12

Printf é "formatado para impressão". Tem a mesma raiz que "print" em "printer", que é uma abreviação de "teleprinter", sinônimo de "teletypewriter", e provavelmente vem do momento em que você usou TTYs reais para interagir com computadores em vez de monitores e teclados.

O Scanf é "formatado para digitalização" e corresponde ao paradigma "imprimir", comparado com o uso de "scanner" no contexto do OCR. Além disso, pode-se supor que a leitura / gravação tenha sido um par de chamadas do sistema por um longo tempo e, da mesma forma que printf é distinto da gravação (2), houve um desejo de separar o scanf da leitura (2).

antti.huima
fonte
5

"Ler" na verdade requer compreensão do que você está vendo. Ao contrário de "Scan", que basicamente significa capturar a entrada, então vou descobrir o que fazer com ela mais tarde.

Craig T
fonte
Agradável. Você tem alguma idéia se isso foi algo considerado pelo criador da linguagem C ou de uma língua mãe ou se isso é apenas algo que faz sentido? Além disso, por que você acha que alguns idiomas usam print em vez de gravar ou exibir?
Doug Treadwell
1
Eu acho que muito disso tem suas origens nos dias de antigamente, quando tudo era feito com cartões perfurados (e tablets de pedra :) também). Se você acha que nesse contexto, digitalizar / imprimir faz mais sentido do que ler / escrever.
Craig T
1
Não concordo que "ler" no sentido da computação exija a compreensão do que você está vendo. Acredito que significa copiar cegamente 1 e 0 de um lugar para outro, por exemplo, do disco para a memória. Não há compreensão envolvida.
precisa
Do ponto de vista da computação, você está certo, mas não do sentido humano.
Craig T
0

Esta é uma resposta que é apenas "intuição". O nome readf()assume que você já tem algo para ler. Mas scanf()na verdade tem duas coisas a fazer: Aguarde a entrada do usuário (em outras palavras, continue verificando o buffer de entrada até encontrar algo) e, em seguida, leia-o. Observe que não estou julgando como o sistema operacional realmente implementa isso; estou apenas descrevendo a operação conceitual.

Eu sei que você vai me dizer fscanf()e sscanf()não corresponde a essa idéia, mas presumo que sejam extensões scanf()e, portanto, era "normal" dar a eles o mesmo nome.

A propósito, por que seu nome é "Doug" e não "ABCD"? :-P

OmarOthman
fonte
Na verdade, eu estava me perguntando se havia um equivalente de senso de visão para "ouvir". Podemos "ouvir", mas também "ouvir", podemos "ler", mas até onde eu sei, não há palavra para "esperar alguém escrever algo e depois ler". Talvez scan seja essa palavra.
precisa
Da definição 3 de scan.com do dictionary.com: observar ou observar repetidamente ou de forma abrangente, como uma grande extensão; pesquisa.
Doug Treadwell
Portanto, essa definição de dicionário suporta minha afirmação, eu acho. É perto do que a função deve fazer.
OmarOthman