Contents

조회 수 21237 댓글 0
Atachment
첨부 '1'
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

foobar.png




프로그래밍 예제를 보면서 함수를 사용할 때 함수 이름에서 foo(), bar() 를 자주 접하게 된다.

사실 의미와 유래는 크게 중요하지 않지만 뭐든 알고 있으면 나쁠게 있나 ㅋㄷ;

위키피디아 설명에 그 기원이 대략적으로 나와 있다.


foo 란 정찰병의 약자로 아주 오래전부터 쓰여왔다고 한다.

전방  감시 사무관(forward observation officer)이란 명칭은 너무 길어 전쟁 와중에 정찰병~ 정찰병~ 이렇게 부르려면 뒤진다.

그래서 foo 라고 불렀고, 군대 은어가 된 셈이다.


foo 는 공군에서 foo fighter 로 자주 쓰였는데, 2차 세계 대전때 정체불명의 비행기(UFO)가 너무 많아 적군인지 아군인지 파악할 수 없었다.

그래서, 정찰비행기는 정찰겸 전투로 치르는 foo fighter 라 불리는 것이다.

foo fighter 를 자주 부르다보면 푸빠, 푸파~ 라고 터짜를 빼게된다.

그래서 나온 줄임말이 FUBAR 다.


[참고] FUBAR를 Fucked Up Beyond All Repair 의 약자(채팅약어)로 해석하는 사람도 있다.

(수리할 수 없는 상태로 망가진 엉망인..)

개인적으로는 프로그래밍에 사용되는 용어의 어원이라면 foo fighter 어원 쪽이 더 맞는것 같다.


foo는 이후에 여러 곳에서 등장했는데 한 게임의 프로그램에서는 foo()함수가 비밀을 알아내는 단초를 제공하는 단어를 표현했었다.

그래서, foo 함수는 게임에서 특정 비밀을 알아내는 단서를 제공하는 용도로 사용되었다.


그 이후에는 MIT 기차클럽에서 foo 함수와 bar 함수가 사용되었는데, 이 클럽의 방에는 2개의 문이 있었고, 각 문의 명칭이 foo 와 bar 였다.

MIT 기차클럽에서 foo 함수와 bar 함수를 쓴 이유는 기차의 레일 스위칭 원리에 있다.

기존의 아날로그식에서 전자식으로 변화되면서 기차 레일이 변경되는 신호는 열차에게 미리 전초병과 같이 알려져야 하며, 이 신호는 보드판에 불이 들어오도록 되어있어 열차 레일들의 스위칭 상태를 알 수 있었다.

이 스위치를 마치 전쟁에서 정찰병과 같이 미리 상황을 알려준다는 의미에서 foo 스위치라고 불렀기 때문에 사용되었다.

이 후에는 MIT 해커클럽에서 특별한 아이디어나 재미를 위해 foo 함수와 bar 함수를 통해 자주 인용되었다.

때문에 해커들에게는 foo와 bar는 특정목적을 위해 작동하는 정찰병과 같은 의미이며, 유사시 전투를 할 수 있는 bar의 목적도 가지고 있어 필요하면 목적을 위한 단서정보를 획득하고, 가능하면 목적자체를 달성하는 의미의 함수이다.


이후에는 foo와 bar 가 각 종 예제 및 강의에서 사용되었는데, 강의의 주제에 대한 의미를 알려주는 단초를 제공하는 예시 함수로써 사용되었으며, 예시 함수만으로 의미 이상의 의미를 제공하는 bar의 의미도 내포하도록 사용되었다.


지금은 FUBAR의 의미가 퇴색되어 아무 의미도 없는 그저 예시용 함수로 사용되어진다.


만약, 우리가 foo와 bar의 함수로 예시를 들 경우가 생기거나 특별한 프로그램을 만든다면, 이 foo와 bar의 의미를 알고 쓴다면 참 멋지지 않을까 생각해본다.



?

List of Articles
번호 분류 제목 글쓴이 날짜 조회 수
1173 Develop '2014 모바일 개발 트렌드' 발표자료입니다. file hooni 2014.10.02 974
1172 System/OS Apache CORS 설정 1 hooni 2020.09.04 2687
1171 Develop Aspect Oriented Programming in Objective-C hooni 2015.05.18 672
1170 System/OS asx미디어 정보 기록.. hooni 2003.04.23 20533
1169 System/OS CentOS 6.5 USB 설치 6 file hooni 2013.12.18 37668
1168 System/OS CentOS 에서 Cacti 설치하기 hooni 2015.01.02 1754
1167 System/OS Configure Postfix to Use Gmail SMTP on Ubuntu 18.04 file hooni 2020.02.07 1228
1166 Develop DDay Memo 1.9.4 소스코드 secret hooni 2015.10.03 0
1165 Etc EBS [수학영역] 미적분과 통계 기본 - 정규분포의 의미와 특징은? hooni 2015.04.20 1000
1164 System/OS Enable Safari Hidden Debug Menu in Mac OS X file hooni 2017.02.07 1128
1163 System/OS Enable the Develop Menu in Safari file hooni 2017.02.07 1056
1162 Develop GCM 사용하기 2 (단말에 GCM 구현하기) file hooni 2013.07.06 23248
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 ... 98 Next
/ 98