回答:
Fooとbarは、米陸軍WWIIの頭字語FUBAR、「F-ed Up Beyond All Recognition」に由来しています。これらの用語のファミリー全体が、北アフリカおよびシチリアのキャンペーン(1942〜43年)で広く使用されるようになりました。リック・アトキンソンの優れた戦いの日:シチリアとイタリアの戦争、1943-1944は、これらのリストを提供します。たとえば、JANFUは、1943年7月11日のハスキー作戦 の侵攻艦隊が23機の空軍C-47輸送機を撃paraし、空tro 部隊を強化するための「共同陸軍海軍Fアップ」です。
更新:ウィキペディアには関連する頭字語のリストがあり、アトキンソンによってリストされた元の第二次世界大戦のものが含まれています。
プログラマは誰でも、fooとbarを使用して変数に名前を付ける動機を理解できます。彼らは確かに最初からC / UNIX文化の一部であり、@ Walter Mittyが指摘するように、それはそれより前のものでした。
更新(10/5/2009):アトキンソンの説明は次のとおりです。
彼らの広まった「市民性」により、彼らは武道の熱心さを警戒しました。「私たちは岬と剣を身にまとったロマン主義者ではありませんでした」と、シシリーに向かう海軍予備軍中Johnジョン・メイソン・ブラウンは書いています。「最後の戦争はそれには近すぎた。」軍事生活は彼らの皮肉な感受性と懐疑心を燃やしました。兵士の低下した期待を捉えた単一の未加工の頭字語-SNAFU、「通常の状況、すべてめちゃくちゃ」-は、GIシニシズムの語彙に拡張されました。FUMTU(いつも以上にめちゃくちゃになった); JANFU(合同陸軍と海軍)JAAFU(英国系アメリカ人の共同ファック); FUAFUP(性交し、適切に性交した); FUBAR(すべての認識を超えてめちゃくちゃになった)[Atkinson、p。36]。
更新(2011年11月23日):@Hugoには、非軍事的前件の素晴らしいリストがあります。
フバーの発音です。
次の略です:
新しいハッカーの辞書は、この上の非常に優れたエントリを持っています-と私はそれがウィキペディアよりもこの種のもののためのより良い資源であることを考慮してください。
メタ構文変数/n./
例で使用され、議論されているもの、または議論されているもののクラスの任意のメンバーを表すと理解されている名前。fooという単語は標準的な例です。混乱を避けるために、ハッカーは「foo」などの言葉を永続的な名前として決して使用しないでください。ファイル名の一般的な規則では、メタ構文変数名で始まるファイル名は、いつでも削除できるスクラッチファイルです。
ある程度、好みのメタ構文変数のリストは文化的特徴です。それらは、直列(変数またはオブジェクトの関連グループに使用)とシングルトンの両方で発生します。一般的な署名を次に示します。
foo、bar、baz、quux、quuux、quuuux ...:
MIT / Stanfordの使用法、どこでも見られるようになりました(この辞書の初期バージョンのおかげです!)。MITで(しかしスタンフォードではなく)、bazは1970年代および80年代にしばらく使用されなくなりました。このシーケンスの一般的な最近の突然変異は、quuxの前にquxを挿入します。バゾラ、ztesch:
スタンフォード(70年代半ば以降)。foo、bar、thud、grunt:
このシリーズはCMUで人気がありました。他のCMU関連変数にはgorpが含まれます。foo、bar、fum:
このシリーズはXEROX PARCで一般的であると報告されています。fred、barney:fred
のエントリを参照してください。これらはブリティッシュ主義である傾向があります。corge、grault、flarp:
Rutgers UniversityとGOSMACSハッカーの間で人気があります。zxc、spqr、wombat:
ケンブリッジ大学(イングランド)。Shme
Berkeley、GeoWorks、アングル。短い/ e /で発音される/ shme /。snork
ブラウン大学、1970年代初頭。foo、bar、zot
ヘルシンキ工科大学、フィンランド。blarg、ウィブル
ニュージーランド。トト、ティティ、タタ、チュチュ
フランス。ピッポ、pl王星、paperino
イタリア。Pippo / pee'po /とPaperino / pa-per-ee'-no /は、グーフィーとドナルドダックのイタリア名です。aap、noot、mies
オランダ。これらは、子供がオランダ語のスペルボードでスペルを学ぶのに使用した最初の単語です。これらすべての中で、「foo」と「bar」のみが普遍的です(そして、ほぼそうです)。化合物foobarと「foobaz」も非常に幅広い通貨を享受しています。
一部の専門用語は、メタ構文名としても使用されます。たとえば、barfとmumble。英国と連邦で見られる多くのメタシンタックス変数の議論については、Commonwealth Hackishも参照してください。
ウィキペディアでは、Metasyntactic Variableのこの定義を提供しています。
コンピュータサイエンスでは、プログラマはメタシンタクティック変数を使用して、議論中の主題または議論中の物事の任意のメンバーを示すために一般的に使用されるプレースホルダ名またはエイリアス用語を記述します。メタシンタクティック変数の使用は、プログラマーが論理的に名前が付けられた変数の作成から解放するのに役立ちます。これは、アルゴリズムの例を作成または教えるときにしばしば役立ちます。fooという単語が主な例です。
「メタシンタクティック変数」という用語は、主に非公式の文献に見られます。メタ変数の同義語としても使用されることがあります。
言語の規則に違反しない任意の記号または単語をメタ構文変数として使用できますが、一般的には意味のない単語が使用されます。同じ概念が他のフィールドでも採用されており、回路図変数などの用語で表されます(論理形式を参照)。
数学的な類推による:メタシンタクティック変数は、代数文字が数字の変数として使用されるのと同様に、他の単語の変数である単語です。
また、この記事では、さまざまなプログラミング言語でのそのような変数の一般的な例を示します。
C
Cプログラミング言語の次の例では、関数名fooと変数名barは両方ともメタ構文変数です。//で始まる行はコメントです。
// The function named foo
int foo(void)
{
// Declare the variable bar and set the value to 1
int bar = 1;
return bar;
}
Python
スパム、ハム、卵は、Pythonプログラミング言語で使用される主要なメタ構文変数です。[5] これは有名なコメディスケッチ、スパムのことで、モンティパイソンの言葉の代名詞です[6]。次の例では、spam、ham、eggsはメタ構文変数であり、#で始まる行はコメントです。
# Define a function named spam
def spam():
# define the variable ham
ham = "Hello World!"
#define the variable eggs
eggs = 1
return
ルビー
次の例では、baz、foo、およびbarはメタ構文変数であり、#で始まる行はコメントです。
# 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
ウィキペディアの答えは次のとおりです。
foobar、foo、bar、およびbazという用語は、コンピュータープログラミングまたはコンピューター関連のドキュメントで使用される一般的なプレースホルダー名(メタシンタクティック変数とも呼ばれます)です。通常、不明な値の目的は理解されているが、正確な値はarbitrary意的で重要ではないシナリオを記述するときに、不明な値を表すために使用されます。この用語は、データ、変数、関数、コマンドなど、複雑なシステムやアイデアのあらゆる部分を表すために使用できます。単語自体はこの用法では意味がなく、単に論理的な表現であり、代数で文字xおよびyが使用されるのとよく似ています。Foobarはしばしば単独で使用されます。複数のエンティティが必要な場合、foo、bar、およびbazは通常、この順序で使用されます。
Fooは新語として英語を入力しており、多くの人がメタシンタクティック変数の正準例であると考えています。エリック・S・レイモンドは、それを「重要なハッカー主義」と呼んでいます。
http://en.wikipedia.org/wiki/Foo
そして、RFC 3092から:
「バー」に関連して使用される場合、それは一般的に第二次世界大戦時代の陸軍の俗語の頭字語FUBAR(「すべての修理を超えて」)にトレースされ、後にfoobarに変更されます。Jargon File [JARGON]の初期バージョンは、この変更を戦後の弓術化と解釈していましたが、FUBAR自体がドイツ語の「furchtbar」(ひどい)-「foobar」の影響を受けた「foo」の派生物である可能性が高いようです実際には元の形式でした。
というのも、「foo」という言葉自体は、コミックストリップや漫画で戦前の歴史があったからです。ロバート・クランペット監督の1938年のワーナー・ブラザーズの漫画「ダッフィー・ドック」で、ダッフィー・ダックの非常に初期のバージョンは「沈黙はフー!」というサインを掲げています...(略)
tl; dr
メタシンタクティック変数としての「Foo」と「bar」は、MITとDECによって普及しました。最初の参考文献は、1964年以降のLISPとPDP-1およびProject MACに関する作業中です。
これらの人々の多くはMITのTech Model Railroad Clubにいました。そこでは、1959年に(そして1958年にバリアントとして)テクノロジーサークルで最初に文書化された "foo"の使用が見つかりました。
「foo」と「bar」(および「baz」)の両方は、特にスモーキーストーバーとポゴコミックから人気のある文化でよく知られていました。
また、軍のFUBARが彼らの人気に貢献したようです。
孤独な「foo」を無意味な言葉として使用することは、軍事FUBARと同様に、20世紀初頭の大衆文化でかなりよく文書化されています。(いくつかの背景読書: FOLDOC FOLDOC Jargon File Jargon File Wikipedia RFC3092)
OK、それではいくつかの参照を見つけましょう。
ストッププレス!この答えを投稿した後、1938年 1月14日金曜日のThe Tech(「MITの最古で最大の新聞&Webで公開された最初の新聞」)Volume LVIIで「foo」に関する完璧な記事を見つけました。No. 57、価格3セント:
フーイズムについて
ラウンジャーは、Foo-ismのこのビジネスは、その誤った支持者によって行き過ぎであると考えており、これにより、その濫用に対してこれからも積極的に立ち向かいます。古いfooのようなfooが存在しないこともありますが、私たちもそうですが、とにかくfooと彼のお金はパーティーです。(観覧席からの声-「バカにならないで!」)
当然のことながら、「foo!」私たちの言語で明確でおそらくかけがえのない位置を持っていますが、現在の過度の使用は、初期の(そして悲しいかな)暗い忘却に陥る可能性が高いことを恐れています。悲しいことに、この言葉を適切に使用すると、次のような幸福な事件が発生する可能性があるためです。
スレーター教授によるルーム6-120での8.50熱力学講義でした。教授は、黒板の前面を覆った後、リフト機構を操作するハンドルをセットし、その間クラスに向かい、議論を続けました。フロントボードはゆっくりと、堂々と自分自身を持ち上げて、その後ろのボードを明らかにし、そのボードには、「FOO」と綴られたシンボルを大きく書いた!
Tech新聞、1年前、1937年 9月、編集者への手紙:
電車が駅に到着する頃には、新人たちは通常フーと呼ばれるピオ・オミクロン・オミクロンの栄光の物語でいっぱいになり、簡単に餌食になります。
...
ピオ・オミクロン・オミクロンのグランド・アンド・ユニバーサル・ブラザーフッドで最初の4人の息子を失ったことを気にするわけではありませんが、私の5番目の息子、私の赤ちゃんは少なくとも事前に警告されることを望みます。
うまくいけば、あなたのもの、
5人のInする母親。
そして1938年 12月の技術:
思考の一般的な傾向は、投票の終わりに行われた発言から最もよく解釈されるかもしれません。ある投票では、「「自分がやっていることはパルバーのビジネスだとは思わない」と答えたが、別の投票では「Foo」というちょっとしたコメントが追加されただけだった。
技術界で最初に文書化された「foo」は、おそらく1959年のTMRC言語の辞書です。
FOO:神聖な音節(FOO MANI PADME HUM); 神と交わるためのインスピレーションの下でのみ話されるように。私たちの最初の義務は、Foo Countersを回し続けることです。
これらはFOLDOCで説明されています。辞書の編集者であるピート・サムソンは2005年に次のように述べています。
TMRCでのこの言葉の使用は、私がそこに来るのを先取りしています。fooカウンターは、単にランダムに点滅するライトを持つことも、不明瞭な入力を持つ実際のカウンターにすることもできます。
1996年のJargon File 4.0.0から:
このレキシコンの以前のバージョンは、スタンフォード大学の汚職として「baz」を導き出していました。しかし、ピートサムソン(TMRCレキシコンのコンパイラー)は、1958年にTMRCに入社した時点ですでに最新であると報告しています。「それは「ポゴ」から来ました。わいせつまたは怒りのアルバートは、「バズファズ!」または「Rowrbazzle!」クラブのレイアウトは、ローフォークとバセックスの(神話上の)ニューイングランド郡をモデル化すると言われていました(ローバズルは(ノーフォーク/サフォーク/ミドルセックス/エセックスと混ざりました)。」
TMRC辞書の1年前、1958年のMIT Voo Doo Gazette(「MIT学部長のユーモアの補足」)(PDF)は、ジョン・バンザフ(電気工学の学生)の「The Laws of Murphy and Finagle」でFoocomについて言及しています:
FoocomとAnarcomの共同助成の下でのさらなる研究により、法律がすべてを包含し、普遍的に適用できるように拡張されました。
また、1964年のMIT Voo Doo (PDF)は、TMRCの使用法について言及しています。
はい!すぐに成功して雪のお客様になりたいです。学位をお送りください:...
フーカウンター
フー・ジョン
ただし、この質問はコード例に関するものなので、コードで公開されている「foo」、「bar」、および「foobar」を見つけましょう。
したがって、Jargon File 4.4.7は「foobar」について次のように述べています。
おそらく元々は、1960年代から1970年代初頭にDigital Equipment Corporation(DEC)がDECsystemマニュアルで伝えたものです。確認された目撃情報は1972年に遡ります。
最初に公開された参考文献は1964年 2月のものですが、1963年6月にThe Programming Language LISP: Information International、Inc.による操作とアプリケーションが書かれていますが、多くの著者がいますが、Timothy P. HartとMichael Levinがいます:
したがって、「FOO」はそれ自体の名前なので、「COMITRIN」は「FOO」と「(FOO)」の両方をまったく同じように扱います。
FOO CROCK GLITCH / POOT TOOR / ON YOU / SNAP CRACKLE POP / XYZなどの他のメタ構文変数も含まれます。
これは、1964年 1月のMITのProject MACの次の「foo」の参照、またはTimothy P. HartとMichael LevinによるLISP Exercisesとほぼ同じだと思います。
car [((FOO。CROCK)。GLITCH)]
CHI / BOSTON NEW YORK / SPINACH BUTTER STEAK / FOO CROCK GLITCH / POOT TOOP / TOOT TOOT / ISTHISATRIVIALEXCERCISE / PLOOP FLOT TOP / SNAP CRACKLE POP / ONE TWO THREE / PLANE SUB THRESHER
「foo」と「bar」の両方について、私が見つけることができる最初の参照は、1966年 6月のMITのProject MAC 、またはPeter Samson以外のPDP-6 LISPからのものです。
EXPLODEはPRIN1と同様にスラッシュを挿入するため、(EXPLODE(QUOTE FOO / BAR))PRIN1は(FOO // / BAR)として、またはPRINCは(FOO / BAR)として挿入されます。
いくつかのリコール。
@Walter Mittyは、2008年にこのサイトでリコールしました。
2番目に、Foo Barに関する専門用語ファイルがあります。少なくとも1963年、MITの26階の2階にあったPDP-1シリアル番号2まで遡ることができます。FooとFoo Barはそこで使用され、1964年以降はプロジェクトMACのPDP-6ルームで使用されました。
ジョンV.エベレットは1996年に回想します。
1966年にDECに入社したとき、foobarは既に一般的なスローアウェイファイル名として使用されていました。PDP-6は6文字の名前をサポートしていたので、fubarはfoobarになったと思いますが、この用語は常にMITからDECに移行したと考えていました。当時のDECには多くのMITタイプがあり、そのうちのいくつかは7090/7094 CTSSで働いていました。709xも36ビットマシンであったため、foobarはそこで共通のファイル名として使用された可能性があります。
Fooとbarもファイル拡張子として一般的に使用されていました。当時のテキストエディタは入力ファイルを操作して出力ファイルを生成したため、.fooファイルから.barファイルに編集してから元に戻すのが一般的でした。
TECOで編集する場合、fooを使用してバッファを埋めることも一般的でした。1つのディスクブロックを正確に埋めるテキスト文字列はIFOO $ HXA127GA $$でした。私が一緒に働いたPDP-6 / 10プログラマーのほぼ全員が、同じコマンド文字列を使用しました。
1998年のダニエルPBスミス:
ディック・グルーエンは、寮の部屋に、Bバッテリー、抵抗器、コンデンサー、NE-2ネオン管の通常の集合体である「フーカウンター」と呼ばれる装置を持っていました。これは1964年頃のことでしょう。
1996年のRobert Schuldenfrei:
変数名の例としてのFOOとBARの使用は、少なくとも1964とIBM 7070にまでさかのぼります。これも古いかもしれませんが、私は最初にそれを見ました。これはアセンブラーにありました。FORTRANの整数とは何ですか?IFOOとIBAR?
1992年のPaul M. Wexelblat:
初期のPDP-1アセンブラーは、シンボル(18ビットマシン)に2文字を使用していました。プログラマーは常に、問題を修正するためのパッチスペースとしていくつかの単語を残していました。(パッチスペースへのジャンプ、新しいコードの実行、ジャンプバック)そのスペースは、従来FUと呼ばれていました。これは、Fxxx Upsを修正した場所であるFxxx Upの略です。話されたとき、それはFUスペースとして知られていました。後のアセンブラー(例:MIDASは3つの文字タグを許可したため、FUはFOOになりました。すべてのPDP-1プログラマーは、それがFOOスペースだったことを教えてくれます。
1996年のブルースB.レイノルズ:
FOO(FU)BARのIBM側には、BAR側をベースアドレスレジスタとして使用しています。1970年代中頃、CICSプログラマーはさまざまなxxxBARを心配する必要がありました...それらの1つはFRACTBARだったと思います...
これが1955年のIBMの「BAR」です。
その他の初期の参照:
RFC3092などで提案されているように、「反転fooシグナル」としてfoo barへの参照を見つけることができませんでした。
以前のF00の一部を次に示しますが、それらは偶然/誤検知だと思います。
「foo」や「bar」などの単語を使用すると、知っている用語に基づいて把握できるものではなく、概念に集中できます。例えば:
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");
}
}
上記のコードを使用すると、実世界の事柄に関する知識に頼ることができます。
重要な部分が行われていることではなく(たとえばニャーや樹皮を印刷する)、それがどのように行われているのかという概念を説明しようとしている場合は、慣れている部分を削除してください:
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");
}
}
今、あなたは本当に起こっていることに集中する必要があり、あなたはもはや何が起こるかを推測することができません。
したがって、短いバージョンは、foo、barなどが、コンテンツは実際には重要ではなく、アイデアは重要であるという概念を強調するために使用されるということです。
http://en.wikipedia.org/wiki/Foobarから
技術的には、1960年代から1970年代初頭にかけて、Digital Equipment Corporationがシステムマニュアルを通じて語を広めたのでしょう。もう1つの可能性は、foobarが反転foo信号として電子機器から進化したことです。これは、デジタル信号がアクティブLOWの場合(したがって、負またはゼロ電圧状態が「1」を表す)、水平ラベルが信号ラベルの上に配置されるためです。Jargon Fileは、fooがFUBARより前の可能性があるというケースを作成します
用語集ファイルからhttp://www.catb.org/jargon/html/F/foo.html
foo:/ foo /
bar:/ bar /、n。
http://en.wikipedia.org/wiki/Fooによると:
用語の起源は確実に知られておらず、それらを特定するためにいくつかの逸話的な理論が進められています。Foobarは下品な軍事頭字語FUBARに由来する場合もありますが、同じように発音されるために人気を博した場合もあります。
2番目に、Foo Barに関する専門用語ファイルがあります。
少なくとも1963年、MITの26階の2階にあったPDP-1シリアル番号2まで遡ることができます。FooとFoo Barはそこで使用され、1964年以降はプロジェクトMACのPDP-6ルームで使用されました。
私の知る限りでは、fooが「めちゃくちゃ」の改変、の略で軍事キャッチphraaseでfoobarに由来し、「F ***エドのuのp B eyond LL用のR ecognition。」
その後、再び、他のソースがあるかもしれません。
これらはナンセンスな単語であり、ほとんどの場合、より適切な例の単語で置き換えることができます。「foo」と「bar」という言葉は、誰かが良い例を考えることができないときにプログラミングで頻繁に使用されます。
"foo"と "bar"がFUBARから派生している場合、例が認識できないほどの例に似ていないのに、なぜ多くの専門家が指導例で使用しているのでしょうか。
私にとって、これらの単語の不適切な一般的な使用は、認識が及ばないことです。