Foo 및 바 미 육군 2 차 세계 대전의 약어 FUBAR, “F-ed Up Beyond All Recognition”에서 유래되었습니다. 이 용어의 전체 가족은 북아프리카와 시칠리아 캠페인 (1942-43) 동안 널리 사용되었습니다. Rick Atkinson의 뛰어난 Day of Battle : The War in Sicily and Italy, 1943-1944 에 이러한 목록이 나와 있습니다. 예를 들어 JANFU는 “합동 군”입니다. 1943 년 7 월 11 일 Operation Husky 의 침공 함대가 격추 한 사건과 같은 Navy F Up ” 23 대의 육군 공군 C-47 수송기 는 낙하산 병을 운반하여 교두보를 강화합니다.
업데이트 : Wikipedia에는 관련 목록 이 있습니다. Atkinson이 나열한 원래 WWII를 포함하는 약어입니다.
모든 프로그래머는 foo 및 bar 를 사용하여 변수 이름을 지정하는 동기를 이해할 것입니다. 처음부터 C / UNIX 문화의 일부였으며 @Walter Mitty가 지적했듯이이를 앞섰습니다.
업데이트 (2009 년 10 월 5 일) : Atkinson의 설명 :
그들의 만연한 “시민 성”은 그들로 하여금 군의 열심을 경계하게 만들었습니다. “우리는 망토로 가득 찬 낭만적 인 사람이 아니 었습니다. ord twaddle”이라고 시칠리아로 향하는 해군 예비군 중위 인 John Mason Brown이 썼다. “마지막 전쟁은 너무 가까웠습니다.” 군대 생활은 그들의 아이러니 한 감성과 회의론을 불러 일으켰습니다. 군인의 낮은 기대치를 포착 한 하나의 조잡한 두문자어 (SNAFU, “정상 상황, 모두 망했어”)는 GI 냉소주의의 어휘로 확장되었습니다. 평소보다) JANFU (육군-해군 합동), JAAFU (영미 계 합동), FUAFUP (올바른 망할), FUBAR (모든 인식을 넘어서 망했어) [Atkinson, p. 36].
업데이트 (2011 년 11 월 23 일) : @Hugo에는 환상적인 목록이 있습니다. .
의견
New Hacker s Dictionary 이것에 대한 아주 좋은 항목이 있습니다. 그리고 저는 이것이 위키 백과보다 이런 종류의 것에 대해 더 나은 리소스라고 생각합니다 :
metasyntactic variable /n./
예제에서 사용되며 논의중인 모든 것을 나타내거나 논의중인 사물 클래스의 임의의 구성원을 나타내는 것으로 이해되는 이름입니다. foo라는 단어가 표준 예입니다. 혼동을 피하기 위해 해커는 foo또는 이와 같은 다른 단어를 영구적 인 이름으로 사용하지 않습니다. 파일 이름에서 일반적인 관례는 메타 구문 변수 이름으로 시작하는 모든 파일 이름이 스크래치 파일이라는 것입니다. 언제든지 삭제됩니다.
어느 정도까지는 선호하는 메타 구문 변수 목록은 문화적 특징입니다. 이들은 직렬 (관련 변수 또는 객체 그룹에 사용됨)과 단일 항목으로 모두 발생합니다. 다음은 몇 가지 일반적인 서명입니다.
foo, bar, baz, quux, quuux, quuuux … :
MIT / Stanford 사용, 이제 모든 곳에서 볼 수 있습니다 (이 사전의 초기 버전 덕분입니다! ). MIT (스탠포드에서는 아님)에서 baz는 1970 년대와 “80 년대에 잠시 사용을 중단했습니다.이 시퀀스의 일반적인 최근 돌연변이는 quux 앞에 qux를 삽입합니다.
bazola, 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 :
Cambridge University (영국).
shme
Berkeley, GeoWorks, Ingres. 짧은 / e /로 / shme /로 발음됩니다.
스 노크
1970 년대 초 브라운 대학교.
foo, bar, zot
핀란드 헬싱키 공과 대학교.
blarg, wibble
뉴질랜드.
toto, titi, tata, tutu
프랑스.
pippo, pluto, paperino
이탈리아. Pippo / pee “po / 및 Paperino / pa-per-ee”-no /는 Goofy와 Donald Duck의 이탈리아어 이름입니다.
aap, noot, mies
네덜란드. 아이들이 네덜란드 철자 보드에서 철자를 배우기 위해 사용한 첫 단어입니다.
이 모든 것 중에서 “foo”와 “bar”만이 보편적입니다 (그리고 거의 그렇습니다). foobar와`foobaz 라는 화합물도 매우 폭 넓은 통화를 사용합니다.
일부 전문 용어는 예를 들어 barf 및 mumble과 같은 메타 구문 이름으로도 사용됩니다. Great에서 발견되는 수많은 메타 구문 변수에 대한 논의는 Commonwealth Hackish를 참조하십시오. 영국과 영연방.
댓글
Wikipedia는 Metasyntactic Variable의 정의를 제공합니다 :
컴퓨터 과학에서 프로그래머는 메타 구문 변수를 사용하여 자리 표시 자 이름 또는 논의중인 주제를 나타내는 데 일반적으로 사용되는 별칭 용어 또는 토론중인 사물의 종류. 메타 신택 틱 변수를 사용하면 프로그래머가 논리적으로 명명 된 변수를 만들지 않아도되며 알고리즘 예제를 만들거나 교육 할 때 유용합니다. foo라는 단어가 주요 예입니다.
“metasyntactic variable”이라는 용어는 주로 비공식 문헌에서 발견됩니다. 메타 변수의 동의어로도 사용되기도합니다.
언어의 규칙을 위반하지 않는 기호 나 단어는 메타 구문 변수로 사용할 수 있지만 넌센스 단어가 일반적으로 사용됩니다. 도식 변수와 같은 용어로 표현되는 다른 분야에서도 동일한 개념이 사용됩니다 ( 논리적 형식 참조).
수학적 유추 : 메타 구문 변수 대수 문자가 숫자에 대한 변수로 사용되는 것처럼 다른 단어에 대한 변수 인 단어입니다.
이 문서는 또한 그러한 단어의 일반적인 예를 제공합니다. 다양한 프로그래밍 언어의 변수 :
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] 이것은 언어의 축약 인 Monty Python의 유명한 코미디 스케치 인 Spam에 대한 참조입니다. [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
Ruby
다음 예에서 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
tl; dr
-
“Foo 메타 신택 틱 변수로서 “및”bar “는 MIT와 DEC에 의해 대중화되었으며, 첫 번째 참조는 1964 년부터 LISP 및 PDP-1 및 Project MAC에 대한 작업에 있습니다.
-
많은 사람들이 MIT의 Tech Model Railroad Club에있었습니다. 1959 년에 기술계에서 “foo”를 처음으로 문서화하여 사용했으며 1958 년에 변형되었습니다. ).
-
“foo”와 “bar”(심지어 “baz”)는 대중 문화, 특히 Smokey Stover와 Pogo 만화에서 잘 알려져 있습니다. 많은 TMRC 회원들이 읽었습니다.
-
또한 군용 FUBAR가 인기에 기여한 것 같습니다.
고독한 “foo”를 무의미한 단어로 사용하는 것은 군사 FUBAR와 마찬가지로 20 세기 초 대중 문화에서 잘 기록되어 있습니다. (일부 배경 자료 : FOLDOC FOLDOC Jargon 파일 전문 용어 파일 Wikipedia RFC3092 )
좋아요. 몇 가지 참조를 찾아 보겠습니다.
누르지 마세요! 이 답변을 게시 한 후 1 월 14 일 금요일 1938 The Tech ( “MIT”에서 가장 오래되고 가장 큰 신문 & 웹에 처음으로 게시 된 신문 “), Volume LVII. No. 57, Price Three Cents :
Foo-ism에 대해
라운 저는 Foo-ism의이 사업이 잘못된 지지자들에 의해 너무 멀리 넘어 갔고, 즉시 그것의 남용에 대해 그의 입장을 취합니다. 그것은 “오래된 foo와 같은 foo는없고, 우리”일지도 모른다. 그러나 어쨌든, foo와 그의 돈은 어떤 파티이다. (관중석의 목소리- “어리석게 굴지 마세요!”)
물론 비속어로서 “foo!”는 우리 언어에서 분명하고 대체 할 수없는 위치를 가지고 있습니다. 현재 과도하게 사용하면 조기에 (그리고 슬프게도 어두운) 망각에 빠질 수 있습니다. 단어를 적절하게 사용하면 다음과 같은 행복한 사건이 발생할 수 있기 때문에 아쉽습니다.
6-120 호실에서 Slater 교수의 8.50 열역학 강의였습니다. 교수는 칠판 앞면을 가리고 리프트 메커니즘을 작동하는 손잡이를 설정하고 토론을 계속하기 위해 교실로 향했습니다. 전면 보드는 천천히, 위엄있게 들어 올려 그 뒤에있는 보드를 드러내고, 그 보드에는 “FOO”라고 쓰인 기호가 크게 쓰였습니다!
The Tech 신문 , 1 년 전, 편집자에게 보내는 편지, 9 월 1937 :
기차가 역에 도착할 즈음에 신입생들은 일반적으로 Foo라고 불리는 Phi Omicron Omicron의 영광에 대한 이야기로 가득 차 있습니다. , 그들은 쉬운 먹이입니다.
…
내 첫 네 아들을 Phi Omicron Omicron의 Grand and Universal Brotherhood에서 잃어버린 것이 마음에 들지는 않지만 내 다섯째 아들 인 내 아기가 최소한 미리 경고를 받기를 바랍니다.
당신의 것입니다.
분노한 다섯의 어머니
및 The Tech (12 월) 1938 년 :
일반적인 사고 경향은 투표 끝 부분의 발언에서 가장 잘 해석 될 수 있습니다. 한 투표는 “”내가하는 일이 Pulver의 사업이라고 생각하지 않는다 “고 답했고, 또 다른 투표는 단순히”Foo “라고 덧붙였습니다.
기술 서클에서 처음으로 문서화 된 “foo”는 아마도 1959 “의 TMRC 언어 사전 :
FOO : 신성한 음절 (FOO MANI PADME HUM); 영감을 받아 신과 교제 할 때만우리의 첫 번째 의무는 Foo 카운터를 계속 돌리는 것입니다.
이 내용은 FOLDOC a에서 설명합니다. >. 사전의 컴파일러 인 Pete Samson은 2005 년에 다음과 같이 말했습니다.
TMRC에서이 단어를 사용하면 제가 그곳에 오는 것을 앞 당깁니다. foo 카운터는 단순히 무작위로 깜박이는 불빛을 가질 수 있습니다. , 또는 모호한 입력이있는 실제 카운터 일 수 있습니다.
1996 년의 Jargon 파일 4.0.0 :
이 사전의 이전 버전은 “baz”를 스탠포드 바의 부패로 파생했습니다. 그러나 Pete Samson (TMRC 어휘집 편집자)은 1958 년 TMRC에 합류했을 때 이미 최신 상태 였다고보고합니다. 그는 “포고에서 왔습니다.”라고 말합니다. 앨리게이터 앨버트는 화가 나거나 격분 할 때 “Bazz Fazz!”라고 외쳤습니다. “Rowrbazzle!”클럽 레이아웃은 Rowrfolk 및 Bassex의 (신화적인) 뉴 잉글랜드 카운티를 모델링 한 것으로 알려져 있습니다 ((Norfolk / Suffolk / Middlesex / Essex)와 혼합 된 Rowrbazzle. “
TMRC 사전 1 년 전, 1958 “의 MIT Voo Doo Gazette (” MIT Deans “office”) (PDF) 는 John Banzhaf (전기 공학 학생)의 “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 년대 초에 DEC (Digital Equipment Corporation)의 DECsystem 매뉴얼을 통해 전파되었을 것입니다. 확인 된 목격은 1972 년으로 거슬러 올라갑니다.
내가 찾을 수있는 첫 번째 출판 된 참고 문헌은 1964 년 2 월입니다. , 그러나 1963 년 6 월에 작성, The Programming Language LISP : its Operation and Applications by Information International, Inc. ,하지만 Timothy P. Hart와 Michael Levin을 포함한 많은 저자 :
따라서 “FOO”는 그 자체의 이름이므로 “COMITRIN”은 “FOO”와 “(FOO)”를 정확히 동일한 방식으로 처리합니다.
또한 다음과 같은 다른 메타 구문 변수도 포함합니다. FOO CROCK GLITCH / POOT TOOR / ON YOU / SNAP CRACKLE POP / XYZ
1 월에 MIT의 Project MAC에서 “foo”에 대한 다음 참조와 거의 동일 할 것으로 예상됩니다. 1964 “s AIM-064 또는 Timothy P. Hart 및 Michael Levin의 LISP 연습 :
자동차 [((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”를 함께 사용할 때 내가 찾을 수있는 가장 빠른 참조는 6 월에 MIT의 Project MAC에서 가져온 것입니다. 1966 “의 AIM-098 또는 PDP-6 LISP 작성자 : Peter Samson :
EXPLODE는 PRIN1처럼 슬래시를 삽입하므로 (EXPLODE (QUOTE FOO / BAR)) PRIN1 “s (FOO // / BAR) 또는 PRINC “를 (FOO / BAR)로 표시합니다.
몇 가지 추가 회수
@Walter Mitty 는 2008 년이 사이트에서 회상했습니다.
저는 전문 용어를 두 번째로 사용합니다. Foo Bar에 관한 파일. 나는 적어도 1963 년으로 거슬러 올라갈 수 있으며, MIT의 26 번 건물 2 층에 있던 PDP-1 일련 번호 2가 있습니다. Foo와 Foo Bar는 그곳에서 사용되었으며 1964 년 이후 프로젝트 MAC의 PDP-6 실에서 사용되었습니다.
John V. Everett 은 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를 사용하여 버퍼를 채 웁니다. 하나의 디스크 블록을 정확히 채우는 텍스트 문자열은 IFOO $ HXA127GA $$입니다. 내가 함께 일한 거의 모든 PDP-6 / 10 프로그래머는이 동일한 명령 문자열을 사용했습니다.
Daniel PB Smith (1998 년) :
Dick Gruen은 B- 배터리, 저항기, 축전기 및 NE-2 네온관의 일반적인 조합 인 기숙사 방에 장치를 가지고 있었는데,이를”foo counter “라고 불렀습니다. 이것은 1964 년경이었을 것입니다.
Robert Schuldenfrei 1996 년 :
예제 변수 이름으로 FOO와 BAR를 사용한 것은 최소한 1964 년과 IBM 7070으로 거슬러 올라갑니다. 이것 역시 오래되었을 수 있지만 처음 본 곳입니다. 이것은 Assembler에있었습니다. FORTRAN 정수는 무엇입니까? IFOO 및 IBAR?
Paul M. Wexelblat (1992 년) :
초기의 PDP-1 어셈블러는 기호 (18 비트 머신) 프로그래머에 대해 두 문자를 사용했으며 문제를 해결하기 위해 항상 패치 공간으로 몇 단어를 남겼습니다. (패치 공간으로 이동, 새 코드 수행, 뒤로 이동) 그 공간은 일반적으로 FU로 명명되었습니다. Fxxx Ups를 수정 한 곳인 Fxxx Up을 의미했습니다. 말하면 FU 공간으로 알려졌습니다. 나중에 어셈블러 (예 : MIDAS는 3 개의 char 태그를 허용하므로 FU는 FOO가되었으며 모든 PDP-1 프로그래머는 FOO 공간이라고 알려줄 것입니다.
Bruce B. Reynolds :
FOO (FU) BAR의 IBM 측 BAR 측을 Base Address Register로 사용하는 것입니다. 1970 년대 중반에 CICS 프로그래머는 다양한 xxxBAR에 대해 걱정해야했습니다. 그중 하나가 FRACTBAR 인 것 같습니다 …
여기에 1955 년부터 곧바로 IBM”BAR “가 있습니다.
기타 초기 참고 자료 :
Foo bar에 대한 참조를 “반전 된 foo 신호”로 찾을 수 없습니다. “RFC3092 및 다른 곳에서 제안한대로.
여기에 훨씬 더 이른 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"); } }
위의 코드를 사용하면 실제 지식으로 되돌아 갈 수 있습니다.
중요한 부분이 수행중인 작업 (예 : meow 또는 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 등을 사용하여 내용은 중요하지 않지만 아이디어는 중요한 개념을 강조하는 데 사용됩니다.
댓글