Mengapa banyak contoh kode, terutama tutorial, sering menggunakan nama "Foo" dan "Bar"? Ini hampir standar.
Sebagai contoh:
void foo(char* bar) {
printf("%s", bar);
}
terminology
history
variables
pengguna15453
sumber
sumber
Jawaban:
Foo and bar berasal dari singkatan US Army WWII FUBAR, "F-ed Up Beyond All Recognition". Seluruh keluarga istilah ini mulai digunakan secara luas selama kampanye Afrika Utara dan Sisilia (1942-1943). Hari Pertempuran Rick Atkinson yang sangat baik : Perang di Sisilia dan Italia, 1943-1944 memberikan daftar ini. Misalnya JANFU adalah "Joint Army Navy F Up", seperti insiden pada 11 Juli 1943 ketika armada invasi untuk Operasi Husky menembak jatuh 23 transportasi Angkatan Udara C-47 yang mengangkut pasukan penerjun payung untuk memperkuat tempat berpijak.
Pembaruan: Wikipedia memiliki daftar akronim terkait yang mencakup beberapa yang asli WWII yang terdaftar oleh Atkinson.
Setiap programmer akan memahami motivasi untuk menggunakan variabel foo dan bar untuk nama. Mereka tentu telah menjadi bagian dari budaya C / UNIX sejak awal, dan seperti yang ditunjukkan oleh @Walter Mitty, mendahului itu.
Pembaruan (10/5/2009): Inilah uraian Atkinson:
Pembaruan (23/11/2011): @Hugo memiliki daftar fantastis anteseden non-militer.
sumber
Saya pikir itu adalah pernyataan fonetis fubar.
Yang merupakan singkatan:
sumber
The New Hacker Kamus memiliki entri yang sangat baik ini - dan saya menganggap itu menjadi sumber daya yang lebih baik untuk hal semacam ini dari Wikipedia:
sumber
Wikipedia memberikan definisi ini dari Variabel Metasyntactic :
Artikel ini juga memberikan contoh umum variabel tersebut dalam berbagai bahasa pemrograman:
sumber
Inilah jawaban wikipedia:
http://en.wikipedia.org/wiki/Foo
Dan dari RFC 3092:
http://www.faqs.org/rfcs/rfc3092.html
sumber
tl; dr
"Foo" dan "bar" sebagai variabel metasintactic dipopulerkan oleh MIT dan DEC, referensi pertama sedang dikerjakan pada LISP dan PDP-1 dan Project MAC dari tahun 1964 dan seterusnya.
Banyak dari orang-orang ini berada di Tech Model Railroad Club MIT, di mana kami menemukan penggunaan pertama "foo" dalam lingkaran teknologi pada tahun 1959 (dan varian pada tahun 1958).
Baik "foo" dan "bar" (dan bahkan "baz") terkenal dalam budaya populer, terutama dari komik Smokey Stover dan Pogo, yang akan dibaca oleh banyak anggota TMRC.
Juga, tampaknya FUBAR militer berkontribusi pada popularitas mereka.
Penggunaan "foo" tunggal sebagai kata yang tidak masuk akal didokumentasikan dengan baik dalam budaya populer di awal abad ke-20, seperti halnya FUBAR militer. (Beberapa bacaan latar belakang: FOLDOC FOLDOC Jargon File Jargon File Wikipedia RFC3092 )
OK, jadi mari kita cari beberapa referensi.
BERITA TERAKHIR! Setelah memposting jawaban ini, saya menemukan artikel yang sempurna tentang "foo" di The Tech edisi Jumat 14 Januari 1938 ("koran MIT tertua dan terbesar & surat kabar pertama yang diterbitkan di web"), Volume LVII. 57, Harga Tiga Sen:
Surat kabar The Tech , setahun sebelumnya, Surat kepada Editor, September 1937 :
Dan The Tech pada bulan Desember 1938 :
Yang pertama didokumentasikan "foo" di kalangan tech mungkin 1959 's Kamus Bahasa TMRC :
Ini dijelaskan di FOLDOC . Kompiler kamus Pete Samson berkata pada 2005:
Dan dari Jargon File 4.0.0 tahun 1996 :
Setahun sebelum kamus TMRC, MIT Voo Doo Gazette 1958 ("Suplemen humor kantor Dekan MIT") (PDF) menyebutkan Foocom, dalam "The Laws of Murphy and Finagle" oleh John Banzhaf (seorang mahasiswa teknik elektro) :
Juga 1964 MIT Voo Doo (PDF) referensi penggunaan TMRC:
Tetapi mari kita ingat pertanyaan ini tentang contoh kode, jadi mari kita cari "foo", "bar" dan "foobar" yang diterbitkan dalam kode.
Jadi, Jargon File 4.4.7 mengatakan "foobar":
Referensi yang diterbitkan pertama yang dapat saya temukan adalah dari Februari 1964 , tetapi ditulis pada bulan Juni 1963, Bahasa Pemrograman LISP: Pengoperasian dan Aplikasi oleh Information International, Inc., dengan banyak penulis, tetapi termasuk Timothy P. Hart dan Michael Levin:
Juga termasuk variabel metasyntactic lainnya seperti: FOO CROCK GLITCH / POOT TOOR / ON YOU / SNAP CRACKLE POP / XYZ
Saya berharap ini sama dengan referensi "foo" berikutnya dari Project MAC MIT pada bulan Januari 1964 AIM-064, atau LISP Exercises oleh Timothy P. Hart dan Michael Levin:
Ini berbagi banyak variabel metasyntactic lainnya seperti: CHI / BOSTON NEW YORK / SPINACH BUTTER STEAK / FOO CROCK GLITCH / POOT TOOT / TOOT TOOT / ISTHISATRIVIALEXCERCISE / PLOOP FLOT TOP / SNAP CRACKLE POP / ONE TWO / PLANE SUB THRES
Untuk "foo" dan "bar" secara bersamaan, referensi paling awal yang dapat saya temukan adalah dari Project MAC MIT pada bulan Juni 1966 , AIM-098, atau LISP PDP-6 oleh Peter Samson:
Beberapa pengingatan lagi.
@Walter Mitty ingat di situs ini pada 2008:
John V. Everett mengenang pada tahun 1996:
Daniel PB Smith pada tahun 1998:
Robert Schuldenfrei pada tahun 1996:
Paul M. Wexelblat pada tahun 1992:
Bruce B. Reynolds pada tahun 1996:
Inilah IBM "BAR" langsung dari tahun 1955.
Referensi awal lainnya:
1967 bar foo MIT AIM-127
1967 bar foo MIT AIM-127a
1965 foo Berita Tek Teknologi MIT
1968 foo baz DEC
1971 FOO BAR UCLA-NMC RFC269
1972 FOO MIT AI
1972 FOO MIT AI HAKMEM ( pemindaian PDF )
1972 FOO DEC
1973 FOO DEC
1973 foo bar Dewan Gabungan Internasional tentang Kecerdasan Buatan
1975 foo bar Dewan Gabungan Internasional tentang Kecerdasan Buatan
1977 Foobar
1978 Foobar
1978 Moby Foobar dalam Perang Perangkat Lunak
Saya belum dapat menemukan referensi ke foo bar sebagai "sinyal foo terbalik" seperti yang disarankan dalam RFC3092 dan di tempat lain.
Berikut adalah beberapa F00 lebih awal tapi saya pikir mereka kebetulan / positif palsu:
1959 "FOO 31 Pabrik IBM-704 Bettis Menggunakan teknik kuadrat terkecil" Komisi Energi Atom AS
1960 FOO (FO Out, F1, F2, FOO, FOI) "Komputer digital dan teknik kontrol"
1967 FOO?
sumber
menggunakan kata-kata seperti "foo" dan "bar" membuat Anda fokus pada konsep bukan pada apa yang dapat Anda pahami berdasarkan istilah yang Anda tahu. Sebagai contoh:
Kode di atas memungkinkan Anda kembali pada pengetahuan Anda tentang hal-hal dunia nyata.
Jika Anda mencoba menjelaskan sebuah konsep di mana bagian yang penting bukanlah apa yang sedang dilakukan (mencetak meow atau kulit kayu misalnya) tetapi tentang bagaimana hal itu dilakukan maka lepaskan bagian-bagian yang Anda kenal membantu:
Sekarang Anda harus fokus pada apa yang sebenarnya terjadi, Anda tidak lagi dapat menebak apa yang akan terjadi.
Jadi, versi singkatnya adalah, bahwa foo, bar, dan sejenisnya, digunakan untuk menekankan konsep di mana konten tidak terlalu penting tetapi idenya.
sumber
Dari http://en.wikipedia.org/wiki/Foobar
Dalam teknologi, kata itu mungkin awalnya disebarkan melalui manual sistem oleh Digital Equipment Corporation pada 1960-an dan awal 1970-an. Kemungkinan lain adalah foobar berevolusi dari elektronik, sebagai sinyal foo terbalik. Ini karena jika sinyal digital aktif rendah (sehingga kondisi negatif atau tegangan nol mewakili "1") maka bar horizontal biasanya ditempatkan di atas label sinyal. File Jargon menjelaskan bahwa foo mungkin ada sebelum FUBAR
sumber
Dari File Jargon http://www.catb.org/jargon/html/F/foo.html
foo: / foo /
bar: / bar /, n.
sumber
Menurut http://en.wikipedia.org/wiki/Foo :
sumber
Saya kedua file jargon tentang Foo Bar.
Saya dapat melacaknya kembali setidaknya sampai tahun 1963, dan nomor seri 2 PDP-1, yang berada di lantai dua Gedung 26 di MIT. Foo dan Foo Bar digunakan di sana, dan setelah 1964 di ruang PDP-6 di proyek MAC.
sumber
Sejauh yang saya tahu, foo berasal dari foobar yang merupakan perubahan dari "fubar", menangkap phraase militer yang berdiri untuk " F *** ed u p b eyond sebuah ll r ecognition."
Kemudian lagi, mungkin ada sumber lain.
http://en.wikipedia.org/wiki/Foo
sumber
Foo and Bar (atau dikenal sebagai FUBAR ... F *** ed Up Beyond All Recognition) baru saja digunakan sebagai nama generik standar untuk hal-hal seperti kelas, properti, nama metode, dll.
Pada dasarnya idenya adalah untuk menyampaikan kode Anda tanpa banyak informasi asing yang mungkin bisa menjauh dari cara kerja kode (yaitu kita tidak perlu tahu fungsi Anda bernama AddUser untuk melihat kode dan memahami apa fungsinya jika kita menamainya kembali. ke Foo ()).
sumber
Ini adalah kata-kata yang tidak masuk akal yang dalam banyak kasus dapat diganti dengan kata-kata contoh yang lebih relevan. Kata-kata "foo" dan "bar" sering digunakan dalam pemrograman ketika seseorang tidak dapat memikirkan contoh yang baik.
Jika "foo" dan "bar" berasal dari FUBAR, mengapa itu digunakan oleh begitu banyak profesional dalam contoh-contoh instruksi ketika contoh-contohnya menyerupai tidak ada yang dikarang di luar pengakuan?
Bagi saya, penggunaan umum dari kata-kata ini secara tidak tepat adalah apa yang begitu sulit dikenali.
sumber