프로그래밍을 하다보면 책이나 웹 사이트의 예제 코드에서 foo, bar 와 같은 문자를 흔히 볼 수 있다. 변수명 또는 함수명을 짓거나 간단한 문자열 값이 필요한데 딱히 쓸 말이 없을 때 주로 사용하는 문자들이다.
이런 문자들을 Metasyntactic variable 이라고 한다. 굳이 우리말로 하자면 ‘메타문법적 변수’라고 하나...? 그런데 왜 하필 foo, bar 일까?
정답부터 얘기하자면 ‘모른다’ foo, bar 의 정확한 어원은 알 수 없지만 몇 가지 설이 있다.
첫 번째로 세계 2차 대전 (1939 ~ 1945)에서 나온 은어 FUBAR 에서 유래되었다는 설이다. FUBAR 는 F*cked Up Beyond All Repair/Recognition 의 준말로 ‘수리할 수 없을 정도로 엉망인’, ‘고칠 수도 없고, 알아볼 수도 없을 정도로 망쳐진’ 이라는 뜻이다.
1930 ~ 1952년 사이에 만화가 Bill Holman 이 그린 Smokey Stover 라는 코믹북에서 foo 라는 단어가 처음 등장했다고 하는데, 차이나타운에서 Good luck (행운을 빈다)는 의미었다고 한다. 한자 ‘복 복’(福) 자가 중국어로 fu (foo) 라고 발음된다고 하여, 여기서 유래되었다는 것이 두 번째 설이다.
https://en.wikipedia.org/wiki/Foobar
프로그래밍에서 처음 foo, bar 가 등장한 건 바로 MIT의 Tech Model Railroad Club (TMRC) 이라고 한다. 이 동호회에서 만든 모형 열차에는 비상 정지 버튼이 있었는데 멈출 때 화면에 FOO 라는 글자가 나와서 ‘Foo switch’ 라고 불렀다. 그 이후 TMRC 용어 사전에
Foo는 옴 마니 반메 훔 을 '푸 마니 반메 훔’이라고 잘못 인용한 데서 온 말이다.
라고 기록되었다고 한다. 이 foo 에다가 FUBAR 에서 온 bar 가 합쳐졌다는 이야기도 있고, foo 스위치 옆에 bar 스위치도 있었다는 이야기도 있다. 어쨌거나 MIT 해커들은 여기서 영감을 얻어서 변수명에 foo 와 bar 를 사용하기 시작했다고 한다.
foo, bar 외에 사용할 수 있는 것들은 무엇이 있을까? 보통 foo, bar 를 많이 사용하고, 여러가지 많이 이용하는데, 신기한 점은 나라 혹은 언어 별로 조금씩 다르다는 점이다.
dgx
dfs
foobar
foo
bar
baz
qux
quux
corge
grault
graply
waldo
fred
plugh
xyzzy
thud
영국
wibble
wobble
wubble
flob
호주
blep
blah
boop
일본
hoge
piyo
Python
https://en.wikipedia.org/wiki/Metasyntactic_variable
https://en.wikipedia.org/wiki/Foobar
댓글 영역