Hacker Folklore

Matthias Endler

해커 포클로어

일부 컴퓨터 용어에는 놀라운 유래가 숨어 있습니다. 그중 많은 용어는 이미 오래전에 사라진 기술에서 비롯되었습니다. 이 글에서는 우리가 매일 사용하면서도 그 기원을 정확히 알지 못하는 몇 가지 용어들의 흥미로운 역사를 먼지를 털어내듯 꺼내 보려 합니다. 바로 시작해 보겠습니다!

바이크셰딩(Bike-Shedding)

오늘날의 의미: 사소한 문제를 두고 벌이는 무의미한 논쟁.

자전거 보관소 효과(bikeshed effect) 혹은 바이크셰딩(bike-shedding)이라는 용어는 사소함의 법칙을 설명하기 위한 은유로 만들어졌습니다. 1999년 덴마크 출신 개발자 폴-헤닝 캄프(Poul-Henning Kamp)가 FreeBSD 메일링 리스트에서 이 용어를 널리 알렸고, 이후 소프트웨어 업계 전반으로 퍼져나갔습니다.

이 개념은 본래 더 넓은 개념인 ‘파킨슨 법칙’ 패러디에 대한 부연으로 처음 제시되었습니다. 그는 이 ‘사소함의 법칙’을 원자력 발전소에 대한 위원회의 논의와 자전거 보관소에 대한 논의를 대비시키며 극적으로 설명했습니다. 그의 말대로라면 “의제 항목 하나에 소요되는 시간은 그 항목에 관련된 금액에 반비례한다”는 것이었습니다.

원자로는 워낙 비싸고 복잡해서 일반인은 이해할 수 없으므로, 그 일을 하는 사람들은 당연히 잘 알 것이라 여기게 됩니다. 반면 누구나 값싸고 단순한 자전거 보관소는 머릿속에 그릴 수 있기 때문에, 보관소 하나를 계획하는 일에도 모두가 한마디씩 보태고 자신의 기여를 드러내려 하면서 끝없는 토론이 벌어질 수 있습니다.
참고 - 위키백과: 사소함의 법칙

보일러플레이트(Boilerplate)

물을 끓이는 보일러용 강판을 구부리던 옛 기계.
물을 끓이는 보일러용 강판을 구부리던 옛 기계.
출처: Wikimedia Commons

오늘날의 의미: 거의 수정 없이 반복해서 복사해 쓰는 코드 조각.

Boiler plate는 원래 물을 끓이는 보일러를 만드는 데 쓰인 압연 강판을 가리켰지만, 언론에서는 진부하거나 독창성 없는 글을 일컫는 말로 쓰입니다. 이 용어는 광고나 신디케이트 칼럼처럼 미리 준비된 텍스트를 인쇄한 금속 인쇄판을 가리키는 데서 유래했습니다. 이런 인쇄판은 비유적으로 ‘보일러플레이트(boilerplate)’라 불리게 되었습니다. 이러한 보일러플레이트를 신문사에 대량으로 공급하던 업체 중 하나가 웨스턴 뉴즈페이퍼 유니온(Western Newspaper Union)이었는데, 이 회사는 지리적으로 규모가 작은 신문사들에 “전국 또는 국제 뉴스를 담은 인쇄용 기사”를 공급했고, 여기에는 기존 지면 옆에 미리 인쇄된 광고가 포함되기도 했습니다.

참고 자료:

전경에 있는 남자가 둥글게 말린 인쇄판을 들고 있다. 이러한 인쇄판은 웨스턴 뉴즈페이퍼 유니온과 같은 회사들이 수많은 소규모 신문사에 공급하던 것이다.
전경에 있는 남자가 둥글게 말린 인쇄판을 들고 있다. 이러한 인쇄판은 웨스턴 뉴즈페이퍼 유니온과 같은 회사들이 수많은 소규모 신문사에 공급하던 것이다.
출처: Wikimedia Commons

부트 / 리부트 / 부트스트래핑(Boot / Reboot / Bootstrapping)

늪에서 자신의 땋은 머리를 잡고 스스로를 끌어올리는 뮌하우젠 남작의 석판화
늪에서 자신의 땋은 머리를 잡고 스스로를 끌어올리는 뮌하우젠 남작의 석판화
출처: Wikimedia

boot라는 용어는 컴퓨터에서 시스템을 시작하는 과정을 가리키는 말로 쓰입니다.

컴파일러 개발에서 부트스트래핑(bootstrapping)이란 컴파일러를 새로운 언어로 다시 작성하는 과정을 말합니다. 첫 번째 컴파일러는 기존 언어로 작성됩니다. 그다음 새로운 언어로 다시 작성된 뒤 자기 자신에 의해 컴파일됩니다.

“자신의 부트스트랩을 잡아당겨 몸을 일으킨다(to pull oneself up by one’s bootstraps)”는 말은 19세기로 거슬러 올라갑니다. 긴 부츠에는 신고 벗기 쉽도록 위쪽에 탭이나 고리, 손잡이가 달려 있는 경우가 있는데, 이 은유에서 외부 도움 없이 스스로 유지되는 과정에 대한 추가적인 은유들이 파생되었습니다.

위키백과에 따르면,

이 관용구는 적어도 1834년으로 거슬러 올라가며, 당시 《Workingman’s Advocate》지에 이렇게 등장했습니다. “머피 씨는 이제 부츠 끈을 이용해 컴벌랜드강이나 외양간 울타리를 스스로 넘어갈 수 있을 것으로 추측된다.”

Merriam-Webster에도 잘 정리된 요약이 있습니다.

버그(Bug)

오늘날의 의미: 코드나 하드웨어의 결함.

그 기원은 알려지지 않았습니다!

널리 알려진 것과 달리, 이 용어는 그레이스 호퍼(Grace Hopper)가 Mark II 컴퓨터에서 발견한 버그보다 먼저 존재했습니다.

이 용어는 그보다 훨씬 이전부터 엔지니어들이 사용해 왔습니다. 적어도 1870년대부터였으며, 전자식 컴퓨터와 컴퓨터 소프트웨어보다도 앞섭니다. 토머스 에디슨도 자신의 노트에서 “bug”라는 용어를 사용했습니다. 참고

비트(Bit)

이 용어를 처음 만든 사람은 존 W. 튜키(John W. Tukey)로 알려져 있습니다. 그는 1947년 1월 9일 벨 연구소(Bell Labs)를 위해 작성한 메모에서 “binary information digit(이진 정보 단위)”을 줄여 “bit”이라 표기했습니다. 참고

바이트(Byte)

“byte”라는 용어는 1956년 6월 베르너 부흐홀츠(Werner Buchholz)가 처음 도입했습니다. 당시 IBM 스트레치(Stretch) 컴퓨터의 초기 설계 단계였습니다. 이 컴퓨터는 개별 비트 단위까지 주소를 지정할 수 있고, 바이트 크기가 명령어 자체에 인코딩된 가변 길이 명령어를 허용하는 설계를 가지고 있었습니다. “bite”가 아닌 “byte”라는 철자를 선택한 것은 “bit”으로 오탈자되는 것을 방지하기 위한 의도적인 선택이었습니다.

캐리지 리턴과 줄 바꿈(Carriage Return and Line Feed)

오늘날의 의미: 커서를 다음 줄의 맨 앞으로 이동시키는 동작.

이 두 용어는 타자기에서 유래했습니다.

캐리지는 종이를 고정하고 글쇠를 누를 때마다 타이핑 위치를 앞으로 이동시키기 위해 왼쪽에서 오른쪽으로 움직입니다. 종이를 ‘운반한다’는 뜻에서 캐리지라 불립니다. 캐리지 리턴은 캐리지가 종이의 가장 왼쪽 원래 위치로 되돌아가는 동작입니다.

그러나 캐리지를 단순히 왼쪽으로 되돌리는 것만으로는 새 줄을 시작할 수 없습니다. 캐리지는 여전히 같은 줄의 맨 앞에 머물게 되기 때문입니다. 새 줄로 이동하려면 줄 바꿈(line feed)이 필요했습니다. 줄 바꿈은 타자기 내부의 종이를 한 줄 위로 올려 보냈습니다.

이 두 동작 — 캐리지 리턴(CR)과 줄 바꿈(LF) — 은 보통 캐리지 리턴 레버를 당기는 한 번의 동작으로 함께 수행되었습니다.

기계식 타자기. 캐리지 리턴 레버는 바깥쪽 왼쪽에 있다.
기계식 타자기. 캐리지 리턴 레버는 바깥쪽 왼쪽에 있다.
출처: piqsels
  • Unix 계열 시스템(Linux나 macOS 등)에서는 \n이 여전히 줄 바꿈(ASCII 기호: LF) 또는 개행(newline)을 의미합니다.
  • CP/M, DOS 및 Windows에서는 \r\n이 사용되며, 여기서 \r은 캐리지 리턴을, \n은 줄 바꿈을 의미합니다(CR+LF).
  • 참고

캐리지 리턴과 줄 바꿈의 기본 작동 원리를 보여주는 오래된 영상입니다:

커맨드 키 기호(⌘)

오늘날의 의미: 추가적인 키 조합을 제공하기 위해 애플 컴퓨터에 탑재된 메타 키.

위키백과에서 직접 인용합니다(강조는 필자):

⌘ 기호는 매킨토시 프로젝트의 막바지에 도입되었습니다. 개발팀은 원래 예전의 Apple 키를 사용하려 했지만, 스티브 잡스는 키 명령어 옆에 메뉴마다 ‘사과’가 가득 차는 것이 회사 로고를 남용하는 것이라며 불편해했습니다. 그는 다른 키 기호를 선택하기로 했습니다. 마감까지 며칠밖에 남지 않은 상황에서 팀의 비트맵 아티스트였던 수전 케이어(Susan Kare)는 애플 로고를 대체할 기호를 찾기 위해 조사를 시작했습니다. 그녀는 기호 사전을 뒤지던 중 북유럽 국가들에서 문화 유적지와 명소를 나타내는 지표로 흔히 쓰이는 네 잎 클로버 모양의 기호를 발견했습니다(덴마크, 핀란드, 아이슬란드, 노르웨이, 스웨덴에서는 공식적으로 관광 명소 도로 표지판으로 쓰이며, 스웨덴의 맥 사용자들은 이 컴퓨터 키를 흔히 Fornminne — 고대 기념물 —, 덴마크 사용자들은 Seværdighedstegn이라 불러왔습니다). 그녀가 팀원들에게 이 기호를 보여주자 모두가 마음에 들어 했고, 그렇게 1984년 매킨토시 커맨드 키의 기호가 되었습니다. 수전 케이어는 이후 이 기호가 스칸디나비아에서의 용법 때문에 선택되었으며, 위에서 내려다본 둥근 모서리 탑을 가진 네모난 성, 특히 보리홀름 성(Borgholm Castle)의 모양을 닮았기 때문이라는 얘기를 들었다고 전했습니다.

노르웨이 관광 명소(Severdighet) 도로 표지판
노르웨이 관광 명소(Severdighet) 도로 표지판
출처: Wikimedia Commons
해당 기호의 모델이 되었을 것으로 추정되는 보리홀름 성의 항공 사진
해당 기호의 모델이 되었을 것으로 추정되는 보리홀름 성의 항공 사진
출처: Wikimedia Commons

참고 자료:

쿠키(Cookie)

오늘날의 의미: 웹사이트에서 전송되어 사용자의 웹 브라우저에 저장되는 작은 데이터 조각.

cookie라는 용어는 1994년 가을, 당시 23세였던 웹 브라우저 프로그래머 루 몬툴리(Lou Montulli)가 만들었습니다. 이는 유닉스 프로그래머들이 사용하던 매직 쿠키(magic cookie)라는 용어에서 영감을 받은 것으로, 매직 쿠키는 프로그램이 받아서 변경하지 않고 그대로 돌려보내는 데이터 패킷을 말합니다. 이 용어는 다시 그 안에 메시지가 들어 있는 과자인 포춘 쿠키(fortune cookie)에서 유래했습니다.

몬툴리는 웹 브라우저가 받아서 변경 없이 웹 서버에 그대로 돌려보내는 작은 데이터 패킷을 설명하기 위해 cookie라는 용어를 사용했습니다.

“그러니까, 그 쿠키 말이죠.” 몬툴리는 웃으며 말합니다. “제 인생에서 단 일주일이 제가 한 일 중 가장 중요한 일이 되었어요.” (참고)

코어 덤프(Core Dump)

오늘날의 의미: (충돌한) 프로그램의 메모리를 모두 저장해 오프라인으로 분석할 수 있도록 프로그램 상태를 스냅샷으로 확보하는 일.

이 이름은 자기 코어 메모리(magnetic core memory)에서 유래했습니다. 자기 코어 메모리는 원형 자석 격자를 기반으로 한 초기 저장 장치입니다. 이후 구식이 되었지만, 컴퓨터 프로세스의 스냅샷을 얻는다는 의미로 이 용어는 오늘날에도 여전히 쓰입니다. 참고

1024비트(128바이트)의 데이터를 저장하는 32×32 코어 메모리 평면. 최초의 코어 덤프는 종이에 인쇄되었는데, 이 정도의 작은 용량을 생각하면 납득할 만한 일이다.
1024비트(128바이트)의 데이터를 저장하는 32×32 코어 메모리 평면. 최초의 코어 덤프는 종이에 인쇄되었는데, 이 정도의 작은 용량을 생각하면 납득할 만한 일이다.
출처: Wikimedia Commons

커서(Cursor)

오늘날의 의미: 화면상에서 데이터 입력 위치 등을 나타내는 시각적 표시(예: 깜빡이는 세로선). Merriam-Webster

Cursor는 라틴어로 주자(runner)를 뜻합니다. 커서는 슬라이드 룰(계산자)에서 눈금 위의 한 지점을 표시하기 위해 머리카락처럼 가는 선이 새겨진 투명한 슬라이드에 붙은 이름입니다. 이후 이 용어는 유사성을 통해 컴퓨터로 옮겨왔습니다. 참고

1948년에 처음 생산된 IBM 604 전자 계산 천공기를 광고하는 1951년 12월의 광고. 이 광고는 IBM 604가 슬라이드 룰을 사용하는 엔지니어 150명분의 일을 할 수 있다고 주장한다. 커서(러너)는 슬라이드 중앙에 있는 투명한 부분이다.
출처: 1948년에 처음 생산된 IBM 604 전자 계산 천공기를 광고하는 1951년 12월의 광고. 이 광고는 IBM 604가 슬라이드 룰을 사용하는 엔지니어 150명분의 일을 할 수 있다고 주장한다. 커서(러너)는 슬라이드 중앙에 있는 투명한 부분이다.

데몬(Daemon)

컴퓨팅에서 데몬(daemon)은 인쇄 스풀링이나 파일 전송 같은 서비스 요청을 처리한 뒤 종료되는 백그라운드 프로세스를 말합니다. 이 용어는 1963년 MIT의 프로젝트 맥(Project MAC, Mathematics and Computation) 프로그래머들이 만들었습니다. 그들은 끊임없이 백그라운드에서 분자를 분류하며 일하는 사고 실험 속 가상의 존재인 맥스웰의 도깨비(Maxwell’s demon)에서 이름을 따왔습니다.

MIT 프로그래머들은 끊임없이 시스템 잡무를 처리하는 백그라운드 프로세스에 demon이라는 이름이 적절하다고 생각했습니다. 하지만 demon이라는 단어 대신, 더 오래된 형태인 daemon을 사용했습니다. (참고)

대시보드(Dashboard)

오늘날의 의미: 시스템 상태를 한눈에 볼 수 있도록 제공하는 사용자 인터페이스.

원래 대시보드는 말이 끄는 마차 앞쪽에 있던 나무 판자로, 말굽이 뒤로 튕겨 올리는 진흙으로부터 마부를 보호하는 역할을 했습니다.

자동차가 만들어지면서 운전석 앞의 판에도 같은 이름이 붙었습니다. 운전자가 쉽게 볼 수 있도록 필요한 계기판을 두기에 논리적인 위치였기 때문입니다. 시간이 지나면서 이 용어는 보호 기능보다는 계기판 자체와 더 강하게 연관되게 되었습니다. 참고

마차의 대시보드.
마차의 대시보드.
출처: Wikimedia Commons

방화벽(Firewall)

오늘날의 의미: 인터넷과 같은 신뢰할 수 없는 외부 네트워크와 신뢰할 수 있는 내부 네트워크 사이에 장벽을 세우는 네트워크 보안 시스템.

방화벽은 주로 연립주택에 사용되지만 단독 주택에도 사용됩니다. 화재 발생 시 불과 연기가 건물의 다른 부분으로 퍼지는 것을 막아 대형 화재를 예방합니다. 이 용어는 컴퓨팅 분야에서 80년대부터 사용되었습니다. 참고

두 개의 별도 주거 단위이자 방화 구역으로 건물을 나누는 주택용 방화벽 시공.
두 개의 별도 주거 단위이자 방화 구역으로 건물을 나누는 주택용 방화벽 시공.
출처: Wikimedia Commons

펌웨어(Firmware)

오늘날의 의미: 장치의 특정 하드웨어에 대한 저수준 제어를 제공하고 하드웨어와 밀접하게 결합된 컴퓨터 소프트웨어의 한 종류.

애셔 오플러(Ascher Opler)는 1967년 Datamation지의 기사에서 firmware라는 용어를 만들었습니다. 원래 쓰임에서 펌웨어는 하드웨어(CPU 자체)와 소프트웨어(CPU에서 실행되는 일반적인 명령어)와 대비되었습니다. 하드웨어와 소프트웨어의 경계에 존재했기 때문에 “펌웨어(firmware)”라는 이름이 붙었습니다. 원문은 인터넷 아카이브(Internet Archive)에서 볼 수 있습니다. 참고

Foo와 Bar

오늘날의 의미: 흔히 쓰이는 임시 변수 이름.

원래 이 용어는 군사용어인 FUBAR에서 유래했을 가능성이 있습니다. 여러 변형이 있지만 흔한 의미는 FUBAR: “완전히 망가져서 알아볼 수 없을 정도(f***ed up beyond all recognition)”입니다.

프로그래밍 맥락에서 foo의 사용은 일반적으로 1960년경 MIT의 기술 모델 철도 동아리(TMRC)에 기원한 것으로 알려져 있습니다. 복잡한 모형 시스템에는 열차가 장애물에 전속력으로 돌진하는 등 바람직하지 않은 일이 발생하려 할 때 작동시킬 수 있는 스크램(scr am) 스위치가 방 곳곳에 설치되어 있었습니다.

제가 이해한 바로는 그들은 말 그대로 foo라고 표시된 비상 버튼을 가지고 있었는데, 더 마땅한 이름이 없어 그렇게 붙인 것이었습니다. 아마 원래의 군사용어인 FUBAR가 무언가 심각하게 잘못되고 있음을 나타낸다는 의미와 관련이 있을지도 모릅니다.

부주의한 작동을 막기 위해 누를 수 있는 스크램 스위치(버튼). TMRC에는 아마 대신 foo라고 표시된 버튼이 있었을 것이다
부주의한 작동을 막기 위해 누를 수 있는 스크램 스위치(버튼). TMRC에는 아마 대신 foo라고 표시된 버튼이 있었을 것이다
출처: Wikimedia Commons

참고 자료:

프리랜서(Freelancer)

오늘날의 의미: 특정 고용주에게 장기간 소속되지 않고 독립적으로 일하는 사람.

이 용어는 월터 스콧 경(Sir Walter Scott)의 소설 《아이반호(Ivanhoe)》에서 처음 등장합니다. (이 소설은 로빈 후드 전설에도 지속적인 영향을 미쳤습니다.)

클래식 코믹스(Classic Comics) 표지
클래식 코믹스(Classic Comics) 표지
출처: Wikimedia Commons

소설 속에서 한 영주가 자신의 유료 군대인 ‘자유 창병(free lances)’을 리처드 왕에게 제공합니다.

나는 리처드에게 내 자유 창병들의 봉사를 제안했으나 그는 거절했다 — 나는 그들을 이끌고 헐(Hull)로 가 배를 탈취해 플란더스로 출항할 것이다. 어수선한 시국 덕분에 행동하는 사나이는 언제나 일자리를 찾을 수 있으니.

따라서 “프리랜서(free lancer)”란 가장 많은 돈을 주는 사람을 위해 싸우는 사람을 뜻합니다. free는 ‘무보수’가 아니라 어떤 고용주를 위해서든 일할 수 있는 추가적인 자유를 의미합니다. 참고

해시(Hash)

오늘날의 의미: 해시 함수란 임의 크기의 데이터를 고정 크기 값으로 매핑하는 데 사용할 수 있는 모든 함수를 말합니다.

위키백과에 따르면 해시 함수에서 “hash”라는 단어의 사용은 비기술적인 의미인 “썰고 섞다(chop and mix)”에 대한 유추에서 비롯되었습니다. 실제로 모듈러 연산과 같은 전형적인 해시 함수는 입력 도메인을 여러 하위 도메인으로 “자른 뒤”, 키 분포의 균일성을 높이기 위해 출력 범위에 “섞어” 넣습니다.

참고 자료:

로그 / 로그 파일(Log / Logfile)

오늘날의 의미: 컴퓨터 프로그램이나 시스템의 이벤트를 기록하는 파일.

선원들은 배의 속도를 측정하기 위해 이른바 항정 로그(log line)를 사용했습니다. 평평한 나무 조각(로그)에 긴 밧줄을 묶고, 로그에는 일정한 간격으로 매듭을 지었습니다. 로그가 멀어져 떠내려갈 때 선원들은 일정한 시간 동안 풀려나가는 매듭의 수를 셌고, 그것이 바로 배의 속도 — 즉 노트(knot)가 되었습니다.

배의 속도는 항해에 중요했으므로 선원들은 이를 다른 정보와 함께 책에 기록했습니다. 이 책은 항정일지(log book)라 불렸으며, 배의 위치를 더 정확히 파악하기 위해 육지 표지 관측이나 날씨 같은 정보도 함께 적었습니다. 이후 항구 사용료나 비정상적인 식량 소모 같은, 보다 일반적으로 배와 관련된 추가 정보가 덧붙여졌고 — 즉 기록(log)되었습니다.

참고.

항정 로그로 배의 속도를 측정하는 선원들
항정 로그로 배의 속도를 측정하는 선원들
출처: Duane A. Cline의 《순례자들과 플리머스 식민지: 1620》
항정 로그의 각 부분
항정 로그의 각 부분
출처: Duane A. Cline의 《순례자들과 플리머스 식민지: 1620》
영국 함선 윈첼시(Winchelsea)의 항해 일지 중 한 페이지. 두 번째 열은 항정 로그로 측정한 매듭 수를 나타내며, 이는 배의 속도를 의미한다
영국 함선 윈첼시(Winchelsea)의 항해 일지 중 한 페이지. 두 번째 열은 항정 로그로 측정한 매듭 수를 나타내며, 이는 배의 속도를 의미한다
출처: Peter Reaveley의 《항해 시대의 항법과 항해 일지》

패치(Patch)

오늘날의 의미: 컴퓨터 프로그램을 수정하거나 개선하기 위해 적용할 수 있는 코드 조각.

컴퓨팅 초창기에는 프로그래밍 실수를 하면 구멍 위에 패치를 붙여 종이 테이프나 천공 카드를 고쳐야 했습니다.

뚫린 구멍을 덮어 수정하는 데 사용된 물리적 패치가 붙은 프로그램 테이프.
뚫린 구멍을 덮어 수정하는 데 사용된 물리적 패치가 붙은 프로그램 테이프.
출처: Smithsonian Archives Center

핑(Ping)

오늘날의 의미: 네트워크를 통해 컴퓨터의 도달 가능 여부와 응답 시간을 확인하는 방법.

Ping은 1983년 마이크 무스(Mike Muuss)가 처음 작성한 터미널 프로그램으로, 모든 버전의 UNIX, Windows, macOS에 포함되어 있습니다. 그는 “소나가 내는 소리에서 이름을 따왔으며, 반향 위치 측정(echo-location)이라는 원리 전체에서 영감을 받았다. […] ping은 시간 측정이 가능한 IP/ICMP ECHO_REQUESTECHO_REPLY 패킷을 사용해 대상 기기까지의 ‘거리’를 측정한다”고 설명했습니다. 참고 자료는 일독할 가치가 있습니다.

픽셀(Pixel)

오늘날의 의미: 화면에 표시되는 그림을 구성하는 제어 가능한 가장 작은 요소.

pixel이라는 단어는 pix(“pictures”를 줄인 “pics”에서 유래)와 el(“element”의 약자)의 합성어입니다. 마찬가지로 voxel은 부피 요소(volume element), texel은 텍스처 요소(texture element)를 뜻합니다. 참고

셸(Shell)

오늘날의 의미: 컴퓨터 시스템과 상호작용하기 위한 대화형, 대개 텍스트 기반의 실행 환경.

이 용어를 만든 루이 푸쟁(Louis Pouzin)은 그의 에세이 The Origins of the Shell에서 이름에 대한 설명을 하지 않습니다. 그러나 그 기원은 유닉스의 전신인 멀틱스(Multics)에서 찾을 수 있습니다. 멀틱스 용어집에는 다음과 같이 설명되어 있습니다.

[셸(shell)]은 리스너(listener)에 의해 실행될 명령줄을 전달받는다.

에릭 S. 레이먼드(Eric S. Raymond)The New Hacker’s Dictionary(《Jargon File》로도 알려짐)에는 다음과 같은 내용이 담겨 있습니다.

역사적 참고: 원래의 멀틱스 셸(의미 1)은 셸(의미 3)이었기 때문에 그렇게 불린 것으로 보인다.

여기서 의미 3이란

손으로 또는 다른 프로그램(예: 파서 생성기)에 의해 만들어진 뼈대 프로그램으로, 어떤 작업을 설정하는 데 필요한 주문과 이를 구동하는 제어 흐름을 제공한다(드라이버(driver)라는 용어가 동의어로 쓰이기도 한다). 사용자는 실제 작업을 수행하는 데 필요한 코드를 채워 넣으면 된다. 이러한 용법은 AI와 마이크로소프트 윈도우 분야에서 흔하며, 유닉스 해커들을 혼란스럽게 한다.

안타깝게도 이 책은 이러한 주장을 뒷받침할 증거를 제시하지 않습니다.

저는 (역사적으로 정확하지 않을 수도 있지만) 껍질이 바깥에 있어 커널을 보호하는 견과류에 비유하는 설명을 좋아합니다.

참고

슬랩 할당자(Slab Allocator)

오늘날의 의미: 이전 할당을 재사용하는 효율적인 메모리 할당 기법.

슬랩 할당(slab allocation)은 1994년 존 본윅(John Bonwick)(참고: PDF 파일)이 발명했으며, 이후 Memcached나 리눅스 커널 같은 서비스에서 사용되어 왔습니다.

슬랩 할당에서는 특정 유형이나 크기의 데이터 객체를 위한 캐시가 미리 할당된 다수의 “슬랩(slab)” 메모리를 가집니다. 각 슬랩 안에는 해당 객체에 적합한 고정 크기의 메모리 청크가 들어 있습니다. (위키백과)

slab이라는 이름은 본윅의 십 대 시절 친구에게서 유래했습니다. 그는 오라클 블로그에서 그 이야기를 이렇게 전합니다.

함께 TV를 보던 중 “한 인치를 집을 수 있나요?(Can you pinch an inch?)”라는 문구가 나오는 켈로그 광고가 흘러나왔습니다.

그 의미는 허리에서 1인치 이상의 살을 집을 수 있다면 과체중이며, 콘플레이크 한 그릇을 비우면 도움이 될 것이라는 것이었습니다.

250파운드(약 113kg)쯤 나가던 토미는 망설임 없이 자신의 배를 움켜쥐며 이렇게 응수했습니다. “젠장, 난 슬랩 하나를 통째로 잡을 수 있다고!”

10년 후, 본윅은 더 큰 메모리 덩어리의 할당을 설명할 단어를 찾다가 그 표현을 떠올렸습니다.

다음은 당시 켈로그 광고 원본입니다:

스팸(Spam)

오늘날의 의미: 대량 이메일을 보내거나 포럼과 채팅에 게시하는 등 원치 않는 전자 통신.

이 용어는 1970년 영국 코미디 그룹 몬티 파이선(Monty Python)의 한 스케치로 거슬러 올라갑니다. 스케치에서 카페는 거의 모든 요리에 스팸(Spam)(통조림 돼지고기 가공품)을 넣습니다. Spam은 spiced와 ham의 합성어입니다. 언급되는 과도한 양의 스팸은 제2차 세계대전 이후 영국이 농업 기반을 재건하기 위해 고군분투하던 배급제 시기에 수입 통조림 육류 제품이 널리 퍼져 있던 상황을 풍자한 것입니다. 참고

빈티지 광고: 스팸 한 캔으로 할 수 있는 것들을 보세요
빈티지 광고: 스팸 한 캔으로 할 수 있는 것들을 보세요
출처: flickr.com의 사용자 Jamie(jbcurio)

Monty Pythons Flying Circus (1974) - SPAM from Testing Tester on Vimeo.

메인프레임(Mainframe)

오늘날의 의미: 대기업 등에서 흔히 사용하는 대형 컴퓨터 시스템.

원래 이 용어는 컴퓨터의 주요 구성 요소를 지탱하던 프레임을 가리켰습니다. 주요 구성 요소는 CPU, 메모리, 입출력 장치였습니다. 이 용어는 컴퓨터가 크고 많은 공간을 차지하던 1960~70년대에 사용되었습니다.

이 도면은 회로에 접근하기 위해 IBM 701 메인프레임이 어떻게 열리는지를 보여준다. IBM의 ‘Type 701 EDPM[전자 데이터 처리 기계] 설치 매뉴얼’에서 발췌. 컴퓨터 역사 박물관(Computer History Museum) 아카이브 소장.
이 도면은 회로에 접근하기 위해 IBM 701 메인프레임이 어떻게 열리는지를 보여준다. IBM의 ‘Type 701 EDPM[전자 데이터 처리 기계] 설치 매뉴얼’에서 발췌. 컴퓨터 역사 박물관(Computer History Museum) 아카이브 소장.

이에 대해 더 알고 싶다면 Ken Shirriff의 블로그를 참고하세요.

라디오 버튼(Radio Button)

오늘날의 의미: 미리 정의된 상호 배타적인 선택지 중에서 하나를 고를 수 있게 하는 UI 요소

“라디오 버튼(radio button)”이라는 이름은 라디오에 사용되던 기계식 버튼과 유사한 것에서 따왔습니다. 이 UI 개념은 이후 테이프 레코더, 카세트 레코더, 웨어러블 오디오 플레이어(유명한 “워크맨” 등)는 물론, 나중에는 VCR과 비디오 카메라에도 사용되었습니다. 참고

오래된 카 라디오(왼쪽)와 CSS 라디오 버튼(오른쪽). 어느 시점에서든 하나의 선택지만 선택할 수 있다. 어렸을 때는 두 버튼을 동시에 눌러 서로 맞물리게 하곤 했다. 좋은 시절이었다.
오래된 카 라디오(왼쪽)와 CSS 라디오 버튼(오른쪽). 어느 시점에서든 하나의 선택지만 선택할 수 있다. 어렸을 때는 두 버튼을 동시에 눌러 서로 맞물리게 하곤 했다. 좋은 시절이었다.
출처: Matt Coady의 이미지

대문자와 소문자(Uppercase and Lowercase)

오늘날의 의미: 키보드에서 대문자와 소문자의 구분.

활자 조판이 납으로 만든 낱개 활자를 이용해 단어와 문장을 만드는 수작업이던 시절에는, 이 다소 지루한 과정을 조금이라도 빠르게 하기 위해 대문자와 소문자를 별도의 상자 — 즉 케이스(case) — 에 나누어 보관했습니다.

한 세트의 인쇄 활자 케이스
한 세트의 인쇄 활자 케이스
출처: Updike, Daniel Berkeley(1860-1941)의 저서 ‘Printing types, their history, forms, and use; a study in survivals’에서 발췌. archive.org에서 무료로 열람할 수 있다.

그 외 언급할 만한 것들

404

오늘날의 의미: “파일을 찾을 수 없음”을 나타내는 HTTP 상태 코드.

이 숫자가 월드 와이드 웹의 중앙 데이터베이스가 있던 서버실 번호에서 유래했다는 이야기가 있습니다. 그곳에서는 관리자들이 요청된 파일을 수동으로 찾아 네트워크를 통해 요청자에게 전송했고, 파일이 존재하지 않으면 “Room 404: file not found”라는 오류 메시지를 반환했다는 것입니다.

하지만 이는 신화로 보이며, 상태 코드는 당시 이미 잘 정립되어 있던 FTP 상태 코드를 기반으로 다소 임의로 선택된 것으로 보입니다. 참고

프로그래밍 언어와 약어

프로그래밍 언어 이름과 흔한 약어들의 어원은 아마 별도의 글로 다룰 만하지만, 우선 제가 좋아하는 몇 가지를 적어 두기로 했습니다.

C++

C++는 비야네 스트롭스트룹(Bjarne Stroustrup)이 C를 기반으로 만든 프로그래밍 언어입니다. 이름은 스트롭스트룹의 동료인 릭 매스키티(Rick Mascitti)가 만든 프로그래머식 말장난입니다. ++는 많은 C 계열 언어에서 흔히 쓰이는 후위 증가 연산자를 가리키며, 변수의 값을 1 증가시킵니다. 그런 의미에서 C++는 C의 정신적 “후계자”로 볼 수 있습니다. 참고

C#

C++와 마찬가지로 C# 역시 C와 유사한 프로그래밍 언어입니다. 이름은 다시금 C++에 대한 “점진적인” 개선을 의미합니다. 이름 속 #은 네 개의 더하기 기호처럼 보입니다. 따라서 C# == (C++)++라 할 수 있습니다. 그뿐만 아니라, 이 이름은 기보법에서 샵(♯)이 쓰인 음을 반음 높이라는 의미인 데서도 영감을 받았습니다. 참고

C 샵 음표.
C 샵 음표.
출처: Wikimedia Commons

PNG

공식적으로 PNG는 Portable Network Graphics의 약자입니다. 1994년 컴퓨서브(CompuServe)가 GIF를 지원하는 프로그램은 앞으로 라이선스 비용을 지불해야 한다는 발표를 하면서 생긴 좌절감에서 탄생했습니다. 해커 토머스 바우텔(Thomas Boutell)이 이끄는 작업 그룹은 GIF를 대체할 특허 없는 포맷인 .webp 파일 포맷을 만들었습니다. 그래서 저는 이 포맷의 비공식 명칭인 PNG’s Not GIF를 더 선호합니다. PNG의 역사에 대한 훌륭한 글이 있으니 참고해 보세요. 참고

크레딧

대부분의 내용은 위키백과 같은 출처에서 가져왔지만(적절한 경우 출처를 표기했습니다), 무엇을 찾아야 할지 모르면 그 설명을 찾기가 쉽지 않습니다.
이 문서는 계속 업데이트되는 살아 있는 문서이며, 독자 여러분의 제보가 있으면 반영해 업데이트할 예정입니다.

결론

현재를 이해하려면 과거를 알아야 한다.
— 칼 세이건(Carl Sagan) 박사(1980)

이 추억 여행이 즐거우셨기를 바랍니다. 이제 여러분 차례입니다!
👉 다른 이야기도 알고 계신가요? 메시지를 보내 주시면 이곳에 추가하겠습니다.

원문은 Matthias Endler님이 에 게재했습니다.

이 글은 muse-spark-1.2-contributor 모델을 사용해 번역했습니다.