C 프로그래밍 언어가 모든 곳에서 눈에 띄지는 않지만, 우리 주변 곳곳에 은밀하게 존재합니다. 자동차 시동을 걸 때, 자동차의 마더보드는 다양한 구성 요소와 통신하기 위해 C 언어를 사용할 가능성이 높습니다. iOS든 안드로이드든, 스마트폰 운영체제의 핵심은 C 언어로 작성되었습니다. C 언어를 무시할 수는 없습니다..

좋아요. 좀 썰렁한 말장난이었지만, 알파벳 C에는 어떤 이야기가 숨겨져 있을까요? C 프로그래밍 언어가 등장했을 때, 세상은 혁명적으로 변했습니다. 그런데 왜 이름이 C였을까요?
로압 스리유에스
옛날 옛적 벨 연구소에서…
뛰어난 인재들과 막대한 예산

이 질문에 답하려면 시간을 거슬러 올라가 뉴저지에 위치한 작지만 넓은 건물 하나를 살펴봐야 합니다. 바로 벨 연구소입니다. 알렉산더 그레이엄 벨(이름이 낯익지 않으시죠?)이 설립하고 당시 정부 지원을 받는 독점 기업이었던 AT&T가 소유했던 벨 연구소는 막대한 예산과 자유로운 실험 정신을 누릴 수 있었습니다.
이러한 비침습적 접근 방식은 트랜지스터(덕분에 컴퓨터는 더 이상 도시 블록 크기만 하지 않게 되었습니다), 레이저, 태양 전지 등 수많은 발명품의 탄생으로 이어졌습니다. C 프로그래밍 언어 또한 전설적인 벨 연구소의 산물입니다. 하지만 C 언어가 있기 전에는 B 언어가 있었습니다.
B 언어가 있었습니다.
B는 더 나은 BCPL을 의미합니다.

1969년, 벨 연구소의 뛰어난 연구원이자 매우 독립적인 성향의 연구원이었던 켄 톰슨은 멀티크스(Multics)라는 거대하고도 화려한 운영 체제 프로젝트에 참여하고 있었습니다. 벨 연구소가 멀티크스 프로젝트를 중단하자, 톰슨은 여유 시간이 생겼고, 아주 특정한 문제가 생겼습니다. 바로 그녀가 만든 게임을 해보고 싶었던 것입니다. 우주 여행 복도에 놓여 있던 낡고 먼지 쌓인 DEC PDP-7 컴퓨터에서.

PDP-7은이미지는 오른쪽에 있습니다.1960년대 기준으로도 구식이었던 이 컴퓨터는 메모리 용량도 매우 작았습니다(약 8킬로바이트). 톰슨은 PDP-7에서 자신의 게임을 실행하기 위해 처음부터 새로운 운영 체제를 개발했습니다. 이것이 바로 유닉스의 탄생입니다. 하지만 유닉스를 특정 언어로 작성하는 것은 쉽지 않았습니다. 어셈블리 코드 (기계와 소통하기 위해 1과 0을 사용하는 원시적이고 미발달된 언어는) 악몽과 같았다. 톰슨에게는 인간의 논리에 더 가까운 고수준 언어가 필요했다.
당시 관련 고급 프로그래밍 언어는 BCPL(Basic Combined Programming Language)이었습니다. BCPL은 PDP-7의 제한된 하드웨어에 비해 너무 방대했기 때문에 톰슨은 BCPL에서 "Basic"이라는 단어를 가져와 핵심적인 부분을 제거하고 새로운 언어를 만들었습니다. 그는 이 새로운 언어를 B라고 불렀습니다. B는 빠르고 간단했으며, 현대 프로그래밍을 향한 첫걸음이었습니다.

하지만 B는 결국 실패로 끝났습니다. PDP-7에서는 잘 작동했지만, 벨 연구소가 더 발전된 PDP-11로 업그레이드하면서 B와 같은 타입 비지정 언어는 더 이상 충분하지 않았습니다. 비효율적이었고, 새롭고 값비싼 PDP-11의 성능을 제대로 발휘하지 못하게 만들었습니다.
C가 새로운 B가 되었다
B가 승진했어요

이로써 우리는 톰슨의 절친한 친구이자 협력자였던 데니스 리치에 대해 이야기하게 됩니다. 리치는 유닉스가 새로운 기기에서 살아남으려면 유닉스를 작성하는 데 사용된 언어도 진화해야 한다는 것을 깨달았고, 그래서 2년 동안 B 버전을 개발하는 데 매진했습니다.
그의 혁신은 타입 시스템의 도입이었습니다. 그는 문자를 위한 char 타입과 정수를 위한 int 타입을 만들었습니다. 이제 프로그래머는 컴퓨터에게 각 칸이 단일 문자를 위한 것임을 알려줄 수 있었고, 따라서 불필요한 공간 낭비를 막을 수 있었습니다. 이는 프로그램을 더욱 기계 친화적으로 만들어주었습니다.

한동안 리치와 톰슨은 이 프로젝트를 단순히 "뉴 B"라고 불렀습니다. 하지만 이 언어가 점점 더 주목받고 영향력을 키워가면서, 그들은 이 언어가 고유한 정체성을 가질 자격이 있다고 생각했습니다. B 언어의 후속 언어라는 점에서, 그들은 알파벳의 다음 글자를 따서 C라고 명명했습니다.
그러다가 1973년, 리치와 톰슨은 유닉스 운영체제의 핵심 부분을 C 언어로 다시 작성했습니다. 그 전에는 고급 언어가 너무 느리다는 인식 때문에 운영체제는 항상 어셈블리 언어로 작성되었습니다. 하지만 C 언어는 모두의 예상을 뒤엎었습니다. 빠르고, 우아하며, 무엇보다 이식성이 뛰어났습니다.
…그러다 D가 왔다
또는 무엇을?

1970년대 후반에 이르러 C 언어는 명실상부한 왕좌를 차지했습니다. 하지만 소프트웨어가 점점 복잡해짐에 따라 C 언어는 점차 노후화되는 조짐을 보이기 시작했습니다. 벨 연구소의 또 다른 연구원인 비야르네 스트로우스트럽은 C 언어의 속도를 높이 평가하면서도 "객체 지향 프로그래밍"이라는 개념을 추가하고 싶어 했습니다. 간단히 말해, 그는 프로그래머들이 데이터를 수집하고, 알려진 이름과 비밀번호를 가진 "사용자" 객체와 같은 "객체"에 로그인할 수 있도록 하고 싶었습니다.

스트로우스트럽의 때가 왔을 때 (왼쪽에 있는 그의 사무실에서 그를 보세요.발명품에 이름을 붙인 후, 다음 논리적인 단계는 D였을 것이다. 하지만 벨 연구소 사람들은 말장난을 좋아했다. 그래서 스트로우스트롭의 동료인 마스케티가 C++를 제안했다. 적어도 그들에게는 천재적인 발상이었다. 그 이름은 언어가 C에 무언가를 더한 것임을 암시했다. C는 하지만 더 나은.
이 이름 선택은 너무나 매력적이어서 알파벳 순서에서 D 자리는 거의 20년 동안 비어 있었습니다. C++는 비디오 게임부터 웹 브라우저까지 모든 것의 표준이 되었고, 세상은 그대로 흘러갔습니다. C 언어에서 숫자를 1씩 증가시키는 방법을 모른다면, 특별한 명령어를 사용하면 됩니다. ++변수가 있는 경우 x 그리고 그녀는 썼다 x++그렇게 될 것입니다 x + 1.
D 언어는 이미 존재합니다.
하지만 그것은 수십 년 후에 나타났습니다.

베테랑 스위처 엔지니어인 월터 브라이트가 마침내 그 타이틀을 차지하기로 결심한 것은 2001년이 되어서였습니다. 브라이트는 수년간 C++ 툴을 개발해 왔지만, 1970년대 레거시 코드와의 호환성을 유지해야 한다는 점 때문에 C++ 언어가 얼마나 "방대하고" "보안에 취약한지"에 불만을 느꼈습니다.
그는 C 언어의 강력한 성능과 C++의 체계적인 구조를 원했지만, 현대적이고 깔끔하며 안정적인 디자인을 추구했습니다. 그래서 D 프로그래밍 언어를 만들었습니다. D 언어는 향상된 메모리 관리와 보안 기능을 제공하여 컴퓨터에서 블루스크린 오류를 유발하는 여러 유형의 오류를 방지했습니다.
하지만 D는 여러 성과에도 불구하고 고전적인 문제에 직면했습니다. D가 등장했을 무렵, 세상은 이미 D를 뛰어넘는 발전을 이루었습니다. 기업들은 자바와 C#을 사용하고 있었고, 세계는 여전히 C와 C++에 갇혀 있었습니다. 몇 년 후, 메모리 무결성(D와 동일한 원칙)을 중시하는 Rust라는 언어가 등장했고, D가 결코 따라잡지 못했던 방식으로 기술계의 주목을 받으며 사실상 D를 무용지물로 만들었습니다.
오늘날 D는 매우 존경받는 전문 언어로 존재합니다. 넷플릭스나 이베이 같은 회사에서 특정 고성능 작업을 위해 이미 사용되고 있죠. 훌륭한 언어이긴 하지만, 결코 언어의 왕좌를 차지하지는 못했습니다.
A 언어가 있었나요?
네, 하지만… 사실은 그렇지 않아요.
자, 이제 C가 B에서 파생되었기 때문에 C가 되었다는 것을 알았습니다. 그런데 B보다 먼저 나온 A라는 언어가 있었을까요? 답은 '예'입니다. 하지만 여러분이 생각하는 방식과는 다릅니다. 사실, 이 언어들 이전에 공식적인 A 언어는 존재하지 않았습니다. C가 B 다음에 나왔기 때문에 C가 된 것은 맞습니다. 하지만 B가 B가 된 이유는 A 다음에 나왔기 때문이 아니라 BCPL의 첫 글자였기 때문입니다.

하지만 계보를 제대로 따라가 보면, 이야기는 벨 연구소 이전으로 거슬러 올라갑니다. B나 C보다 훨씬 이전에 ALGOL이 있었습니다. 알고리즘 언어(Algorithmic Language)의 줄임말인 ALGOL은 1958년에 탄생했습니다. 이는 한 사람의 작품이 아니라, 수학적 연산을 보편적으로 표현하는 방법을 찾고자 했던 유럽과 미국의 과학자들로 구성된 위원회의 산물입니다. 현대 표기법의 증조부, 즉 피라미드 꼭대기에 있는 진정한 "A"를 찾고 있다면, 그것은 바로 ALGOL입니다.
ALGOL의 아이디어를 바탕으로 CPL(Combined Programming Language)이라는 언어가 만들어졌지만, 당시 컴퓨터로는 처리하기에는 너무 복잡했습니다. 그래서 CPL의 "기본" 버전인 BCPL이 개발되었고, 바로 여기서 벨 연구소 이야기가 시작됩니다.
2026년인 지금도 우리는 여전히 C 언어 시대에 살고 있습니다. 파이썬이나 자바스크립트 같은 멋진 신기술 언어조차도 대부분 C 언어로 작성된 프로그램에서 해석됩니다. C 언어는 여전히 그 기반입니다. 뉴저지의 한 연구실에서, 거대한 계산기나 다름없는 컴퓨터에서 우주 게임을 하기 위해 탄생한 언어죠.










