Pourquoi scanf s'appelle-t-il scanf? (Idem pour printf.)

11

Je suis simplement curieux de savoir pourquoi dans le langage de programmation C, la fonction de lecture des entrées formatées était appelée "scanf" par opposition à "readf". Je suppose qu'il est dérivé d'une langue antérieure, alors dans ce cas, pourquoi at-il été nommé ainsi dans la langue antérieure? (Recurse.)

Aussi, pourquoi "printf" plutôt que "writef"? Dans des langues autres que C, pourquoi "imprimer" ou "écrire" plutôt que "afficher"?

Doug Treadwell
la source

Réponses:

12

Printf est "formaté en impression". Il a la même racine que "print" dans "printer", qui est l'abréviation de "teleprinter", synonyme de "teletypewriter", et vient probablement du moment où vous avez utilisé de vrais ATS pour interagir avec des ordinateurs plutôt qu'avec des moniteurs et des claviers.

Scanf est "formaté en scan" et correspond au paradigme "print", comparé à l'utilisation de "scanner" dans le contexte de l'OCR. En outre, on pourrait supposer que la lecture / écriture a été une paire d'appels système depuis longtemps, et de la même manière que printf est distinct de write (2), il y a eu un désir de séparer scanf de read (2).

antti.huima
la source
5

"Lire" nécessite en fait une compréhension de ce que vous regardez. Par opposition à "Scan", qui signifie essentiellement de capturer l'entrée, alors je trouverai quoi faire plus tard.

Craig T
la source
Agréable. Avez-vous une idée si cela a été considéré par le créateur du langage C ou d'un langage parent, ou est-ce juste quelque chose qui a du sens? Aussi, pourquoi pensez-vous que certaines langues utilisent l'impression au lieu de l'écriture ou de l'affichage?
Doug Treadwell
1
Je pense que cela remonte à l'époque d'antan, quand tout était fait avec des cartes perforées (et des tablettes de pierre :) aussi). Si vous pensez que dans ce contexte, la numérisation / impression a plus de sens que la lecture / écriture.
Craig T
1
Je ne suis pas d'accord pour dire que «lire» au sens informatique requiert la compréhension de ce que vous regardez. Je crois que cela signifie copier aveuglément les 1 et les 0 d'un endroit à un autre, par exemple, du disque dans la mémoire. Il n'y a aucune compréhension impliquée.
Thomas Dignan
D'un sens informatique, vous avez raison, mais pas d'un sens humain.
Craig T
0

C'est une réponse qui n'est que "l'intuition". Le nom readf()suppose que vous avez déjà quelque chose à lire. Mais en scanf()réalité, il y a deux choses à faire: Attendez l'entrée utilisateur (en d'autres termes, continuez à analyser le tampon d'entrée jusqu'à ce qu'il trouve quelque chose), puis lisez-le. Notez que je ne juge pas comment le système d'exploitation implémente réellement cela, je décris simplement l'opération conceptuelle.

Je sais que vous me direz fscanf()et sscanf()ne correspondez pas à cette idée, mais je suppose que ce sont des extensions scanf()et donc c'était juste "normal" de leur donner le même nom.

Au fait, pourquoi tu t'appelles "Doug" et pas "ABCD" ?? :-P

OmarOthman
la source
Je me demandais en fait s'il y avait un équivalent de sens visuel pour "écouter". On peut "entendre" mais aussi "écouter", on peut "lire" mais pour autant que je sache il n'y a pas de mot pour "attendre que quelqu'un écrive quelque chose et ensuite le lire". Peut-être que scan est ce mot.
Doug Treadwell
De la définition 3 du dictionnaire.com du scan: pour observer ou observer de manière répétée ou générale, comme une grande étendue; sondage.
Doug Treadwell
Donc, cette définition de dictionnaire soutient ma demande, je suppose. C'est proche de ce que la fonction est censée faire.
OmarOthman