Mengapa scanf disebut scanf? (Sama untuk printf.)

11

Saya hanya ingin tahu mengapa dalam bahasa pemrograman C fungsi untuk membaca input yang diformat disebut "scanf" sebagai kebalikan dari "readf". Saya berasumsi itu berasal dari bahasa sebelumnya, jadi dalam hal itu mengapa itu dinamai seperti itu dalam bahasa sebelumnya? (Perulangan.)

Juga, mengapa "printf" daripada "writef"? Dalam bahasa selain C, mengapa "cetak" atau "tulis" daripada "tampilan"?

Doug Treadwell
sumber

Jawaban:

12

Printf "diformat cetak". Ini memiliki akar yang sama dengan "print" di "printer", yang merupakan kependekan dari "teleprinter", sinonim untuk "teletypewriter", dan muncul sejak saat Anda menggunakan TTYs nyata untuk berinteraksi dengan komputer, bukan monitor dan keyboard.

Scanf adalah "scan - diformat", dan cocok dengan paradigma "cetak", dibandingkan dengan penggunaan "pemindai" dalam konteks OCR. Juga, orang dapat berasumsi bahwa baca / tulis telah menjadi sepasang panggilan sistem untuk waktu yang lama, dan dengan cara yang sama seperti printf berbeda dari write (2), ada keinginan untuk memisahkan scanf dari read (2).

antti.huima
sumber
5

"Membaca" sebenarnya membutuhkan pemahaman tentang apa yang Anda lihat. Berbeda dengan "Pindai", yang pada dasarnya berarti menangkap input, maka saya akan mencari tahu apa yang harus dilakukan dengannya nanti.

Craig T
sumber
Bagus. Apakah Anda tahu apakah ini sesuatu yang dianggap oleh pembuat bahasa C atau bahasa induk, atau apakah ini hanya sesuatu yang masuk akal? Juga, menurut Anda mengapa beberapa bahasa menggunakan cetak alih-alih menulis atau menampilkan?
Doug Treadwell
1
Saya pikir banyak dari ini berawal pada zaman dahulu kala, ketika semuanya dilakukan dengan punchcard (dan tablet batu :) juga). Jika Anda berpikir dalam konteks itu, pindai / cetak lebih masuk akal daripada membaca / menulis.
Craig T
1
Saya tidak setuju bahwa "membaca" dalam arti komputasi membutuhkan pemahaman tentang apa yang Anda lihat. Saya percaya ini berarti menyalin secara buta 1 dan 0 dari satu tempat ke tempat lain, misalnya, dari disk ke memori. Tidak ada pemahaman yang terlibat.
Thomas Dignan
Dari indra komputasi Anda benar, tetapi bukan dari indra manusia.
Craig T
0

Ini adalah jawaban yang hanya "intuisi". Namanya readf()berasumsi Anda sudah memiliki sesuatu untuk dibaca. Tetapi scanf()sebenarnya ada dua hal yang harus dilakukan: Tunggu input pengguna (dengan kata lain, terus memindai buffer input hingga menemukan sesuatu) dan kemudian membacanya. Perhatikan bahwa saya tidak menilai bagaimana sebenarnya sistem operasi mengimplementasikan itu, saya hanya menggambarkan operasi konseptual.

Saya tahu Anda akan memberi tahu saya fscanf()dan sscanf()tidak cocok dengan ide ini, tapi saya menganggap mereka adalah ekstensi scanf()dan karenanya itu "normal" untuk memberi mereka nama yang sama.

Ngomong-ngomong, mengapa namamu "Doug" dan bukan "ABCD" ?? :-P

OmarOthman
sumber
Aku benar-benar bertanya-tanya apakah ada penglihatan-indra yang setara dengan "mendengarkan". Kita dapat "mendengar" tetapi juga "mendengarkan", kita dapat "membaca" tetapi sejauh yang saya tahu tidak ada kata untuk "menunggu seseorang untuk menulis sesuatu dan kemudian membacanya". Mungkin pemindaian adalah kata ini.
Doug Treadwell
Dari dictionary.com, definisi pemindaian 3: untuk mengintip keluar atau mengamati berulang kali atau menyapu, sebagai bentangan besar; survei.
Doug Treadwell
Jadi, definisi kamus ini mendukung klaim saya, saya kira. Ini dekat dengan fungsi yang seharusnya dilakukan.
OmarOthman