소스 코드 예제에서 "foo"와 "bar"를 사용한 기록은 무엇입니까?


60

많은 코드 예제, 특히 자습서에서 "Foo"및 "Bar"라는 이름을 자주 사용하는 이유는 무엇입니까? 거의 표준입니다.

예를 들면 다음과 같습니다.

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

2
fmsf의 게시물 중 어느 것도 RichB의 왕따로부터 안전하지 않은 것 같습니다.

그래, 그는 내가 쓰는 것을 바꾸는 것을 좋아한다. 나는 그가 그것에 집착한다고 생각하기 시작했다

4
"왜 푸 바?" 제목이별로 좋지 않다, IMHO
Jeff Atwood

1
올바른 어원 (제 2 차 세계 대전 미 육군 속어 용어 중 가장 인기 있음)과 내 출처에 대한 답변을 추가했습니다.

의사 소통이 가능한 아이디어입니다. 그것은 그 자체의 정당성입니다.
마이크 던 라비

답변:


65

FooBar 는 미 육군 제 2 차 세계 대전 약어 인 FUBAR, "F-ed Up Beyond All Recognition"에서 나왔습니다. 이 용어의 전체 가족은 북아프리카와 시칠리아 캠페인 (1942-43) 동안 널리 사용되었습니다. 1943 년부터 1944 년까지 릭 앳킨슨의 뛰어난 전투 : 시칠리아와 이탈리아의 전쟁에서 그 목록을 볼 수 있습니다. 예를 들어, JANFU는 1943 년 7 월 11 일 허스키 작전 침공 함대가 23 개의 육군 공군 C-47 수송선 을 낙하산 병사로 격추 시켜 교두보를 강화한 사건과 같은 "공동 군 해군 F 업" 이다.

업데이트 : Wikipedia에는 Atkinson이 나열 한 원래 WWII를 포함하는 관련 약어 목록 이 있습니다.

모든 프로그래머는 foobar 를 사용하여 변수 이름을 지정 하는 동기를 이해합니다 . 그들은 분명히 처음부터 C / UNIX 문화의 일부였으며 @Walter Mitty가 지적했듯이 포식했습니다.

업데이트 (2009 년 10 월 5 일) : Atkinson의 설명입니다.

그들의 만연한 "민간"은 그들에게 무술의 열성을 경고했다. 시칠리아로 향하는 해군 예비군의 존 메이슨 브라운 (John Mason Brown)은“우리는 낭만주의 칼날로 가득 찬 낭만 주의자들이 아니었다. "마지막 전쟁은 너무 가까웠다." 군사 생활은 그들의 아이러니 한 감성과 회의론에 불을 붙였다. 군인의 기대치가 낮아진 단 하나의 조잡한 약어 인 SNAFU는 "정상적인 상황, 모든 것을 망쳤다"는 GI 냉소의 어휘로 확장되었습니다. FUMTU (평소보다 더 많이 망쳤다); 얀푸 (JANFU); JAAFU (공동 영미 성교); FUAFUP (적절하게 fucked 업); 그리고 FUBAR (모든 인식을 넘어서 fuck) [Atkinson, p. 36].

업데이트 (2011 년 11 월 23 일) : @Hugo에는 비군사적 인 전 제자 목록 이 있습니다.


3
어원에 덧붙이려면 : "FUBAR은 독일어 단어 furchtbar의 영향을 받았을 수 있습니다. 끔찍한 의미입니다. 부드러운 cht로 발음되어 2 차 세계 대전 중에 전환했을 것입니다"
Mark

4
The German Wikipedia (de.wikipedia.org/wiki/Fubar) 인 @Mark는 이것이 유사 어원 일 수 있다고 제안합니다. 또한 Warner Brother의 1938 년 만화 "The Daffy Doc"의 "SILENCE IS FOO"표시와 같은 선구자도 지적합니다.

4
@Jim Ferrans : FUBAR가 "foo"와 함께 "bar"사용에 영향을 미쳤지 만, "foo"자체는 WWII 이전에 비해 1930 년대를 거슬러 올라가며, 1930 년대를 거슬러 올라간다는 강력한 증거가 있습니다. 답의 본문에서 언급하는 것이 좋습니다.
Daniel Pryden

예, foo는 2 차 세계 대전 이전의 것입니다. 사실, 나는 1938 년부터 MIT 신문 기사를 찾았는데, 그것이 얼마나 일반적인지를 알려줍니다. "물론,"foo! "는 우리 언어에서 명확하고 대체 할 수없는 입장을 가지고 있지만 현재 대상이되는 사용은 초기 (그리고 아아, 어두운) 망각에 빠질 수 있습니다. " 같은 신문에서 더 많은 1937 년 참고 문헌에 대한 나의 대답을보십시오 : programmers.stackexchange.com/questions/69788/…
Hugo

59

나는 그것이 fubar의 소리 나는 발음이라고 생각합니다.

다음을 의미합니다 :

  • F * cked
  • 쪽으로
  • 을 넘어서
  • 모두
  • 수리

18
수리 또는 인식; P

10
"예절"은 예의 바르게 행동해야 할 때 자주 사용됩니다.

30
수리? 아니 .. 인식
하센

6
"인식"입니다. Rick Atkinson 's Day of Battle의 인용문은 여기를 참조하십시오 : stackoverflow.com/questions/262271/…

7
FUBAR가 제 2 차 세계 대전 당시 군사 속어에 들어가기 훨씬 전에 1930 년대에 "foo"가 자리 표시 자 넌센스 단어로 사용되었다는 강력한 증거가 있습니다 (RFC 3092, 전문 용어 파일 및 기타 답변 참조).
Daniel Pryden

41

새로운 해커의 사전 이에 아주 좋은 항목이 - 그리고 나는 그것이 위키 백과보다는 이런 종류의 일을위한 더 나은 자원이 될 생각 :

metasyntactic variable /n./

예에서 사용되는 이름으로, 토론중인 내용이나 토론중인 항목 클래스의 임의 구성원을 나타내는 것으로 이해됩니다. 단어 foo는 정식 예입니다. 혼란을 피하기 위해 해커는 절대로 'foo'나 그와 비슷한 단어를 영구적 인 이름으로 사용하지 않습니다. 파일 이름에서 일반적인 관례는 metasyntactic-variable 이름으로 시작하는 파일 이름은 언제라도 삭제할 수있는 스크래치 파일이라는 것입니다.

어느 정도까지는, 선호하는 메타 신택 틱 변수의 목록은 문화적 특징입니다. 그것들은 직렬로 (관련 변수 또는 객체 그룹에 사용) 단일 톤으로 발생합니다. 몇 가지 일반적인 서명은 다음과 같습니다.

foo, bar, baz, quux, quuux, quuuux ... :
MIT / Stanford 사용법, 이제 모든 곳에서 발견되었습니다 (이 사전의 초기 버전 덕분에)! 스탠포드가 아닌 MIT에서 baz는 1970 년대와 80 년대에 잠시 동안 사용이 중단되었습니다. 이 서열의 일반적인 최근 돌연변이는 quux를 quux 앞에 삽입합니다.

bazola, ztesch :
Stanford (70 년대 중반부터).

foo, bar, thud, grunt :
이 시리즈는 CMU에서 인기가있었습니다. 다른 CMU 관련 변수에는 gorp가 포함됩니다.

foo, bar, fum :
이 시리즈는 XEROX PARC에서 일반적으로보고됩니다.

프레드, 바니 : 프레드
의 항목을 참조하십시오. 이들은 영국주의 경향이있다.

corge, grault, flarp :
Rutgers University 및 GOSMACS 해커에게 인기가 있습니다.

zxc, spqr, 웜뱃 :
케임브리지 대학교 (영국).

shme
Berkeley, GeoWorks, Ingres. 짧은 / e /로 / shme /로 발음했습니다.

스 노크
브라운 대학, 1970 년대 초.

foo, bar, zot
핀란드 헬싱키 공과 대학교.

블래 그,
뉴질랜드를 흔든다 .

토토, 티티, 타타, 투투
프랑스.

피포, 명왕성, 페이퍼 노
이탈리아. Pippo / pee'po / 및 Paperino / pa-per-ee'-no /는 Goofy 및 Donald Duck의 이탈리아 이름입니다.

aap, noot,
네덜란드를 따온 다 . 네덜란드어 철자법 보드에서 철자를 배우는 데 아이가 사용한 첫 단어입니다.

이 모든 것 중에서 'foo'와 'bar'만이 보편적입니다. foobar와`foobaz '화합물도 매우 광범위한 통화를 즐깁니다.

일부 전문 용어는 메타 신택 틱 이름으로도 사용됩니다. 예를 들어 영국과 영연방에서 발견되는 수많은 메타 신택 틱 변수에 대한 논의는 영연방 해시를 참조하십시오.


나는 뉴질랜드에서 왔으며 'blarg'또는 'wibble'에 대해 들어 본 적이 없습니다.

꽤 좋은 사람이었습니다. 정교합니다. 고마워요.
Tarik

OMG, 내 QL 계정은 qux입니다. 충격…

@Colin-기존 사이트가 오프라인 상태이므로 다른 사이트에 대한 링크를 변경했습니다.
거기서부터

LISP (물론 foo가 있음)에 관한 MIT 1964 논문에서 흥미로운 신진 대사 변수를 발견했습니다 : chi / boston new York / 시금치 버터 스테이크 / foo crock glitch / poot toop / Toot Toot / isthisatrivialexcercise / ploop flot top / snap 딱딱 팝 / 하나 둘 셋 / 평면 서브 탈곡기. 자세한 내용은 내 대답을 참조하십시오 : programmers.stackexchange.com/questions/69788/…
Hugo

25

Wikipedia는 Metasyntactic Variable에 대한 다음 정의를 제공합니다 .

컴퓨터 과학에서 프로그래머는 메타 신택 틱 변수를 사용하여 토론중인 주제 또는 토론중인 사물 클래스의 임의 구성원을 나타내는 데 일반적으로 사용되는 자리 표시 자 이름 또는 별칭 용어를 설명합니다. 메타 신택 틱 변수를 사용하면 프로그래머가 논리적으로 명명 된 변수를 만들지 못하도록하는 데 도움이되는데, 이는 종종 알고리즘 예제를 만들거나 가르 칠 때 유용합니다. foo라는 단어가 주요 예입니다.
"유전 구 변수"라는 용어는 주로 비공식 문헌에서 발견된다. 때로 메타 변수의 동의어로 사용되기도합니다.
언어의 규칙을 위반하지 않는 모든 기호 또는 단어는 대사 구문 변수로 사용할 수 있지만 넌센스 단어가 일반적으로 사용됩니다. 회로도 변수와 같은 용어로 표현되는 다른 분야에서도 동일한 개념이 사용됩니다 ( 논리적 형식 참조 ).
수학적 유추에 의해 : metasyntactic 변수는 대수 문자에서 숫자에 대한 변수로 사용되는 것처럼 다른 단어에 대한 변수 인 단어입니다.

이 기사는 또한 다른 프로그래밍 언어로 이러한 변수의 일반적인 예를 제공합니다.

C
C 프로그래밍 언어의 다음 예에서 함수 이름 foo와 변수 이름 표시 줄은 모두 metasyntactic 변수입니다. //로 시작하는 줄은 주석입니다.

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

   return bar;
}

파이썬

스팸, 햄 및 계란은 Python 프로그래밍 언어에서 사용되는 주요 metasyntactic 변수입니다. [5] 이것은 언어의 동의어 인 Monty Python의 유명한 코미디 스케치 인 Spam에 대한 참조입니다. [6] 다음 예에서 스팸, 햄 및 에그는 메타 신택 틱 변수이며 #으로 시작하는 줄은 주석입니다.

# Define a function named spam
def spam():

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

    #define the variable eggs
    eggs = 1

    return

루비

다음 예제에서 baz, foo 및 bar는 metasyntactic 변수이고 #으로 시작하는 행은 주석입니다.

# 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

다음은 wikipedia의 답변입니다.

foobar, foo, bar 및 baz라는 용어는 컴퓨터 프로그래밍 또는 컴퓨터 관련 문서에 사용되는 일반적인 자리 표시 자 이름 (유사 구문 변수라고도 함)입니다. 일반적으로 알 수없는 값의 목적을 이해하는 시나리오를 설명 할 때 알 수없는 값을 나타내는 데 일반적으로 사용되지만 정확한 값은 임의적이고 중요하지 않습니다. 이 용어는 데이터, 변수, 함수 및 명령을 포함하여 복잡한 시스템이나 아이디어의 일부를 나타내는 데 사용될 수 있습니다. 단어 자체는이 사용법에서 의미가 없으며 문자 x와 y가 대수학에서 사용되는 것처럼 논리적으로 표현됩니다. Foobar는 종종 단독으로 사용됩니다. foo, bar 및 baz는 일반적으로 여러 엔티티가 필요한 경우 순서대로 사용됩니다.

푸 (Foo)는 신학 적 언어로 영어를 입력했으며, 많은 사람들이 메타 신택 틱 변수의 정식 사례로 간주하고있다. [인용 필요] 컴퓨터 프로그래밍 예제 (때로는 "한 번만"으로 표현됨) 및 의사 코드에서 광범위하게 사용된다. Eric S. Raymond는이를 멍청이와 부스러기와 함께 "중요한 해커 리즘"이라고 불렀습니다. [1]

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

RFC 3092에서 :

'bar'와 함께 사용하면 일반적으로 WW II 시대 육군 속어 약어 FUBAR ( 'Fucked Up Beyond All Repair')로 추적되며 나중에 foobar로 수정됩니다. Jargon File [JARGON]의 초기 버전은 이러한 변화를 전후 활주로로 해석했지만 FUBAR 자체는 아마도 독일의 'furchtbar'(끔찍한)- 'foobar'에 의해 영향을받은 'foo'의 파생물 일 가능성이 높습니다. 실제로 원래 형태였습니다.

아마도 'foo'라는 단어 자체는 만화와 만화에서 즉각적인 전쟁 역사를 가지고있는 것 같습니다. Robert Clampett가 감독 한 1938 년 Warner Brothers 만화에서 Daffy Duck의 초기 버전 인 "The Daffy Doc"은 "SILENCE IS FOO!"

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


6
또는
fubar

4
@Jonathan Fingland : 아닙니다. 실제로 "foo"는 "foobar"와 "FUBAR"보다 우선합니다. RFC 3092 및 "foo"에 대한 전문 용어 파일 항목을 참조하십시오.
Daniel Pryden

@Daniel, 훌륭한 참조. 추가
Jonathan Fingland 0

19

tl; dr

  • 메타 신택 틱 변수 인 "Foo"와 "bar"는 MIT와 DEC에 의해 대중화되었으며, 첫 번째 참고 문헌은 1964 년부터 LISP와 PDP-1 및 Project MAC에 대한 작업을하고 있습니다.

  • 이 사람들 중 다수는 MIT의 Tech Model Railroad Club에 있었으며, 1959 년 (1958 년 변형) 기술 그룹에서 처음으로 "foo"를 사용하는 것으로 나타났습니다.

  • "foo"와 "bar"(및 "baz")는 대중 문화, 특히 많은 스모키 스토 버와 포고 만화에서 잘 알려져 있으며 많은 TMRC 회원들이 읽었습니다.

  • 또한 군사 FUBAR이 인기를 얻은 것으로 보입니다.


무의미한 단어로 고독한 "foo"를 사용하는 것은 군사 FUBAR와 마찬가지로 20 세기 초 대중 문화에 잘 기록되어 있습니다. (일부 배경 읽기 : FOLDOC FOLDOC 전문 용어 파일 전문 용어 파일 Wikipedia RFC3092 )


자, 참고 문헌을 찾아 봅시다.

그만해! 이 답변을 게시 한 후, 1938 년 1 월 14 일 금요일 판 The Tech ( "MIT에서 가장 오래되고 가장 큰 신문 및 웹에 게시 된 첫 번째 신문"), LVII의 "foo"에 대한이 완벽한 기사를 발견했습니다 . No. 57, 가격 3 센트 :

푸 이즘에

Lounger는이 Foo-ism의 사업이 잘못 인도 된 지지자들에 의해 너무 멀리 진행되었다고 생각하며, 이에 따라 그의 학대에 반대합니다. 오래된 foo와 같은 foo가 없을 수도 있습니다. 그러나 우리는 foo와 그의 돈이 파티입니다. (표백 자의 목소리- "멍청하지 마라!"

물론, "foo!" 우리가 현재 사용하고있는 과도한 사용이 초기 (그리고 아아, 어둡고) 망각에 빠질 수 있다고 우려하지만, 우리 언어에서 명확하고 대체 할 수없는 위치를 가지고 있습니다. 우리는 슬프게도 단어를 올바르게 사용하면 다음과 같은 행복한 사건이 발생할 수 있기 때문에 말합니다.

6-120 호실에서 Slater 교수의 8.50 열역학 강의였습니다. 칠판의 앞면을 덮은 교수는 리프트 메커니즘을 조작하는 핸들을 설정하고 수업을 진행하면서 토론을 계속했습니다. 프론트 보드는 웅장하게 천천히 들어올 려져 그 뒤에있는 보드를 드러냈고, 그 보드에서 "FOO"라는 철자 기호를 크게 썼습니다!

1937 년 9 월 테크 신문 은 편집자에게 보낸 편지 :

기차가 정거장에 도착할 때, 네오 피트는 파이 오 미크론 오 미크론 (Foo Omicron Omicron)의 영광에 대한 이야기로 가득 차 있습니다.

...

파이오 미크론 오 미크론의 웅대하고 보편적 인 형제애에 대한 첫 네 아들을 잃어버린 것은 아니지만, 다섯 번째 아들 인 내 아기가 적어도 미리 경고를 받기를 바랍니다.

바라건대

분개하는 5의 어머니.

그리고 1938 년 12 월 The Tech :

일반적인 생각의 경향은 투표의 끝에 작성된 발언에서 가장 잘 해석 될 수 있습니다. 한 투표는 "내가하는 일은 Pulver의 사업이라고 생각하지 않는다"고 말한 반면 다른 투표는 단지 ​​"Foo"라고 덧붙였다.


기술 서클의 첫 번째 기록 "푸"아마 1959TMRC 언어의 사전 :

FOO : 신성한 음절 (FOO MANI PADME HUM); 신과 대화하기 위해 영감을받을 때만 말해야합니다. 우리의 첫 번째 의무는 Foo Counters를 계속 돌리는 것입니다.

이것들은 FOLDOC 에 설명되어 있습니다. 이 사전의 컴파일러 Pete Samson은 2005 년에 다음과 같이 말했습니다.

TMRC에서이 단어를 사용하면 내가 오기 시작합니다. foo 카운터는 단순히 무작위로 깜박이는 조명을 가지고 있거나 입력이 불분명 한 실제 카운터 일 수 있습니다.

1996 년 전문 용어 파일 4.0.0부터 :

이 사전의 이전 버전은 'baz'를 스탠포드 바 손상으로 파생했습니다. 그러나 Pete Samson (TMRC 어휘집의 컴파일러)은 1958 년 TMRC에 합류했을 때 이미 최신 상태라고보고했다. "포고 (Pogo)에서 온 것"이라고 말하고있다. 또는 'Rowrbazzle!' 클럽 배치는 Rowrfolk와 Bassex의 (신화적인) 뉴 잉글랜드 카운티를 모형화하는 것으로 알려졌다. (Norfolk / Suffolk / Middlesex / Essex)

TMRC 사전 1 년 전인 1958 년 MIT Voo Doo Gazette ( "MIT 학장 사무실 유머 보완책 ") (PDF) 는 John Banzhaf (전기 공학 학생)의 "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 월에 프로그래밍 언어 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 월 AMIT-064의 MIT의 Project MAC 또는 " Timothy P. Hart와 Michael Levin의 LISP Exercises "의 "foo"에 대한 다음 참조와 거의 같을 것으로 기대한다 .

차 [(((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 에서 나온 것입니다.

PRIN1과 같이 EXPLODE는 슬래시를 삽입하므로 (EXPLODE (QUOTE FOO / BAR)) PRIN1은 (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 프로그래머는이 동일한 명령 문자열을 사용했습니다.

1998 년 Daniel PB Smith :

Dick Gruen은 기숙사 방에 B- 배터리, 저항기, 커패시터 및 NE-2 네온 튜브의 일반적인 조립품 인 장치를 가지고 있는데이를 "foo counter"라고했습니다. 이것은 1964 년경 쯤되었을 것입니다.

1996 년 Robert Schuldenfrei :

변수 이름의 예로 FOO와 BAR을 사용하는 것은 최소한 1964 년과 IBM 7070으로 거슬러 올라갑니다. 이전 버전 일 수도 있지만, 처음 보았습니다. 이것은 어셈블러에있었습니다. FORTRAN 정수는 무엇입니까? IFOO와 IBAR?

1992 년 Paul M. Wexelblat :

초기 PDP-1 어셈블러는 기호 (18 비트 시스템) 프로그래머에게 두 문자를 사용하여 문제를 해결하기 위해 항상 패치 공간으로 몇 단어를 남겼습니다. (공간을 패치하고, 새 코드를 작성하고, 뒤로 건너 뛰십시오.) 그 공간은 일반적으로 FU로 명명되었습니다. 말할 때, 그것은 FU 공간으로 알려졌습니다. 나중에 어셈블러 (예 : MIDAS는 3 개의 문자 태그를 허용하므로 FU는 FOO가되었으며 모든 PDP-1 프로그래머는 FOO 공간이라고 알려줍니다.

1996 년 브루스 비 레이놀즈 :

FOO (FU) BAR의 IBM 측은 BAR 측을 기본 주소 레지스터로 사용합니다. 1970 년대 중반 CICS 프로그래머는 다양한 xxxBAR을 걱정해야했습니다.

여기 1955 년의 IBM "BAR"이 있습니다.


다른 초기 참고 문헌 :


RFC3092와 다른 곳에서 제안한 것처럼 foo bar에 대한 "inverted foo signal"에 대한 참조를 찾을 수 없었습니다.

다음은 이전 F00 중 일부입니다. 그러나 우연의 일치 / 거짓 긍정이라고 생각합니다.


13

"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 등은 컨텐츠가 실제로 중요하지 않지만 아이디어가 중요한 개념을 강조하는 데 사용됩니다.


아, 진짜 대답입니다!
nickf

1
예, 그러나 왜 Foo and Bar가 구체적입니까? Lorum과 Ipsum은 왜 안됩니까?

en.wikipedia.org/wiki/Foo 는 정확할 수 있습니다 ...

@TofuBeer Yep, 그들은 "전이 변수"입니다. @masher는 Lorem과 Ipsum이 아닌 Foo and Bar에 대한 수많은 참조로 내 대답을 봅니다. programmers.stackexchange.com/questions/69788/… 실제로, 수년 동안, 그리고 다른 장소에서 사용 된 다양한 메타 신택 틱 변수가 있습니다.
휴고

7

에서 http://en.wikipedia.org/wiki/Foobar

기술적으로이 단어는 원래 1960 년대와 1970 년대 초에 Digital Equipment Corporation의 시스템 설명서를 통해 전파되었습니다. 또 다른 가능성은 foobar가 반전 된 foo 신호로서 전자 장치에서 진화 한 것입니다. 이는 디지털 신호가 활성으로 낮 으면 (음 또는 제로 전압 조건이 "1"을 나타냄) 수평 막대가 일반적으로 신호 레이블 위에 놓이기 때문입니다. 전문 용어 파일은 foo가 FUBAR보다 이전의 사례 일 수 있습니다.


이것은 이유를 설명하지 않습니다

나는 1964 년부터 LISP와 PDP-1과 Project MAC에 대한 연구에서 MIT의 첫 번째 "foo"와 그 이후의 "bar", 그리고 매사추세츠 주 DEC에 대한 많은 참고 문헌을 발견했습니다. 좋은 생각이지만 "반전 된 foo 신호"에 대한 참조를 찾을 수 없습니다. 자세한 내용은 여기 : programmers.stackexchange.com/questions/69788/…
Hugo

7

전문 용어 파일에서 http://www.catb.org/jargon/html/F/foo.html

foo : / foo /

  1. interj. 혐오의 기간.
  2. [매우 일반적] 매우 일반적으로 샘플 이름으로 사용됩니다 (예 : esp). 프로그램 및 파일 (예 : 스크래치 파일)
  3. 먼저 구문 예제에 사용 된 메타 신택 틱 변수의 표준 목록입니다. bar, baz, qux, quux, garply, waldo, fred, plugh, xyzzy, thud도 참조하십시오.

바 : / bar /, n.

  1. [매우 일반적] foo 이후 및 baz 이전의 두 번째 메타 구문 구문 변수 “FOO와 BAR의 두 가지 기능이 있다고 가정합니다. FOO는 BAR이라고 부릅니다 ....”
  2. foobar를 생성하기 위해 종종 foo에 추가됩니다.


4

나는 Foo Bar에 관한 전문 용어 파일을 두 번째로 사용합니다.

적어도 1963 년까지 거슬러 올라갈 수 있으며 MIT의 26 번 빌딩 2 층에있는 PDP-1 일련 번호 2입니다. Foo와 Foo Bar는 1964 년 이후 프로젝트 MAC의 PDP-6 실에서 사용되었습니다.


Foo Bar의 가장 오래된 용도 중 하나를 목격 한 +1 :) Foo와 Foo Bar는 실제로 정확히 어떻게 사용 되었습니까?
휴고

추신 : 나는 큰 대답에 당신의 인용문을 포함했습니다 : programmers.stackexchange.com/questions/69788/…
Hugo Hugo

2

내가 아는 한, 푸 "망가"의 변경, 약자 군사 캐치 phraase이다는 foobar에서 온다 " F *** 에드 U의 P는 B eyond 게요 r에 ecognition."

그런 다음 다시 다른 출처가있을 수 있습니다.

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


0

Foo and Bar (FUBAR ... F *** ed Up Beyond All Recognition이라고도 함)는 클래스, 속성, 메서드 이름 등과 같은 것들에 대한 표준 일반 이름으로 사용되었습니다.

기본적으로 아이디어는 코드가 작동하는 방식에서 벗어날 수있는 많은 관련 정보없이 코드를 전달하는 것입니다 (즉, 함수 이름이 AddUser라는 것을 알 필요가 없으므로 코드를보고 코드 이름을 바꾸면 어떻게되는지 이해할 필요가 없습니다) Foo ()).


-3

대부분의 경우보다 관련성이 높은 예시 단어로 대체 될 수있는 넌센스 단어입니다. "foo"와 "bar"라는 단어는 좋은 예를 생각할 수 없을 때 프로그래밍에 자주 사용됩니다.

"foo"와 "bar"가 FUBAR에서 파생 된 경우, 예제를 통해 인식 할 수없는 것이 없을 때 많은 전문가들이 지침 예제에서 사용하는 이유는 무엇입니까?

나에게,이 단어들을 부적절하게 사용하는 것은 인식 할 수없는 것입니다.


2
질문 바로 아래에는 배너가 있습니다. 우리는 설명과 맥락을 제공하는 긴 답변을 찾고 있습니다. 한 줄만 대답하지 마십시오. 인용에 이상적으로 답이 적합한 이유를 설명하십시오. 설명이 포함되지 않은 답변은 제거 될 수 있습니다. 당신의 대답은 설명을 거의 제공하지 않습니다. 현재는 단지 의견 일뿐입니다.
Martijn Pieters

다른 많은 짧은 답변이 있습니다. 적용되지 않는 기술을 지적하는 대신 내가 말하는 것에 동의하지 않는 경우 왜 논증을 제공하지 않습니까?
John

rev 2의 편집은이 답변을 이전보다 더 나쁘게 만들었습니다 (더 나빠질 수있는 것을 상상하기는 어렵지만). 이제 4 년 전에 게시 된 또 다른 답변 을 반복 하는 것 입니다
gnat
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.