Perché scanf si chiama scanf? (Lo stesso per printf.)


11

Sono solo curioso di sapere perché nel linguaggio di programmazione C la funzione di leggere input formattato era chiamata "scanf" anziché "readf". Presumo che derivi da una lingua precedente, quindi in quel caso perché è stato chiamato in quel modo nella lingua precedente? (Ricorso.)

Inoltre, perché "printf" anziché "writef"? In lingue diverse da C, perché "stampa" o "scrivi" anziché "visualizzare"?

Risposte:


12

Printf è "formattato per la stampa". Ha la stessa radice di "stampa" in "stampante", che è l'abbreviazione di "teleprinter", sinonimo di "teletypewriter", e proviene probabilmente dal momento in cui hai usato TTY reali per interagire con i computer invece che con monitor e tastiere.

Scanf è "scan - formattato", e corrisponde al paradigma "stampa", rispetto all'uso di "scanner" nel contesto dell'OCR. Inoltre, si potrebbe presumere che read / write siano state una coppia di chiamate di sistema per molto tempo e, allo stesso modo in cui printf è distinto da write (2), si è voluto separare scanf da read (2).


5

"Leggi" in realtà richiede comprensione di ciò che stai guardando. Al contrario di "Scan", che in pratica significa catturare l'input, poi scoprirò cosa farne in seguito.


Bello. Hai idea se questo è stato considerato dal creatore del linguaggio C o di una lingua madre, o è solo qualcosa di sensato? Inoltre, perché pensi che alcune lingue utilizzino print anziché write o display?
Doug Treadwell,

1
Penso che molto di questo abbia le sue origini ai tempi di una volta, quando tutto era fatto con le schede perforate (e anche le tavolette di pietra :)). Se pensi in quel contesto, scansiona / stampa ha più senso che leggere / scrivere.
Craig T,

1
Non sono d'accordo sul fatto che "leggere" in senso informatico richiede comprensione di ciò che stai guardando. Credo che significhi copiare ciecamente 1 e 0 da un posto all'altro, ad esempio, dal disco in memoria. Non c'è comprensione.
Thomas Dignan,

Da un senso informatico hai ragione, ma non da un senso umano.
Craig T,

0

Questa è una risposta che è solo "intuizione". Il nome readf()presuppone che tu abbia già qualcosa da leggere. Ma in scanf()realtà ha due cose da fare: attendere l'input dell'utente (in altre parole, continuare a scansionare il buffer di input fino a quando non trova qualcosa) e quindi leggerlo. Nota che non sto giudicando come il sistema operativo lo implementa, sto solo descrivendo l'operazione concettuale.

So che mi dirai fscanf()e sscanf()non corrispondono a questa idea, ma presumo che siano estensioni scanf()e quindi era semplicemente "normale" dare loro lo stesso nome.

A proposito, perché il tuo nome è "Doug" e non "ABCD" ?? :-P


In realtà mi stavo chiedendo se esistesse un equivalente senso della vista per "ascoltare". Possiamo "ascoltare" ma anche "ascoltare", possiamo "leggere" ma per quanto ne so non c'è una parola per "aspettare che qualcuno scriva qualcosa e poi leggerlo". Forse scan è questa parola.
Doug Treadwell,

Dalla definizione 3 di dizionario.com di scansione: scrutare o osservare ripetutamente o in modo ampio, come una grande distesa; sondaggio.
Doug Treadwell,

Quindi, questa definizione del dizionario supporta la mia affermazione suppongo. È vicino a ciò che la funzione dovrebbe fare.
OmarOthman,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.