Apa sejarah penggunaan "foo" dan "bar" dalam contoh kode sumber?

60

Mengapa banyak contoh kode, terutama tutorial, sering menggunakan nama "Foo" dan "Bar"? Ini hampir standar.

Sebagai contoh:

void foo(char* bar) {
  printf("%s", bar);
}
pengguna15453
sumber
2
Sepertinya tidak ada pos fmsf yang aman dari intimidasi RichB.
Yup dia mencintai untuk mengubah apa yang saya tulis, saya mulai berpikir dia terobsesi dengan itu
4
"mengapa foo bar?" judul tidak terlalu baik, IMHO
Jeff Atwood
1
Saya telah menambahkan jawaban dengan etimologi yang benar (itu yang paling populer dari keluarga istilah slang Angkatan Darat AS Perang Dunia II) dan sumber saya.
Itu meme - ide yang bisa dikomunikasikan. Itu adalah pembenarannya sendiri.
Mike Dunlavey

Jawaban:

65

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:

"Sikap sipil" mereka yang menyebar membuat mereka waspada terhadap semangat bela diri. "Kami bukan orang romantis yang dipenuhi dengan jubah cape-and-sword," tulis John Mason Brown, seorang letnan Cadangan Angkatan Laut yang menuju ke Sisilia. "Perang terakhir terlalu dekat untuk itu." Kehidupan militer mengobarkan perasaan ironis mereka dan skeptisisme mereka. Satu akronim kasar yang menangkap harapan prajurit yang lebih rendah - SNAFU, "situasi normal, semua kacau" - telah berkembang menjadi kosakata sinisme GI: SUSFU (situasi tidak berubah, masih kacau); FUMTU (kacau lebih dari biasanya); JANFU (gabungan Angkatan Darat-Angkatan Laut); JAAFU (persetan Anglo-Amerika); FUAFUP (kacau dan kacau tepat); dan FUBAR (kacau di luar semua pengakuan) [Atkinson, p. 36].

Pembaruan (23/11/2011): @Hugo memiliki daftar fantastis anteseden non-militer.

Jim Ferrans
sumber
3
Untuk menambah etimologi: "FUBAR mungkin telah dipengaruhi oleh kata Jerman furchtbar, yang berarti mengerikan. Diucapkan dengan cht lembut, dan mungkin membuat transisi selama Perang Dunia II"
Mark
4
@Mark, Wikipedia bahasa Jerman (de.wikipedia.org/wiki/Fubar), menyarankan ini mungkin pseudoetimologi. Ini juga menunjuk pada anteseden seperti tanda "SILENCE IS FOO" dalam kartun Warner Brother 1938 "The Daffy Doc".
4
@ Jim Ferrans: Walaupun FUBAR mungkin memengaruhi penggunaan "bar" dengan "foo", ada bukti kuat bahwa "foo" dengan sendirinya sudah ada sebelum Perang Dunia II, dengan referensi setidaknya kembali ke tahun 1930-an, seperti yang ditunjukkan oleh komentar Anda. Mungkin baik untuk menyebutkan hal itu dalam jawaban Anda.
Daniel Pryden
Ya, foo pasti ada sebelum PD II. Bahkan, saya telah menemukan sebuah surat kabar MIT dari tahun 1938 yang memberitahu kita seberapa umum itu: "Sebagai sumpah serapah, tentu saja," foo! "Memiliki posisi yang pasti dan mungkin tidak tergantikan dalam bahasa kita, meskipun kita takut bahwa berlebihan penggunaan yang saat ini menjadi sasaran dapat mengakibatkan jatuh ke dalam pelepasan awal (dan, sayangnya, gelap). " Lihat jawaban saya untuk lebih banyak dan referensi tahun 1937 di surat kabar yang sama: programmers.stackexchange.com/questions/69788/…
Hugo
59

Saya pikir itu adalah pernyataan fonetis fubar.

Yang merupakan singkatan:

  • F * cked
  • Naik
  • Luar
  • Semua
  • Perbaikan
FlySwat
sumber
18
Perbaikan atau Pengakuan; P
10
"Fouled" sering digunakan ketika perlu bersikap sopan.
30
perbaikan? nah .. pengakuan
hasen
6
Itu "pengakuan". Lihat kutipan dari Hari Pertempuran Rick Atkinson di sini: stackoverflow.com/questions/262271/…
7
Hanya catatan bahwa ada bukti kuat (lihat RFC 3092, File Jargon, dan jawaban lain di sini) bahwa "foo" digunakan sebagai kata omong kosong pengganti pada tahun 1930-an, jauh sebelum FUBAR masuk ke bahasa gaul militer di era Perang Dunia II.
Daniel Pryden
41

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:

variabel metasyntactic /n.

Sebuah nama yang digunakan dalam contoh-contoh dan dipahami sebagai singkatan dari apa pun yang sedang dibahas, atau sembarang anggota kelas yang sedang dibahas. Kata foo adalah contoh kanonik. Untuk menghindari kebingungan, peretas tidak pernah (yah, hampir tidak pernah) menggunakan `foo 'atau kata lain seperti itu sebagai nama permanen untuk apa pun. Dalam nama file, konvensi umum adalah bahwa setiap nama file yang diawali dengan nama variabel metasyntactic adalah file awal yang dapat dihapus kapan saja.

Hingga taraf tertentu, daftar variabel metasintactic yang disukai seseorang adalah tanda tangan budaya. Mereka muncul baik secara seri (digunakan untuk kelompok variabel atau objek terkait) dan sebagai lajang. Berikut adalah beberapa tanda tangan yang umum:

foo, bar, baz, quux, quuux, quuuux ...:
Penggunaan MIT / Stanford, sekarang ditemukan di mana-mana (sebagian besar berkat versi awal leksikon ini!). Di MIT (tetapi tidak di Stanford), baz berhenti digunakan untuk sementara waktu di tahun 1970-an dan 1980-an. Mutasi mutakhir yang umum terjadi pada urutan ini menyisipkan qux sebelum quux.

bazola, ztesch:
Stanford (dari pertengahan '70 -an ke atas).

foo, bar, thud, grunt:
Serial ini populer di CMU. Variabel terkait CMU lainnya termasuk gorp.

foo, bar, fum:
Seri ini dilaporkan umum di XEROX PARC.

fred, barney:
Lihat entri untuk fred. Ini cenderung Britishisms.

corge, grault, flarp:
Populer di Rutgers University dan di antara peretas GOSMACS.

zxc, spqr, wombat:
Universitas Cambridge (Inggris).

shme
Berkeley, GeoWorks, Ingres. Diucapkan / shme / dengan short / e /.

snorkeling
Brown University, awal 1970-an.

foo, bar, zot
Universitas Teknologi Helsinki, Finlandia.

blarg, geli
Selandia Baru.

toto, titi, tata, tutu
Prancis.

pippo, pluto, paperino
Italia. Pippo / pee'po / dan Paperino / pa-per-ee'-no / adalah nama Italia untuk Goofy dan Donald Duck.

aap, noot, mies
Belanda. Ini adalah kata-kata pertama yang digunakan anak untuk belajar mengeja di papan ejaan Belanda.

Dari semua ini, hanya 'foo' dan 'bar' yang universal (dan baz hampir seperti itu). Senyawa foobar dan `foobaz 'juga menikmati mata uang yang sangat luas.

Beberapa istilah jargon juga digunakan sebagai nama metasyntactic; muntah dan bergumam, misalnya. Lihat juga Commonwealth Hackish untuk diskusi tentang berbagai variabel metasyntactic yang ditemukan di Inggris Raya dan Persemakmuran.

ColinYounger
sumber
Harus mengatakan, saya dari NZ dan saya belum pernah mendengar tentang 'blarg' ATAU 'wibble'.
Itu cukup bagus. Ini rumit. Terima kasih Bung.
Tarik
OMG, akun QL saya adalah qux. Terkejut ...
@Colin - Saya mengubah tautan ke situs lain, karena yang ada sedang offline.
dari sini
Saya menemukan beberapa variabel metasyntactic menarik lainnya dari sebuah makalah MIT 1964 tentang LISP (yang tentu saja juga memiliki foo): chi / boston new york / steak mentega bayam / glitch crock glitch / poot toop / toot toot / isthisatrivialexcercise / ploop flot top / snap kresek pop / satu dua tiga / pesawat perontok. Lihat jawaban saya untuk info lebih lanjut: programmers.stackexchange.com/questions/69788/…
Hugo
25

Wikipedia memberikan definisi ini dari Variabel Metasyntactic :

Dalam ilmu komputer, programmer menggunakan variabel metasyntactic untuk mendeskripsikan nama placeholder atau istilah alias yang biasa digunakan untuk menunjukkan materi pelajaran yang sedang dibahas atau anggota sewenang-wenang dari suatu kelas yang sedang dibahas. Penggunaan variabel metasyntactic sangat membantu dalam membebaskan programmer dari membuat variabel bernama logis, yang sering berguna ketika membuat atau mengajar contoh-contoh algoritma. Kata foo adalah contoh utama.
Istilah "variabel metasyntactic" terutama ditemukan dalam literatur informal. Kadang-kadang juga digunakan sebagai sinonim untuk metavariable.
Simbol atau kata apa pun yang tidak melanggar aturan bahasa dapat digunakan sebagai variabel metasintactic, tetapi kata-kata yang tidak masuk akal biasanya digunakan. Konsep yang sama digunakan di bidang lain di mana ia dinyatakan oleh istilah-istilah seperti variabel skematik (lihat bentuk logis ).
Dengan analogi matematis: Variabel metasyntactic adalah kata yang merupakan variabel untuk kata lain, sama seperti dalam huruf aljabar digunakan sebagai variabel untuk angka.

Artikel ini juga memberikan contoh umum variabel tersebut dalam berbagai bahasa pemrograman:

C
Dalam contoh bahasa pemrograman C berikut ini, nama fungsi foo dan bilah nama variabel keduanya adalah variabel metasintaktis. Baris yang dimulai dengan // adalah komentar.

// The function named foo
int foo(void)
{
   // Declare the variable bar and set the value to 1
   int bar = 1;

   return bar;
}

Python

Spam, ham, dan telur adalah variabel metasintaktis utama yang digunakan dalam bahasa pemrograman Python. [5] Ini adalah referensi ke sketsa komedi terkenal, Spam, oleh Monty Python, eponim bahasa tersebut. [6] Dalam contoh berikut, spam, ham, dan telur adalah variabel metasyntactic dan baris yang dimulai dengan # adalah komentar.

# Define a function named spam
def spam():

    # define the variable ham
    ham = "Hello World!"

    #define the variable eggs
    eggs = 1

    return

Rubi

Pada contoh berikut ini, baz, foo, dan bar adalah variabel metasyntactic dan baris yang diawali dengan # adalah komentar.

# Declare the variable foo and set equal to 1
foo = 1

# Declare the variable bar and set equal to 2
bar = 2

# Declare the method (function) named baz, which prints the text 'Hello world'
def baz
   puts 'Hello world'
end
Matthieu
sumber
19

Inilah jawaban wikipedia:

Istilah foobar, foo, bar, dan baz, adalah nama placeholder yang umum (juga disebut sebagai variabel metasyntactic) yang digunakan dalam pemrograman komputer atau dokumentasi terkait komputer. Mereka biasanya digunakan untuk mewakili nilai-nilai yang tidak diketahui, biasanya ketika menggambarkan sebuah skenario di mana tujuan dari nilai-nilai yang tidak diketahui dipahami, tetapi nilai-nilai tepatnya mereka sewenang-wenang dan tidak penting. Istilah ini dapat digunakan untuk mewakili bagian mana pun dari sistem atau ide yang rumit, termasuk data, variabel, fungsi, dan perintah. Kata-kata itu sendiri tidak memiliki arti dalam penggunaan ini, dan hanyalah representasi logis, seperti huruf x dan y yang digunakan dalam aljabar. Foobar sering digunakan sendiri; foo, bar, dan baz biasanya digunakan dalam urutan itu, ketika diperlukan banyak entitas.

Foo telah memasuki bahasa Inggris sebagai neologisme dan dianggap oleh banyak orang sebagai contoh kanonik dari variabel metasyntactic. Eric S. Raymond menyebutnya sebagai "hacker penting" bersama kludge dan cruft. [1]

http://en.wikipedia.org/wiki/Foo

Dan dari RFC 3092:

Ketika digunakan dalam kaitannya dengan 'bar', ini biasanya dilacak ke akronim slang Angkatan Darat era WW II FUBAR ('Fucked Up Beyond All Repair'), kemudian dimodifikasi menjadi foobar. Versi awal File Jargon [JARGON] menafsirkan perubahan ini sebagai bowdlerization pasca-perang, tetapi sekarang tampaknya lebih mungkin bahwa FUBAR sendiri merupakan turunan dari 'foo' yang mungkin dipengaruhi oleh 'furchtbar' Jerman (mengerikan) - 'foobar' mungkin sebenarnya telah menjadi bentuk aslinya.

Karena, tampaknya, kata 'foo' sendiri memiliki sejarah sebelum perang langsung dalam strip komik dan kartun. Dalam kartun Warner Brothers 1938 yang disutradarai oleh Robert Clampett, "The Daffy Doc", versi paling awal dari Daffy Duck mengangkat sebuah tanda bertuliskan "SILENCE IS FOO!" ... (snip)

http://www.faqs.org/rfcs/rfc3092.html

Daniel A. White
sumber
6
atau Anda bisa mengakuinya berasal dari fubar = '"f" di atas semua pengakuan'
Jonathan Fingland
4
@ Jonathan Fingland: Tidak, tidak. (Faktanya, "foo" mungkin ada sebelum "foobar" dan "FUBAR".) Lihat RFC 3092 dan entri File Jargon untuk "foo".
Daniel Pryden
@Aniel, referensi yang sangat baik. Ditambahkan
Jonathan Fingland
19

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:

Di Foo-isme

Lounger berpikir bahwa bisnis Foo-isme ini telah dijalankan terlalu jauh oleh para pendukungnya yang salah arah, dan dengan ini dan seterusnya mengambil sikap menentang penyalahgunaannya. Mungkin saja tidak ada foo seperti foo lama, dan kita sudah terbiasa, tapi bagaimanapun, foo dan uangnya adalah pesta. (Suara dari bangku - "Jangan foo-lish!")

Sebagai sumpah serapah, tentu saja, "foo!" memiliki posisi yang pasti dan mungkin tidak tergantikan dalam bahasa kita, meskipun kami khawatir bahwa penggunaan berlebihan yang saat ini dikenakan dapat mengakibatkan jatuh ke dalam pelepasan awal (dan, sayangnya, gelap). Kami mengucapkan sangat sayang karena penggunaan kata yang tepat dapat menghasilkan insiden bahagia seperti berikut ini.

Itu adalah kuliah termodinamika 8.50 oleh Profesor Slater di Kamar 6-120. Profesor itu, setelah menutupi bagian depan papan tulis, mengatur pegangan yang mengoperasikan mekanisme pengangkatan, sementara itu berpaling ke kelas untuk melanjutkan diskusi. Papan depan perlahan-lahan, dengan megahnya, mengangkat dirinya sendiri, memperlihatkan papan di belakangnya, dan di papan itu, tertulis besar, simbol-simbol yang dieja "FOO"!

Surat kabar The Tech , setahun sebelumnya, Surat kepada Editor, September 1937 :

Pada saat kereta telah mencapai stasiun itu, para neophytes begitu penuh dengan cerita-cerita tentang kemuliaan Phi Omicron Omicron, yang biasanya disebut sebagai Foo, sehingga mereka menjadi mangsa yang mudah.

...

Bukannya saya keberatan kehilangan empat putra pertama saya karena Grand dan Persaudaraan Universal Phi Omicron Omicron, tetapi saya berharap putra kelima saya, bayi saya, setidaknya harus diperingatkan terlebih dahulu.

Semoga milikmu,

Marah Ibu Lima.

Dan The Tech pada bulan Desember 1938 :

Kecenderungan pemikiran umum mungkin paling baik ditafsirkan dari pernyataan yang dibuat di akhir surat suara. Satu suara mengatakan, '"Saya tidak berpikir apa yang saya lakukan adalah urusan Pulver," sementara yang lain hanya menambahkan singkat, "Foo."


Yang pertama didokumentasikan "foo" di kalangan tech mungkin 1959 's Kamus Bahasa TMRC :

FOO: suku kata suci (FOO MANI PADME HUM); untuk diucapkan hanya ketika di bawah inspirasi untuk berkomunikasi dengan Dewa. Kewajiban pertama kami adalah membuat Foo Counters berputar.

Ini dijelaskan di FOLDOC . Kompiler kamus Pete Samson berkata pada 2005:

Penggunaan kata ini di TMRC berarti saya datang ke sana. Penghitung foo bisa saja memiliki lampu berkedip acak, atau bisa menjadi penghitung nyata dengan input yang tidak jelas.

Dan dari Jargon File 4.0.0 tahun 1996 :

Versi sebelumnya dari leksikon ini berasal 'baz' sebagai korupsi Stanford bar. Namun, Pete Samson (penyusun leksikon TMRC) melaporkan bahwa itu sudah berlaku ketika ia bergabung dengan TMRC pada tahun 1958. Ia mengatakan "Itu berasal dari" Pogo ". Albert the Alligator, ketika kesal atau marah, akan berteriak 'Bazz Fazz!' atau 'Rowrbazzle!' Tata letak klub dikatakan sebagai model county Rowrfolk dan Bassex (mistis) New England (Rowrbazzle berbaur dengan (Norfolk / Suffolk / Middlesex / Essex). "

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) :

Penelitian lebih lanjut di bawah dana gabungan Foocom dan Anarcom memperluas undang-undang tersebut menjadi mencakup semua dan berlaku secara universal: Jika ada yang salah, itu akan!

Juga 1964 MIT Voo Doo (PDF) referensi penggunaan TMRC:

Iya! Saya ingin menjadi pelanggan instan dan salju yang sukses. Kirimi saya gelar di: ...

  • Penghitung Foo

  • Foo Jung


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":

Mungkin awalnya disebarkan melalui manual DECsystem oleh Digital Equipment Corporation (DEC) pada 1960-an dan awal 1970-an; penampakan dikonfirmasi ada kembali ke 1972.

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:

Jadi, karena "FOO" adalah nama untuk dirinya sendiri, "COMITRIN" akan memperlakukan "FOO" dan "(FOO)" dengan cara yang persis sama.

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:

mobil [((FOO. CROCK). GLITCH)]

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:

EXPLODE, seperti PRIN1, memasukkan garis miring, jadi (EXPLODE (QUOTE FOO / BAR)) PRIN1's as (FOO // / BAR) atau PRINC's as (FOO / BAR).


Beberapa pengingatan lagi.

@Walter Mitty ingat di situs ini pada 2008:

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.

John V. Everett mengenang pada tahun 1996:

Ketika saya bergabung dengan DEC pada tahun 1966, foobar sudah umum digunakan sebagai nama file yang dibuang. Saya percaya fubar menjadi foobar karena PDP-6 mendukung enam nama karakter, meskipun saya selalu menganggap istilah tersebut bermigrasi ke DEC dari MIT. Ada banyak tipe MIT di DEC pada masa itu, beberapa di antaranya telah bekerja dengan 7090/7094 CTSS. Karena 709x juga merupakan mesin 36 bit, foobar mungkin telah digunakan sebagai nama file umum di sana.

Foo dan bar juga biasa digunakan sebagai ekstensi file. Karena editor teks pada hari itu beroperasi pada file input dan menghasilkan file output, itu biasa untuk mengedit dari file .foo ke file .bar, dan kembali lagi.

Itu juga umum untuk menggunakan foo untuk mengisi buffer ketika mengedit dengan TECO. String teks untuk secara tepat mengisi satu blok disk adalah IFOO $ HXA127GA $$. Hampir semua programmer PDP-6/10 yang saya gunakan menggunakan string perintah yang sama.

Daniel PB Smith pada tahun 1998:

Dick Gruen memiliki perangkat di kamar asramanya, kumpulan baterai-B, resistor, kapasitor, dan tabung neon NE-2 yang biasa, yang ia sebut "penghitung foo." Ini sekitar tahun 1964 atau lebih.

Robert Schuldenfrei pada tahun 1996:

Penggunaan FOO dan BAR sebagai contoh nama variabel kembali setidaknya ke tahun 1964 dan IBM 7070. Ini juga mungkin lebih tua, tetapi di situlah saya pertama kali melihatnya. Ini di Assembler. Apa yang akan menjadi setara bilangan bulat FORTRAN? IFOO dan IBAR?

Paul M. Wexelblat pada tahun 1992:

Assembler PDP-1 awal menggunakan dua karakter untuk simbol (mesin 18 bit) pemrogram selalu meninggalkan beberapa kata sebagai ruang tambalan untuk memperbaiki masalah. (Lompat untuk menambal ruang, lakukan kode baru, lompat ke belakang) Ruang itu secara konvensional bernama FU: yang merupakan singkatan dari Fxxx Up, tempat Anda memperbaiki Fxxx Ups. Ketika diucapkan, itu dikenal sebagai ruang FU. Assemblers kemudian (mis. MIDAS mengizinkan tiga tag char sehingga FU menjadi FOO, dan karena SEMUA programmer PDP-1 akan memberi tahu Anda bahwa itu adalah ruang FOO.

Bruce B. Reynolds pada tahun 1996:

Di sisi IBM dari FOO (FU) BAR adalah penggunaan sisi BAR sebagai Register Alamat Dasar; pada pertengahan 1970-an programmer CICS harus khawatir tentang berbagai xxxBAR ... Saya pikir salah satunya adalah FRACTBAR ...

Inilah IBM "BAR" langsung dari tahun 1955.


Referensi awal lainnya:


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:

Hugo
sumber
13

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:

public abstract class Animal
{
    public abstract void speak();
}

public class Cat 
    extends Animal
{
    public abstract void speak()
    {
        System.out.println("meow");
    }
}

public class Dog
    extends Animal
{
    public abstract void speak()
    {
        System.out.println("bark");
    }
}

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:

public abstract class Foo
{
    public abstract void star();
}

public class Bar
    extends Foo
{
    public abstract void star()
    {
        System.out.println("A");
    }
}

public class Car
    extends Foo
{
    public abstract void star()
    {
        System.out.println("b");
    }
}

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.

TofuBeer
sumber
ah, jawaban yang nyata!
nickf
1
Ya, tetapi mengapa Foo dan Bar secara khusus? Kenapa tidak Lorum dan Ipsum?
en.wikipedia.org/wiki/Foo bisa jadi akurat ...
@ KnowBeer Yap, mereka "variabel metasyntactic". @masher melihat jawaban saya dengan banyak referensi mengapa Foo dan Bar dan bukan Lorem dan Ipsum. programmers.stackexchange.com/questions/69788/... Bahkan, ada banyak variabel metasyntactic berbeda yang telah digunakan selama bertahun-tahun, dan di tempat yang berbeda.
Hugo
7

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

Cetra
sumber
ini tidak menjelaskan mengapa
Saya telah menemukan banyak referensi "foo" pertama dan kemudian "bar" dari MIT dan juga DEC (keduanya di Massachusetts), dalam pekerjaan mereka tentang LISP dan PDP-1 dan Project MAC dari tahun 1964 dan seterusnya. Itu ide yang bagus, tetapi saya tidak dapat menemukan referensi ke "sinyal foo terbalik". Lebih lanjut di sini: programmers.stackexchange.com/questions/69788/…
Hugo
7

Dari File Jargon http://www.catb.org/jargon/html/F/foo.html

foo: / foo /

  1. interj. Istilah jijik.
  2. [sangat umum] Digunakan secara umum sebagai nama sampel untuk apa pun, khususnya. program dan file (khususnya file awal).
  3. Pertama pada daftar standar variabel metasyntactic yang digunakan dalam contoh sintaks. Lihat juga bar, baz, qux, quux, garply, waldo, fred, plugh, xyzzy, thud.

bar: / bar /, n.

  1. [sangat umum] Variabel metasyntactic kedua, setelah foo dan sebelum baz. “Misalkan kita memiliki dua fungsi: FOO dan BAR. FOO memanggil BAR .... "
  2. Seringkali ditambahkan ke foo untuk menghasilkan foobar.
pel
sumber
5

Menurut http://en.wikipedia.org/wiki/Foo :

Asal usul istilah 'tidak diketahui dengan pasti, dan beberapa teori anekdotal telah dikembangkan untuk mengidentifikasi mereka. Foobar mungkin berasal dari akronim militer vulgar FUBAR, atau mungkin telah mendapatkan popularitas karena fakta bahwa itu diucapkan sama.

RichieHindle
sumber
4

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.

Walter Mitty
sumber
+1 untuk menyaksikan salah satu penggunaan Foo Bar yang paling awal :) Bagaimana sebenarnya Foo dan Foo Bar sebenarnya digunakan di sana?
Hugo
NB Saya sudah memasukkan kutipan Anda dalam jawaban besar saya: programmers.stackexchange.com/questions/69788/…
Hugo
2

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

Chris
sumber
0

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 ()).

TheTXI
sumber
-3

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.

John
sumber
2
Perhatikan bahwa tepat di bawah pertanyaan ada spanduk: Kami mencari jawaban panjang yang memberikan beberapa penjelasan dan konteks. Jangan hanya memberikan jawaban satu baris; jelaskan mengapa jawaban Anda benar, idealnya dengan kutipan. Jawaban yang tidak termasuk penjelasan dapat dihapus. Jawaban Anda tidak banyak memberi penjelasan; saat ini itu hanyalah sebuah opini.
Martijn Pieters
Ada banyak jawaban pendek lainnya. Mengapa tidak memberikan argumen jika Anda tidak setuju dengan apa yang saya katakan alih-alih menunjukkan teknis yang tidak berlaku?
John
sunting di rev 2 menjadikan jawaban ini lebih buruk daripada sebelumnya (meskipun sulit membayangkan apa yang bisa lebih buruk): sekarang ini hanya pengulangan jawaban lain yang telah diposting 4 tahun lalu
nyamuk