프로그래밍을 하다보면 책이나 웹 사이트의 예제 코드에서 foo, bar 와 같은 문자를 흔히 볼 수 있는데요, 변수명 또는 함수명을 짓거나 간단한 문자열 값이 필요한데 딱히 쓸 말이 없을 때 주로 사용하는 문자들입니다.
이런 문자들을 Metasyntactic variable 이라고 합니다. 굳이 우리말로 하자면 ‘메타문법적 변수’ 라고나 할까요. 그런데 왜 하필 foo, bar 일까요? 이건 어디서 왔고 어떤 의미를 지니고 있는 걸까요?
정답부터 얘기하자면 ‘모른다’ 입니다. foo, bar 의 정확한 어원은 알 수 없지만 몇 가지 설이 있습니다.
전쟁 중 나온 은어
첫 번째로 세계 2차 대전 (1939 ~ 1945)에서 나온 은어 FUBAR 에서 유래되었다는 설입니다. FUBAR 는 F*cked Up Beyond All Repair/Recognition 의 준말로 ‘수리할 수 없을 정도로 엉망인’, ‘고칠 수도 없고, 알아볼 수도 없을 정도로 망쳐진’ 이라는 뜻입니다.
Smokey Stover
1930 ~ 1952년 사이에 만화가 Bill Holman 이 그린 Smokey Stover 라는 코믹북에서 foo 라는 단어가 처음 등장했다고 하는데, 차이나타운에서 Good luck (행운을 빈다)는 의미었다고 합니다. 한자 ‘복 복’(福) 자가 중국어로 fu (foo) 라고 발음된다고 하네요. 여기서 유래되었다는 것이 두 번째 설입니다.
프로그래밍에서의 foo, bar
프로그래밍에서 처음 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 외에 사용할 수 있는 것들은 무엇이 있을까요?
공통
보통 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
파이썬을 짤 때 자주 쓰이는 건 따로 있다고 하네요.
- spam
- ham
- eggs
참고 사이트
https://en.wikipedia.org/wiki/Metasyntactic_variable
https://en.wikipedia.org/wiki/Foobar
이번 포스팅에서는 foo, bar 의 어원과 메타문법적 변수들의 종류에 대해 알아봤습니다.