Kaynak kod örneklerinde “foo” ve “bar” kullanımının geçmişi nedir?


60

Neden birçok kod örneği, özellikle de öğreticiler “Foo” ve “Bar” isimlerini bu kadar sık ​​kullanıyor? Neredeyse bir standart.

Örneğin:

void foo(char* bar) {
  printf("%s", bar);
}

2
Hiçbir fmsf'nin gönderisinin hiçbiri RichB'in zorbalığından korunmuyor gibi görünüyor.

O ben yazdıklarıma değiştirmeye sever Evet, ben onunla takıntılı düşünmeye başladım

4
"neden foo bar?" başlık çok iyi değil, IMHO
Jeff Atwood

1
Doğru etimoloji (İkinci Dünya Savaşı ABD Ordusu argo terimleri ailesinin en popüler olanı) ve kaynağımla ilgili bir cevap ekledim.

Bu bir meme - bulaşıcı bir fikir. Bu kendi gerekçesidir.
Mike Dunlavey

Yanıtlar:


65

Foo ve bar , ABD Ordusu İkinci Dünya Savaşı'nın kısaltması olan FUBAR'ın, "Tüm Tanımaların Ötesinde Kurgulanmasından" geliyor. Bu terimlerin bir ailesi, Kuzey Afrika ve Sicilya kampanyalarında (1942-43) yaygın olarak kullanılmaya başlandı. Rick Atkinson'un mükemmel Savaş Günü: Sicilya ve İtalya'daki Savaş, 1943-1944 bunların bir listesini verir. Örneğin, bir JANFU, "Ortak Ordu Donanması F Up" dır. Örneğin, Husky Operasyonu filosunun işgal ettiği bir saldırı filosunun 23 Ordu Hava Kuvvetleri C-47'yi düşürmesiyle , plaj başını güçlendirmek için paraşütçü taşıyan nakliye şirketleri .

Güncelleme: Vikipedi, Atkinson tarafından listelenen bazı orijinal II. Dünya Savaşı'ndakileri içeren ilgili kısaltmalar listesine sahiptir .

Herhangi bir programcı, değişkenleri adlandırmak için foo ve bar'ı kullanma motivasyonunu anlayacaktır . Onlar kesinlikle başlangıçtan beri C / UNIX kültürünün bir parçası olmuşlardı ve @Walter Mitty'nin belirttiği gibi, önceden belirttiler.

Güncelleme (10/5/2009): İşte Atkinson açıklaması:

Yaygın "medenilikleri", onları sıkı sıkıya dayanma konusunda temkinli hale getirdi. Sicilya'ya gitmiş bir donanma rezervi komutanı olan John Mason Brown, “Pelerin ve kılıç kılıcıyla dolu romantikler değildik” dedi. “Son savaş buna çok yakındı.” Askeri yaşam ironik duyarlılıklarını ve şüpheciliğini arttırdı. Askerin beklentilerini azaltan tek bir ham kısaltma - SNAFU, "normal durum, hepsi berbat" - GI sinizminin kelime hazinesi haline geldi: SUSFU (durum değişmedi, hala berbat); FUMTU (her zamankinden daha fazla berbat); JANFU (ortak Ordu Donanması sikişmesi); JAAFU (ortak Anglo-Amerikan sikişi); FUAFUP (becerdin ve düzgün becerdin); ve FUBAR (tüm tanınmanın ötesine geçti) [Atkinson, s. 36].

Güncelleme (23.07.2011): @Hugo, askeri olmayan öncüllerin fantastik bir listesine sahiptir .


3
Etimolojiye eklemek için: "FUBAR, Almanca sözcük furchtbar kelimesinden etkilenmiş, korkunç anlamına gelir. Yumuşak bir cht ile telaffuz edilir ve muhtemelen II. Dünya Savaşı sırasında geçiş yaptı"
Mark

4
@Mark, Alman Wikipedia (de.wikipedia.org/wiki/Fubar), bunun sahte bir taklidi olabileceğini öne sürüyor. Ayrıca Warner Brother'ın 1938 tarihli karikatürü "The Daffy Doc" ta "SILENCE IS FOO" tabelası gibi öncüllere de işaret ediyor.

4
@Jim Ferrans: FUBAR muhtemelen "foo" ile "bar" kullanımını etkilemiş olsa da, "foo" nun WWII'yi iyi bir şekilde önlediğine ve en azından 1930'lara referansta bulunduğunu, yorumunuzun gösterdiğine dair güçlü kanıtlar var. Cevabınızın gövdesinde bunu söylemek iyi olabilir.
Daniel Pryden

Evet, foo kesinlikle İkinci Dünya Savaşından önce. Aslında, 1938’den bu yana ne kadar yaygın olduğunu söyleyen bir MIT gazetesi buldum: “Tabii ki,“ elbette, ”foo!” Dilimizde kesin ve muhtemelen yeri doldurulamaz bir konum var; halihazırda maruz kaldığı kullanım, erken (ve ne yazık ki karanlık bir kayıtsızlığa) düşmesine neden olabilir. ” Aynı gazetede daha fazla ve 1937 referans için cevabımı görün: programmers.stackexchange.com/questions/69788/…
Hugo

59

Sanırım fubar'ın fonetik telaffuzu.

Bunun anlamı:

  • F * cked
  • yukarı
  • ötesinde
  • Herşey
  • Tamir etmek

18
Onarım veya Tanıma; P

10
"Küfürlü", kibar davranmaya ihtiyaç duyulduğunda sıklıkla kullanılır.

30
tamir etmek? nah .. tanıma
hasen

6
Bu "tanıma". Rick Atkinson'un Savaş Günü'nden alıntılara bakın: stackoverflow.com/questions/262271/…

7
FUBAR'ın İkinci Dünya Savaşı döneminde askeri argoya girmesinden önce, 1930'larda "foo" nun 1930'larda saçma sapan bir kelime olarak kullanıldığına dair güçlü kanıtların (bkz. RFC 3092, Jargon Dosyası ve buradaki diğer cevaplar).
Daniel Pryden

41

Yeni Hacker'ın Sözlük bu konuda çok iyi bir giriş var - ve bunu Vikipedi daha bu tür şeyleri daha iyi bir kaynak olarak görüyoruz:

metasyntactic değişkeni /n./

Örneklerde kullanılan ve tartışma konusu olanın veya tartışma konusu olan bir sınıfın herhangi bir rastgele üyesinin ne anlama geldiğini anlamak için kullanılan bir ad. Foo kelimesi kanonik bir örnektir. Kafa karışıklığını önlemek için, bilgisayar korsanları hiçbir zaman (hiç, neredeyse hiç) 'foo' veya onun gibi başka sözcükleri hiçbir şey için kalıcı adlar olarak kullanmazlar. Dosya adlarında ortak bir kural, metasyntactic değişkenli bir adla başlayan herhangi bir dosya adının, herhangi bir zamanda silinebilecek bir karalama dosyası olduğu şeklindedir.

Bir dereceye kadar, bir kişinin tercih ettiği metasintaktik değişkenlerin listesi kültürel bir imzadır. Hem seri halinde (ilgili değişken veya nesne grupları için kullanılır) hem de tekil olarak görülürler. İşte birkaç ortak imza:

foo, bar, baz, quux, quuux, quuuux ...:
MIT / Stanford kullanımı, şimdi her yerde bulundu (büyük ölçüde bu sözlüğün ilk sürümleri için teşekkürler!). MIT'de (ancak Stanford'da değil) baz 1970'lerde ve 80'lerde bir süre kullanımdan çıktı. Bu dizinin son zamanlardaki genel bir mutasyonu, quux'dan önce qux ekler.

bazola, ztesch:
Stanford ('70'lerin ortalarından itibaren).

foo, bar, thud, grunt:
Bu seri CMU'da popülerdi. CMU ile ilişkili diğer değişkenler gorp içerir.

foo, bar, fum:
Bu serinin XEROX PARC'de ortak olduğu bildiriliyor.

fred, barney:
fred girişine bakınız. Bunlar İngilizcilik olma eğilimindedir.

corge, grault, flarp:
Rutgers Üniversitesi'nde ve GOSMACS korsanları arasında popüler.

zxc, spqr, wombat:
Cambridge Üniversitesi (İngiltere).

shme
Berkeley, GeoWorks, Ingres. Seslendirilmiş / shme / kısa / e /.

Snork
Brown Üniversitesi, 1970'lerin başında.

foo, bar, zot
Helsinki Teknoloji Üniversitesi, Finlandiya.

blarg, wibble
Yeni Zelanda.

toto, titi, tata, tutu
Fransa.

pippo, pluto, paperino
İtalya. Pippo / pee'po / ve Paperino / pa-per-eee-no / Goofy ve Donald Duck'ın İtalyan isimleridir.

aap, noot,
Hollanda ile bağları . Bunlar bir çocuğun bir Hollandalı yazım tahtasında hecelemeyi öğrendiği ilk kelimeler.

Bütün bunlardan sadece 'foo' ve 'bar' evrenseldir (ve neredeyse baz). Foobar ve foobaz bileşikleri de çok geniş bir para birimine sahiptir.

Bazı jargon terimleri ayrıca metasintaktik isimler olarak da kullanılır; Örneğin, balf ve mumble. Ayrıca, Büyük Britanya ve İngiliz Milletler Topluluğu'nda bulunan çeşitli metasintaktik değişkenlerin tartışılması için İngiliz Milletvekili Hackish'e bakınız.


Söylemeliyim ki, Yeni Zelanda'lıyım ve 'blarg' VEYA 'wibble'ı hiç duymadım.

Çok güzeldi. Ayrıntılı. Teşekkürler dostum.
Tarik

OMG, QL hesabım qux. Şok ...

@Colin - Mevcut olan çevrimdışı olduğu için bağlantıyı farklı bir siteye değiştirdim.
therefromhere

Bir MIT 1964 belgesinde LISP (tabii ki aynı zamanda foo da vardı) hakkında bir başka ilginç metasintaktik değişken buldum: chi / boston new york / ıspanak yağı bifteği / foo güveç aksamı / poot toop / toot toot / isthisatrivialexcercise / ploop flot çatırtı pop / bir iki üç / düzlem alt harmanlayıcı. Daha fazla bilgi için cevabımı gör: programmers.stackexchange.com/questions/69788/…
Hugo

25

Wikipedia, Metasyntactic Variable'ın bu tanımını verir :

Bilgisayar bilimlerinde, programcılar, tartışılan konuyu veya tartışılan bir konunun rastgele bir üyesini belirtmek için yaygın olarak kullanılan bir yer tutucu adını veya takma adını tanımlamak için metasintaktik değişkenleri kullanır. Bir metasintaktik değişkenin kullanılması, bir programcının bir algoritma örneği oluştururken veya öğretirken genellikle yararlı olan, mantıksal olarak adlandırılmış bir değişken oluşturmasından kurtulmasına yardımcı olur. Foo kelimesi ana örnektir.
"Metasintaktik değişken" terimi öncelikle enformel literatürde bulunur. Bazen metavariable ile eşanlamlı olarak da kullanılır.
Dilin kurallarını ihlal etmeyen herhangi bir sembol veya kelime bir metasyntactic değişkeni olarak kullanılabilir, fakat saçma kelimeler sıkça kullanılır. Aynı kavram, şematik değişken gibi terimlerle ifade edildiği diğer alanlarda da kullanılır ( mantıksal forma bakınız ).
Matematiksel analoji: Metasintaktik bir değişken, cebir harflerinde olduğu gibi, sayılar için değişken olarak kullanıldığı gibi, diğer kelimeler için değişken olan bir kelimedir.

Bu makale ayrıca farklı programlama dillerinde bu değişkenlerin ortak örneklerini verir:

C
Aşağıdaki C programlama dili örneğinde, foo fonksiyon ismi ve değişken isim çubuğu hem metasintaktik değişkenlerdir. // ile başlayan satırlar yorumdur.

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

   return bar;
}

piton

Spam, jambon ve yumurta Python programlama dilinde kullanılan başlıca metasintaktik değişkenlerdir. [5] Bu, ünlü komedi taslağı Spam'ın dilin eşanlamı Monty Python tarafından yapılan atıftır. [6] Aşağıdaki örnekte spam, jambon ve yumurta metasintaktik değişkenlerdir ve # ile başlayan satırlar yorumdur.

# Define a function named spam
def spam():

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

    #define the variable eggs
    eggs = 1

    return

Yakut

Aşağıdaki örnekte baz, foo ve bar metasyntactic değişkenleridir ve # ile başlayan satırlar yorumdur.

# 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

19

İşte wikipedia'nın cevabı:

Foobar, foo, bar ve baz terimleri, bilgisayar programcılığı veya bilgisayarla ilgili dokümantasyonda kullanılan genel yer tutucu adlarıdır (metasintaktik değişkenler olarak da adlandırılır). Genellikle bilinmeyen değerleri temsil etmek için kullanılır, genellikle bilinmeyen değerlerin amacının anlaşıldığı bir senaryo tanımlanırken, ancak kesin değerleri keyfi ve önemsizdir. Terimler, veriler, değişkenler, fonksiyonlar ve komutlar dahil, karmaşık bir sistemin veya fikrin herhangi bir bölümünü temsil etmek için kullanılabilir. Kelimelerin kendilerinin bu kullanımda bir anlamı yoktur ve yalnızca x ve y harflerinin cebirde kullanıldığı gibi yalnızca mantıksal temsilleridir. Foobar genellikle yalnız kullanılır; foo, bar ve baz, genellikle birden fazla varlığa ihtiyaç duyulduğunda bu sırada kullanılır.

Foo, İngilizceye bir neologizm olarak girmiştir ve birçok kişi tarafından bir metasintaktik değişkenin kanonik örneği olarak kabul edilir. [Kaynak belirtilmeli] Bilgisayar programlama örneklerinde (bazen "sadece bir kez" olarak ifade edilir) ve sözde kodda yaygın olarak kullanılır. Eric S. Raymond, çamur ve kabadayı yanında “önemli bir hackerism” olarak nitelendirdi. [1]

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

Ve RFC 3092'den:

'Bar' ile birlikte kullanıldığında, genellikle WW II döneminde Ordu argo kısaltması FUBAR'a ('Tüm Onarımın Ötesinde Çuvalladı') izlenir, daha sonra foobar olarak değiştirilir. Jargon Dosyasının ilk versiyonları [JARGON], bu değişikliği savaş sonrası bir bowlingleşme olarak yorumladı; aslında orijinal haliyle.

Çünkü, görünüşte, 'foo' kelimesinin, çizgi romanlarda ve karikatürlerde ani bir savaş öncesi geçmişi vardı. Robert Clampett'in yönettiği 1938 Warner Brothers karikatüründe, "Daffy Doc", Daffy Duck'ın çok erken bir sürümü, "SILENCE FOO!" Diyen bir tabela tutuyor ...

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


6
ya da sadece kabul ettin fubar = '"f" tüm tanıma ötesinde'
Jonathan Fingland

4
@ Jonathan Fingland: Hayır değil. (Aslında, "foo" muhtemelen "hem foobar" hem de "FUBAR" dan önce gelir.) Bkz. "Foo" için RFC 3092 ve Jargon File girdisine bakın.
Daniel Pryden

@Daniel, Mükemmel referans. Eklendi
Jonathan Fingland

19

tl; Dr.

  • Metasintaktik değişkenler olarak "Foo" ve "bar", MIT ve DEC tarafından popüler hale getirildi, ilk referanslar 1964'ten itibaren LISP ve PDP-1 ve Project MAC üzerinde çalışıyor.

  • Bu insanların birçoğu, MIT’nin Tech Model Demiryolu Kulübü’deydi, burada 1959’da teknoloji çevrelerinde ilk "foo" kullanımını (ve 1958’de bir değişken) bulduk.

  • Hem "foo" hem de "bar" (ve hatta "baz") popüler kültürde, özellikle birçok TMRC üyesi tarafından okunacak olan Smokey Stover ve Pogo çizgi romanlarından iyi bilinmektedir.

  • Ayrıca, askeri FUBAR'ın popülerliğine katkıda bulunmuş gibi görünüyor.


Saçma bir kelime olarak yalnız "foo" kullanımı, 20. yüzyıl başlarında askeri FUBAR'ın olduğu gibi popüler kültürde oldukça iyi belgelenmiştir. (Bazı arka plan okuma: FOLDOC FOLDOC Jargon Dosyası Jargon Dosyası Vikipedi RFC3092 )


Tamam, bazı referanslar bulalım.

DURDUR BASIN! Bu yanıtı gönderdikten sonra, Cuma 14 Ocak içinde "foo" hakkında bu mükemmel makale keşfetti 1938 sürümüne Tech ( "MIT'nin eski ve en büyük gazetesi ve web üzerinde yayınlanan ilk gazete"), Cilt LVII'nin. 57, Fiyat Üç Kuruş:

Foo-ism'de

Şezlong, Foo-ism'in bu işinin yanlış yönlendirilmiş savunucuları tarafından çok ileriye taşındığını düşünüyor ve bununla kötüye kullanımına karşı durur. Eski bir foo gibi bir foo olmayabilir, ve biziz, ama yine de, bir foo ve parası bir parti. (Çamaşırhanelerin sesi- "Salak olma!")

Bir patlayıcı olarak, elbette, "foo!" Dilimizde kesin ve muhtemelen yeri doldurulamaz bir konuma sahip olmasına rağmen, halen maruz kaldığı aşırı kullanımın, erken (ve ne yazık ki, karanlık) bir unutulmaya düşmesine yol açabileceğinden korkuyoruz. Ne yazık ki, çünkü kelimenin doğru kullanılması, aşağıdaki gibi mutlu olaylara neden olabilir.

Oda 6-120'de Profesör Slater tarafından 8.50 Termodinamik dersiydi. Tahtanın ön yüzünü kaplayan profesör, kaldırma mekanizmasını çalıştıran kolu ayarladı ve bu arada tartışmaya devam etmek için sınıfa döndü. Ön pano yavaşça, görkemli bir şekilde kendini kaldırdı, tahtanın arkasını ortaya çıkardı ve o panoda "FOO" yazan simgeleri büyük harflerle yazdı!

Tech gazetesi , bir yıl önce, Editöre Mektup, Eylül 1937 :

Tren istasyona ulaştığında, neofit'ler, genellikle Foo olarak adlandırılan Phi Omicron Omicron'un şerefine, avlarının kolay olduğu hikayeleriyle doludur.

...

İlk dört oğlumu Phi Omicron Omicron'un Büyük ve Evrensel Kardeşliği'nde kaybettiğimi düşünmüyorum ama beşinci oğlum, bebeğimin en azından önceden uyarılmasını diliyorum.

Umarım sizindir,

Beşinci Kızgın Annesi.

Ve Aralık 1938'de Teknoloji :

Genel düşünce eğilimi, oy pusulasındaki açıklamalardan en iyi şekilde yorumlanabilir. Bir oylama, '' Yaptıklarımın Pulver'in işi olduğunu sanmıyorum '' derken, bir diğeri de sadece "Foo" yu çekti.


Teknoloji çevrelerinde ilk belgelenmiş "foo" muhtemelen 1959 'in TMRK Dili Sözlüğü :

FOO: Kutsal hece (FOO MANI PADME HUM); Sadece İlahiyat ile iletişim kurmak için ilham aldıklarında konuşma. İlk yükümlülüğümüz, Foo Sayaçları çevirmektir.

Bunlar FOLDOC'ta açıklanmıştır . Sözlüğün derleyicisi Pete Samson 2005 yılında şöyle dedi:

Bu kelimeyi TMRC antedatesinde kullanmak benim gelmemi sağlıyor. Bir foo sayacı basitçe rasgele yanıp sönen ışıklara sahip olabilir veya belirsiz bir girişi olan gerçek bir sayaç olabilir.

Ve 1996'nın Jargon Dosyası 4.0.0'dan :

Bu sözlüğün önceki sürümleri, 'baz' ı Stanford'ın bir bar yolsuzluğu olarak türetmişti. Bununla birlikte, Pete Samson (TMRC sözlüğünün derleyicisi), 1958'de TMRC'ye katıldığında zaten güncel olduğunu bildirdi. "O," Pogo "dan geldi. Sinirlendiğinde ya da kızdığında, 'Bazz Fazz!' Diye bağırdı. veya 'Rowrbazzle!' Kulüp düzeninin Rowrfolk ve Bassex (efsanevi) New England eyaletlerini (Rowrbazzle (Norfolk / Suffolk / Middlesex / Essex) ile karışmış) modellediği söylendi.

TMRK sözlüğe bir yıl önce, 1958 'nin MİT Voo Doo Gazete'de ( 'MİT Dekanları Mizah suplement ofisinde') (PDF) John Banzhaf tarafından Foocom 'Murphy ve finagle Kanunlarına' in, söz (elektrik mühendisliği öğrencisi) :

Ortak bir Foocom ve Anarcom hibesi kapsamında yapılan daha ileri araştırmalar, kanunu bütünüyle kucaklayan ve evrensel olarak uygulanabilir olacak şekilde genişletti: Eğer bir şeyler ters gidebilirse, olur!

Ayrıca 1964’teki MIT Voo Doo (PDF) , TMRC kullanımına atıfta bulunuyor:

Evet! Anlık bir başarı ve kar müşterisi olmak istiyorum. Bana bir derece gönder: ...

  • Foo Sayaçlar

  • Foo Jung


Ancak bu sorunun kod örnekleri ile ilgili olduğunu hatırlayalım, bu yüzden kodda yayınlanan "foo", "bar" ve "foobar" ı bulalım.

Yani, Jargon Dosya 4.4.7 "foobar" diyor:

Muhtemelen aslen 1960'larda ve 1970'lerin başında Digital Equipment Corporation (DEC) tarafından DECsystem kılavuzları aracılığıyla çoğaltılmıştır; orada onaylanmış manzaralar 1972'ye kadar gider.

Bulabildiğim ilk yayınlanmış referans Şubat 1964'ten kaynaklanıyor , ancak Haziran 1963'te Programlama Dili LISP'si: Bilgi Yazım Şirketi'nin Operasyonu ve Uygulamaları , birçok yazarla birlikte, ancak Timothy P. Hart ve Michael Levin dahil:

Bu nedenle, "FOO" kendi adına bir ad olduğundan, "COMITRIN" hem "FOO" hem de "(FOO)" kelimelerini aynı şekilde ele alacaktır.

Ayrıca aşağıdakiler gibi diğer metasintaktik değişkenleri içerir: FOO CROCK GLITCH / POOT TOOR / SİZE / SNAP ÇARPMASI POP / XYZ

Bunun, Ocak 1964’ün AIM-064’te MIT’in Proje MAC’indeki “foo” ya da Timothy P. Hart ve Michael Levin’in LISP Çalışmaları’nın bir sonraki referansı ile aynı olacağını düşünüyorum :

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

Gibi birçok diğer metasintaktik değişkenleri paylaşıyor: CHI / BOSTON YENİ YORK / SIKIŞMA YAĞI / FOO CROCK GLITCH / POOT TOOP / TOOT TOOT / İSTEHİRSATRIVIALEXCERCISE / PLOOP FLOT ÜSTÜ / SNAP BETON POP / BİR İKİ ÜÇ PLANLI

Hem "foo" hem de "bar" için, bulabildiğim ilk referans, Haziran 1966'daki AIM-098’deki MIT’in Project MAC’inden veya Peter Samson’dan başka hiçbirinin PDP-6 LISP’si :

PRIN1 gibi, EXPLODE de eğik çizgi ekler, yani (EXPODE (QUOTE FOO / BAR)) PRIN1 (FOO // / BAR) veya PRINC (FOO / BAR) olarak.


Biraz daha yeniden hesaplama.

@Walter Mitty bu sitede 2008 yılında hatırladı:

Foo Bar ile ilgili jargon dosyasında ikinci kez. En az 1963 yılına kadar izleyebilirim ve MIT'de Bina 26'nın ikinci katında bulunan PDP-1 seri numarası 2. Foo ve Foo Bar orada ve 1964'ten sonra MAC projesinde PDP-6 odasında kullanıldı.

John V. Everett 1996'da şöyle hatırlıyor:

1966’da DEC’e katıldığımda, foobar zaten bir dosya atma adı olarak kullanılıyordu. Fubar'ın foobar olduğuna inanıyorum, çünkü PDP-6 altı karakter ismini destekledi, ancak ben her zaman MIT'den DEC terimine geçtiğini varsaydım. O günlerde, bazıları 7090/7094 CTSS ile çalışmış olan DEC'de birçok MIT tipi vardı. 709x aynı zamanda 36 bit bir makine olduğundan, foobar burada ortak bir dosya adı olarak kullanılmış olabilir.

Foo ve bar da yaygın olarak dosya uzantıları olarak kullanılmıştır. Günün metin editörleri bir giriş dosyasında çalıştığından ve bir çıktı dosyası oluşturduğundan, bir .foo dosyasından bir .bar dosyasına düzenleme yapmak ve tekrar geri dönmek yaygındı.

TECO ile düzenleme yaparken bir tamponu doldurmak için foo kullanmak da yaygındı. Bir disk bloğunu tam olarak doldurmak için kullanılan metin dizgisi IFOO $ HXA127GA $$ idi. Çalıştığım PDP-6/10 programcılarının hemen hepsi bu aynı komut dizisini kullandı.

1998 yılında Daniel PB Smith :

Dick Gruen, yurt odasında bir B-pil, dirençler, kapasitörler ve NE-2 neon tüpleri olan "foo counter" olarak adlandırdığı bir cihaza sahipti. Bu, yaklaşık 1964 ya da öylesine olurdu.

Robert Schuldenfrei 1996'da:

FOO ve BAR'ın örnek değişken isimleri olarak kullanılması en az 1964 ve IBM 7070'e dayanıyor. Bu da daha eski olabilir, fakat ilk gördüğüm yer burası olabilir. Bu Assembler'deydi. FORTRAN tamsayı eşdeğeri ne olurdu? IFOO ve IBAR?

Paul M. Wexelblat 1992'de:

İlk PDP-1 Assembler semboller için iki karakter kullandı (18 bit makine) programcılar sorunları çözmek için her zaman birkaç kelime yama alanı bıraktılar. (Yamaya atla, yeni kod yap, geri atla) Bu alana geleneksel olarak FU adı verildi: Fxxx Up, Fxxx Ups. Konuşulduğunda FU alanı olarak biliniyordu. Daha sonra Assemblers (örneğin, MIDAS üç karakter etiketine izin verdi, bu yüzden FU FOO oldu ve ALL PDP-1 programcıları bunun FOO alanı olduğunu söyleyeceklerdi.

Bruce B. Reynolds 1996'da:

FOO (FU) BAR’ın IBM tarafında, BAR tarafının Temel Adres Kaydı olarak kullanılması; 1970'lerin ortalarında CICS programcıları çeşitli xxxBAR'ları endişelendiriyordu ... Sanırım bunlardan biri FRACTBAR ...

İşte 1955’ten kalma bir düz IBM "BAR" .


Diğer erken referanslar:


RFC3092 ve başka yerlerde önerildiği gibi foo çubuğuna "ters foo sinyali" olarak referanslar bulamamıştım.

İşte daha önceki F00'lerden bazıları: ama onların tesadüf / yanlış pozitif olduklarını düşünüyorum:


13

"foo" ve "bar" gibi kelimeler kullanmak, bildiğiniz terimlere dayanarak neleri kavrayacağınız üzerine değil kavramı üzerine odaklamanızı sağlar. Örneğin:

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");
    }
}

Yukarıdaki kod, gerçek dünyadaki şeylere dair bilginizi geri almanızı sağlar.

Önemli kısmın ne yapılmayacağı (örneğin miyav veya ağaç kabuğu baskısı) değil, nasıl yapıldığına dair bir kavramı açıklamaya çalışıyorsanız, tanıdık olduğunuz kısımları sökerek:

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");
    }
}

Şimdi gerçekte ne olduğuna odaklanmak zorundasınız, artık ne olacağını tahmin edemezsiniz.

Dolayısıyla, kısa versiyon, foo, bar ve benzerleri, içeriğin gerçekten önemli olmadığı, ancak fikrin önemli olduğu kavramları vurgulamak için kullanılıyor.


ah, gerçek bir cevap!
nickf

1
Evet, ama neden Foo ve Bar? Neden Lorum ve Ipsum değil?

en.wikipedia.org/wiki/Foo doğru olabilir ...

@TofuBeer Yep, "metasyntactic değişkenleri". @ masher neden Foo ve Bar’ın Lorem ve Ipsum’un değil de Foo ve Bar’la ilgili bir sürü referansla cevaplarıma baktım. programmers.stackexchange.com/questions/69788/… Aslında, yıllar boyunca ve farklı yerlerde kullanılmış olan birçok farklı metasintaktik değişken var.
Hugo

7

Gönderen http://en.wikipedia.org/wiki/Foobar

Teknolojide, kelime büyük olasılıkla 1960'larda ve 1970'lerin başında Digital Equipment Corporation tarafından sistem kılavuzları aracılığıyla yayınlandı. Bir başka olasılık da foobar'ın elektronikten ters çevrilmiş bir foo sinyali olarak gelişmesidir. Bunun nedeni, eğer dijital bir sinyal aktif düşükse (yani negatif veya sıfır voltaj koşulu bir "1" i temsil ediyorsa), sinyal etiketinin üzerine genellikle yatay bir çubuk yerleştirilir. Jargon Dosyası, foo'nun FUBAR'ı öldürmesi ihtimaline karşı bir dava açar.


Bu yüzden açıklamaz

1964’ten itibaren LISP ve PDP-1 ve Project MAC’in çalışmalarında MIT’den ve ayrıca DEC’in (her ikisi de Massachusetts’teki) ilk "foo" ve daha sonra "bar" ın birçok referansını buldum. Güzel bir fikir, ancak "ters foo sinyali" için referans bulamadım. Daha fazla burada: programmers.stackexchange.com/questions/69788/…
Hugo

7

Jargon Dosyalarından http://www.catb.org/jargon/html/F/foo.html

foo: / foo /

  1. interj. İğrenme terimi.
  2. [çok yaygın] Çok genel olarak kesinlikle her şey için örnek bir isim olarak kullanılır, esp. programlar ve dosyalar (özellikle kazı kazan dosyaları).
  3. İlk olarak sözdizimi örneklerinde kullanılan standart metasintaktik değişkenler listesinde. Ayrıca bakınız bar, baz, qux, quux, garply, waldo, fred, plugh, xyzzy, thud.

bar: / bar /, n.

  1. [çok yaygın] İkinci metasintaktik değişken, foo'dan sonra ve bazdan önce. “İki fonksiyonumuz olduğunu varsayalım: FOO ve BAR. FOO BAR'ı çağırıyor .... ”
  2. Genellikle foobar üretmek için foo eklenir.

5

Http://en.wikipedia.org/wiki/Foo 'ya göre :

Terimlerin kökenleri kesin olarak bilinmemektedir ve onları tanımlamak için çeşitli anekdot teorileri geliştirilmiştir. Foobar, kaba askeri kısaltma FUBAR'dan türetilebilir veya aynı şekilde telaffuz edildiğinden popülerlik kazanmış olabilir.


4

Foo Bar ile ilgili jargon dosyasında ikinci kez.

En az 1963 yılına kadar izleyebilirim ve MIT'de Bina 26'nın ikinci katında bulunan PDP-1 seri numarası 2. Foo ve Foo Bar orada ve 1964'ten sonra MAC projesinde PDP-6 odasında kullanıldı.


Foo Bar'ın en eski kullanımlarından birine tanık olmak için +1 :) Foo ve Foo Bar gerçekte orada nasıl kullanıldı?
Hugo,

PS Teklifinizi büyük cevabımı ekledim: programmers.stackexchange.com/questions/69788/…
Hugo

2

Gibi bildiğim kadarıyla, foo "fubar" bir değişiklik, açılımı askeri yakalamak phraase olan filanca geliyor " F *** ed u p b eyond bir ll r eCognition."

Sonra tekrar, başka kaynaklar olabilir.

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


0

Foo ve Bar (Aksi halde FUBAR ... F *** Tüm Tanımaların Ötesinde), sınıflar, özellikler, yöntem adları vb. Gibi şeyler için standart genel adlar olarak kullanılmıştır.

Temel olarak fikir, kodunuzu, kodun nasıl çalıştığından kurtulabilecek kadar fazla bilgi olmadan iletmektir (örneğin, kodu görmek ve yeniden adlandırırsak ne yaptığını anlamak için işlevinizin AddUser olduğunu bilmemize gerek yoktur). Foo () 'ya.


-3

Bunlar, çoğu durumda daha alakalı örnek kelimelerle ikame edilebilen saçma kelimelerdir. Birisi iyi bir örnek düşünemediğinde programlamada "foo" ve "bar" kelimeleri sıkça kullanılır.

Eğer "foo" ve "bar" FUBAR'dan türetilmişse, örnekler tanınmayacak kadar hiçbir şeye benzemediğinde, öğretim örneklerinde neden bu kadar çok profesyonel tarafından kullanılıyorlar?

Bana göre, bu kelimelerin uygunsuz kullanımı yaygın olarak kabul görmenin ötesinde olan şeydir.


2
Sorunun hemen altında bir başlık olduğunu unutmayın: Bazı açıklamalar ve bağlamlar içeren uzun cevaplar arıyoruz. Sadece bir satırlık cevap vermeyin; Cevabınızın neden doğru olduğunu, ideal olarak alıntılarla açıklayın. Açıklama içermeyen cevaplar kaldırılabilir. Cevabınız bir açıklama yolu olarak çok az sunar; şu anda sadece bir görüş.
Martijn Pieters

Başka birçok kısa cevap var. Geçerli olmayan bir teknikliğe işaret etmek yerine, söylediklerime katılmıyorsanız neden bir tartışma sunmuyorsunuz?
John

rev 2'de yapılan düzenleme bu cevabı eskisinden daha da kötü yaptı (ne daha kötüsünü hayal etmek zor olsa da): şimdi 4 yıl önce gönderilen başka bir cevabı tekrarlıyor
gnat
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.