Dlaczego scanf nazywa się scanf? (To samo dotyczy printf.)

11

Jestem tylko ciekawy, dlaczego w języku programowania C funkcja odczytu sformatowanych danych wejściowych nosiła nazwę „scanf” w przeciwieństwie do „readf”. Zakładam, że wywodzi się z wcześniejszego języka, więc w takim przypadku dlaczego został tak nazwany we wcześniejszym języku? (Ponownie.)

Ponadto, dlaczego „printf” zamiast „writef”? Dlaczego w językach innych niż C „drukuj” lub „pisz” zamiast „wyświetlaj”?

Doug Treadwell
źródło

Odpowiedzi:

12

Printf jest „sformatowany do wydruku”. Ma ten sam katalog główny, co „drukuj” w „drukarce”, co jest skrótem od „teleprinter”, synonimem „teletypewriter”, i prawdopodobnie pochodzi z czasów, gdy używasz prawdziwych TTY do interakcji z komputerami zamiast monitorów i klawiatur.

Scanf jest „sformatowany podczas skanowania” i pasuje do paradygmatu „drukowania”, w porównaniu do użycia „skanera” w kontekście OCR. Można również założyć, że odczyt / zapis od dawna jest parą wywołań systemowych, i podobnie jak printf różni się od write (2), istnieje potrzeba oddzielenia scanf od read (2).

antti.huima
źródło
5

„Czytanie” wymaga zrozumienia tego, na co patrzysz. W przeciwieństwie do „Skanuj”, co w zasadzie oznacza przechwytywanie danych wejściowych, później wymyślę, co z tym zrobić.

Craig T.
źródło
Ładny. Czy masz pojęcie, czy twórca języka C lub języka ojczystego zastanawiał się nad tym, czy ma to sens? Ponadto, dlaczego twoim zdaniem niektóre języki używają drukowania zamiast pisania lub wyświetlania?
Doug Treadwell
1
Myślę, że wiele z tego ma swoje korzenie w dawnych czasach, kiedy wszystko było robione z kartami uderzającymi (i kamiennymi tabletami :) też). Jeśli uważasz, że w tym kontekście skanowanie / drukowanie ma większy sens niż odczyt / zapis.
Craig T
1
Nie zgadzam się, że „czytanie” w sensie komputerowym wymaga zrozumienia tego, na co patrzysz. Uważam, że oznacza to ślepe kopiowanie 1 i 0 z jednego miejsca do drugiego, na przykład z dysku do pamięci. Nie ma w tym żadnego zrozumienia.
Thomas Dignan
Z komputerowego punktu widzenia masz rację, ale nie z ludzkiego zmysłu.
Craig T
0

To odpowiedź, która jest po prostu „intuicją”. Nazwa readf()zakłada, że ​​masz już coś do przeczytania. Ale w scanf()rzeczywistości ma dwie rzeczy do zrobienia: Zaczekaj na dane wejściowe użytkownika (innymi słowy, skanuj bufor wejściowy, aż znajdzie coś), a następnie przeczytaj. Zauważ, że nie oceniam, w jaki sposób system operacyjny faktycznie to implementuje, po prostu opisuję operację koncepcyjną.

Wiem, że mi powiesz fscanf()i sscanf()nie zgadzasz się z tym pomysłem, ale zakładam, że są to rozszerzenia scanf()i dlatego nadanie im tej samej nazwy było po prostu „normalne”.

Nawiasem mówiąc, dlaczego masz na imię „Doug”, a nie „ABCD”? :-P

OmarOthman
źródło
Zastanawiałem się, czy istnieje „odpowiednik zmysłu wzroku” do „słuchania”. Możemy „słyszeć”, ale także „słuchać”, możemy „czytać”, ale o ile wiem, nie ma słowa „czekać na kogoś, kto coś napisze, a następnie przeczytaj”. Być może skan to słowo.
Doug Treadwell
Z Dictionary.com definicja 3 skanu: podglądanie lub obserwowanie powtarzające się lub obszerne, jako duża przestrzeń; Ankieta.
Doug Treadwell
Więc ta definicja słownika obsługuje moje twierdzenie. Jest zbliżony do tego, co funkcja ma zrobić.
OmarOthman