scanfがscanfと呼ばれるのはなぜですか?(printfと同じ。)


11

Cプログラミング言語で、フォーマットされた入力を読み取る関数が「readf」ではなく「scanf」と呼ばれたのはなぜなのでしょうか。私はそれが以前の言語から派生したと思うので、その場合、なぜ以前の言語でそのように命名されたのですか?(再帰)

また、なぜ「writef」ではなく「printf」なのでしょうか?C以外の言語で、「表示」ではなく「印刷」または「書き込み」を行う理由

回答:


12

Printfは「印刷-フォーマット済み」です。「printer」の「print」と同じルートを持ちます。これは「teleprinter」の略語であり、「teletypewriter」の同義語であり、おそらくモニターやキーボードの代わりにコンピューターと対話するために実際のTTYを使用したときから来ています。

OCRのコンテキストでの「スキャナー」の使用と比較して、Scanfは「スキャン-フォーマット済み」であり、「印刷」パラダイムと一致します。また、読み取り/書き込みは長い間システムコールのペアであり、printfがwrite(2)とは異なるのと同様に、scanfをread(2)から分離することが望まれていました。


5

「読む」には、実際にあなたが見ているものを理解することが必要です。基本的に入力をキャプチャすることを意味する「スキャン」とは対照的に、後でそれをどうするかを考えます。


いいね これがC言語または親言語の作成者によって検討されたものであるかどうか、またはこれは理にかなっているだけのものですか?また、一部の言語では、書き込みまたは表示の代わりに印刷が使用されると考えるのはなぜですか?
ダグトレッドウェル

1
これの多くは、すべてがパンチカード(および石板:)で行われた昔の時代に起源を持っていると思います。その文脈で考えると、読み取り/書き込みよりもスキャン/印刷の方が理にかなっています。
クレイグT

1
コンピューティングの意味での「読み取り」には、あなたが見ているものを理解する必要があることに同意しません。1と0をある場所から別の場所に、たとえばディスクからメモリに盲目的にコピーすることを意味すると思います。理解は関係ありません。
トーマスディグナン

コンピューティングの観点からは正しいのですが、人間の観点からではありません。
クレイグT

0

これは単なる「直観」である答えです。名前readf()は、あなたがすでに読むべきものを持っていることを前提としています。しかし、scanf()実際には2つのことを行う必要があります。ユーザー入力を待機し(つまり、何かが見つかるまで入力バッファーをスキャンし続けます)、それを読み取ります。オペレーティングシステムが実際にそれをどのように実装するかを判断するのではなく、概念的な動作を説明するだけです。

私はあなたが私に言ってfscanf()sscanf()この考えと一致しないことを知っていますが、私はそれらが拡張であるscanf()と仮定します。

ところで、なぜあなたの名前は「ABCD」ではなく「Doug」ですか?? :-P


私は実際に、「聞く」に相当する視覚感覚があるかどうか疑問に思っていました。「聞く」ことも「聞く」こともできますし、「読む」こともできますが、「誰かが何かを書いてそれを読むのを待つ」という言葉はありません。おそらくスキャンはこの言葉です。
ダグトレッドウェル

dictionary.comのスキャンの定義3から:広大な広がりとして、繰り返しまたは徹底的に覗き見したり、観察したりする。調査。
ダグトレッドウェル

したがって、この辞書の定義は、私の主張をサポートしています。これは、関数が行うことに近いものです。
OmarOthman
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.