🤖 AI 생성 콘텐츠 — 이 글은 AI가 자료를 수집하고 초안을 작성했으며, 발행 전 누슘 운영자가 검수했습니다.
C 언어의 C는 단순히 A와 B 다음 글자가 아닙니다. BCPL에서 B를 거쳐 C로 이어진 계보와 작은 컴퓨터에서 유닉스를 옮기려던 설계 선택을 데니스 리치의 기록으로 따라갑니다.
C 언어는 왜 C일까요? “A 언어가 있었고 B 다음이라서”라고 생각하기 쉽습니다. 실제 계보는 BCPL → B → C입니다. 더 흥미로운 점은 이름보다 탄생 이유입니다. C는 멋진 문법 실험으로 시작한 게 아니라, 아주 작은 컴퓨터에서 유닉스를 실용적으로 만들려는 압박 속에서 자랐습니다.
목차
- C 이전에는 어떤 언어가 있었나?
- 24KB 컴퓨터가 언어를 어떻게 바꿨나?
- 유닉스를 C로 다시 쓴 일이 왜 중요했나?
- 오늘의 C에 남은 흔적은 무엇인가?
C 이전에는 어떤 언어가 있었나?
데니스 리치가 남긴 「The Development of the C Language」는 계보를 분명히 적습니다. 마틴 리처즈의 BCPL이 있었고, 켄 톰프슨은 이를 작은 기계 환경에 맞춰 B로 압축했습니다. B는 사실상 하나의 기계 단어만 다루는 무타입 언어에 가까웠습니다.
그다음 리치가 B에 문자 타입과 구조체 같은 개념을 더하며 C로 바꿨습니다. 리치의 정리에 따르면 톰프슨은 1969~1970년에 B를 만들었고, 리치는 1971~1973년에 B를 C로 발전시키며 첫 컴파일러를 작성했습니다.
그러니 C라는 이름은 알파벳 놀이보다 B의 다음 단계라는 계보를 보여줍니다. B 이름 자체는 BCPL의 축약이라는 설명이 유력하지만, 리치는 다른 유래 가능성도 기록합니다. 확정되지 않은 부분을 억지로 한 가지 전설로 만들지 않은 점도 흥미롭습니다.

24KB 컴퓨터가 언어를 어떻게 바꿨나?
초기 PDP-11은 메모리가 24KB였습니다. 리치의 기록에 따르면 초기 유닉스는 12KB를 운영체제에 쓰고, 작은 사용자 프로그램 공간과 RAM 디스크가 나머지를 나눠 가졌습니다. 지금 사진 한 장보다도 훨씬 작은 공간입니다.
이 제약은 문법과 구현에 직접 흔적을 남겼습니다. B 컴파일러는 전체 프로그램을 메모리에 올려 분석하기 어려워 한 번에 읽으며 출력을 만드는 방식을 택했습니다. BCPL의 복잡한 표현 중 일부가 단순해졌고, 그 문법 재설계가 C로 이어졌습니다.
C의 배열과 포인터 관계도 추상적인 취향만으로 생긴 것이 아닙니다. 당시 메모리는 선형 셀의 배열로 바라봤고, 주소에 하나를 더하면 다음 셀로 가는 방식이 자연스러웠습니다. 기계 가까이에서 효율적으로 움직여야 했던 환경이 언어의 감각을 만들었습니다.
유닉스를 C로 다시 쓴 일이 왜 중요했나?
1972년은 C 설계의 가장 창조적인 시기였습니다. 1973년 초에는 현대 C의 핵심이 완성됐고, 그해 여름 PDP-11용 유닉스 커널을 C로 다시 쓸 수 있을 만큼 언어와 컴파일러가 자랐습니다.
운영체제를 고급 언어로 쓴다고 자동으로 어디서나 돌아가는 건 아닙니다. 그래도 어셈블리보다 기계 의존 부분을 훨씬 줄일 수 있었습니다. 이후 C 컴파일러와 유닉스 도구를 다른 기계로 옮기는 실험이 이어졌고, 이식성이 실제로 증명되면서 C와 유닉스가 함께 퍼졌습니다.
1978년 브라이언 커니핸과 데니스 리치는 『The C Programming Language』를 펴냈습니다. 공식 표준이 나오기 전까지 이 책은 사실상 언어 참조 역할을 했습니다. 리치는 설명 부분 대부분을 커니핸이, 참조 매뉴얼 부록과 유닉스 인터페이스 장을 자신이 맡았다고 기록했습니다.

오늘의 C에 남은 흔적은 무엇인가?
C의 강점과 어려움은 같은 뿌리에서 나옵니다.
- 메모리를 직접 다루기 쉬워 운영체제와 임베디드에 강합니다.
- 작은 런타임으로 여러 기계에 옮기기 좋습니다.
- 배열·포인터·수동 메모리 관리는 높은 제어권과 큰 책임을 함께 줍니다.
- 전처리기는 초기에 선택적 보조 도구로 여겨져 언어 문법과 다소 분리된 느낌이 남았습니다.
지금 보면 불편한 부분도 있습니다. 하지만 1970년대 기계와 유닉스라는 실제 문제를 놓고 보면 설계가 훨씬 이해됩니다. 좋은 기술 역사는 옛 선택을 비웃는 일이 아니라, 그 선택을 합리적으로 만든 제약을 복원하는 일입니다.
자주 묻는 질문 (FAQ)
Q. C 언어는 정말 B 언어 다음이라 C인가요? A. 네, C는 B에서 발전한 언어이고 B는 BCPL의 영향을 직접 받았습니다. 다만 B 이름의 정확한 유래에는 BCPL 축약설과 다른 가능성이 함께 기록돼 있습니다.
Q. 데니스 리치가 C를 혼자 만들었나요? A. 리치가 B를 C로 발전시키고 첫 컴파일러를 쓴 핵심 설계자입니다. 하지만 켄 톰프슨, 앨런 스나이더, 스티븐 존슨, 마이클 레스크 등 여러 동료가 아이디어와 도구에 기여했습니다.
Q. 유닉스는 처음부터 C로 작성됐나요? A. 아닙니다. 초기 유닉스는 PDP-7과 PDP-11의 어셈블리로 작성됐습니다. 현대 C의 핵심이 갖춰진 뒤 1973년 여름 PDP-11 유닉스 커널을 C로 다시 썼습니다.
Q. K&R 책은 언제 나왔나요? A. 브라이언 커니핸과 데니스 리치가 1978년에 초판을 출간했습니다. 공식 표준 이전에 널리 쓰인 언어 설명서 역할을 했습니다.
마치며
C는 A 다음의 빈칸을 채우려고 만든 언어가 아닙니다. BCPL과 B의 아이디어를 이어받고, 작은 메모리와 유닉스의 이식성 문제에 답하면서 만들어졌습니다. 그래서 반세기가 지난 문법에서도 당시 기계의 그림자가 보입니다.
처음 C 포인터를 배울 때 가장 이해하기 어려웠던 부분은 무엇이었나요? 누슘 댓글에서 경험을 들려주세요.
참고자료
- Dennis M. Ritchie — The Development of the C Language
- ACM — Dennis M. Ritchie biography
- Nokia Bell Labs — Dennis Ritchie
태그: #C언어 #데니스리치 #켄톰프슨 #유닉스 #B언어 #BCPL #프로그래밍역사

댓글을 남기려면 로그인이 필요합니다.
로그인하고 댓글 남기기