¿Por qué scanf se llama scanf? (Lo mismo para printf.)

11

Tengo curiosidad por saber por qué en el lenguaje de programación C la función para leer entradas formateadas se llamaba "scanf" en lugar de "readf". Supongo que se deriva de un idioma anterior, así que en ese caso, ¿por qué se llamó así en el idioma anterior? (Recurse)

Además, ¿por qué "printf" en lugar de "writef"? En lenguajes distintos de C, ¿por qué "imprimir" o "escribir" en lugar de "mostrar"?

Doug Treadwell
fuente

Respuestas:

12

Printf tiene "formato de impresión". Tiene la misma raíz que "imprimir" en "impresora", que es la abreviatura de "teleimpresora", un sinónimo de "teletipo", y es probable desde el momento en que usó TTY reales para interactuar con computadoras en lugar de monitores y teclados.

Scanf tiene "formato de escaneo" y coincide con el paradigma de "impresión", en comparación con el uso de "escáner" en el contexto de OCR. Además, se podría suponer que leer / escribir ha sido un par de llamadas al sistema durante mucho tiempo, y de la misma manera que printf es distinto de write (2), se ha deseado separar scanf de read (2).

antti.huima
fuente
5

"Leer" en realidad requiere la comprensión de lo que estás viendo. A diferencia de "Escanear", que básicamente significa capturar la entrada, luego averiguaré qué hacer con ella.

Craig T
fuente
Agradable. ¿Tienes alguna idea de si esto fue algo considerado por el creador del lenguaje C o un lenguaje principal, o es algo que tiene sentido? Además, ¿por qué crees que algunos idiomas usan impresión en lugar de escritura o visualización?
Doug Treadwell
1
Creo que mucho de esto tiene su origen en los días de antaño, cuando todo se hacía con tarjetas perforadas (y tabletas de piedra :) también). Si piensa en ese contexto, escanear / imprimir tiene más sentido que leer / escribir.
Craig T
1
No estoy de acuerdo en que "leer" en el sentido informático requiera la comprensión de lo que está viendo. Creo que significa copiar ciegamente 1 y 0 de un lugar a otro, por ejemplo, del disco a la memoria. No hay comprensión involucrada.
Thomas Dignan
Desde el punto de vista informático, tienes razón, pero no desde un sentido humano.
Craig T
0

Esta es una respuesta que es solo "intuición". El nombre readf()asume que ya tienes algo para leer. Pero en scanf()realidad tiene dos cosas que hacer: esperar la entrada del usuario (en otras palabras, seguir escaneando el búfer de entrada hasta que encuentre algo) y luego leerlo. Tenga en cuenta que no estoy juzgando cómo el sistema operativo realmente implementa eso, solo estoy describiendo la operación conceptual.

Sé que me lo dirás fscanf()y sscanf()no coincidirás con esta idea, pero supongo que son extensiones scanf()y, por lo tanto, era "normal" darles el mismo nombre.

Por cierto, ¿por qué te llamas "Doug" y no "ABCD"? :-PAG

OmarOthman
fuente
De hecho, me preguntaba si había un sentido de la vista equivalente a "escuchar". Podemos "escuchar" pero también "escuchar", podemos "leer", pero que yo sepa, no hay una palabra para "esperar a que alguien escriba algo y luego leerlo". Quizás escanear es esta palabra.
Doug Treadwell
De la definición 3 de escaneo de dictionary.com: para mirar u observar repetidamente o de manera amplia, como una gran extensión; encuesta.
Doug Treadwell
Entonces, esta definición de diccionario apoya mi afirmación, supongo. Está cerca de lo que se supone que debe hacer la función.
OmarOthman