C언어 이름의 유래 - B 다음이라서 C? 창시자도 확답하지 않은 이유

C언어 이름의 유래는 흔히 "B 언어 다음이라서 C"라고 알려져 있습니다. 절반은 맞는 얘기입니다. 그런데 C를 만든 데니스 리치 본인은 이 이름이 알파벳 순서에서 온 건지, 조상 언어인 BCPL의 철자 순서에서 온 건지 확답을 남기지 않았습니다. 이 글에서는 BCPL에서 B를 거쳐 C가 태어나기까지의 과정과, 이름에 얽힌 이야기를 원출처 기준으로 정리합니다.
"A 언어는 없었어요?"
"D 언어도 있다던데 그럼 C 다음인가요?"
"왜 이름을 이렇게 성의 없게 지었죠?"
저도 처음 프로그래밍을 배울 때 비슷한 의문을 가졌습니다. 자바나 파이썬처럼 그럴듯한 이름들 사이에서 알파벳 한 글자짜리 이름은 확실히 튀니까요. 그런데 이 한 글자 뒤에는 1960년대 말 벨 연구소에서 벌어진 꽤 구체적인 사정이 있습니다. 운영체제 하나를 만들려다 언어가 세 개나 연달아 태어난 이야기입니다.
C 문법을 몰라도 따라올 수 있게 썼습니다. 프로그래밍 언어들이 어떻게 서로를 낳고 자랐는지 궁금한 분들에게 맞는 글입니다.
📋 목차
- BCPL - 케임브리지에서 온 조상
- B 언어 - 켄 톰슨과 고물 컴퓨터 PDP-7
- B의 한계 - 새 컴퓨터가 드러낸 문제
- NB에서 C로 - 이름의 진짜 유래
- 1973년, UNIX가 C로 다시 태어나다
- K&R부터 C23까지 - 표준의 역사
- 왜 지금도 C를 쓸까
- 웹 개발자에게 C란
1. BCPL - 케임브리지에서 온 조상
C의 족보는 1967년 영국 케임브리지의 마틴 리처즈(Martin Richards)가 만든 BCPL(Basic Combined Programming Language)에서 시작합니다. 컴파일러 작성 같은 시스템 프로그래밍을 위해 만들어진 언어였고, 단순하고 이식성이 좋다는 게 강점이었습니다.
BCPL의 특징 중 하나는 타입이 없다는 것이었습니다. 정수든 문자든 포인터든 전부 '워드(word)' 하나로 취급했습니다. 당시 컴퓨터들이 워드 단위로 메모리에 접근했기 때문에 자연스러운 설계였는데, 이 특징이 나중에 C가 태어나는 직접적인 계기가 됩니다.
2. B 언어 - 켄 톰슨과 고물 컴퓨터 PDP-7
무대를 미국 벨 연구소로 옮깁니다. 1969년, 켄 톰슨(Ken Thompson)은 연구소 구석의 한물간 컴퓨터 PDP-7에서 새 운영체제를 만들고 있었습니다. 훗날 UNIX가 되는 프로젝트입니다.
초기 UNIX는 어셈블리어로 작성됐지만, 톰슨은 시스템 프로그램을 짤 고수준 언어가 필요했습니다. 그래서 BCPL을 참고해 훨씬 단순하게 깎아낸 언어를 직접 만듭니다. 이것이 B 언어입니다. PDP-7은 메모리가 극도로 부족한 기계였기 때문에, B는 BCPL에서 필수 요소만 남긴 축소판에 가까웠습니다.
💡 B 이름의 유래도 두 가지 설이 있습니다
리치의 기록에 따르면 B라는 이름은 BCPL의 축약이라는 설이 유력하지만,
톰슨이 그 전에 만들었던 Bon이라는 언어에서 왔다는 설도 있습니다.
참고로 프로그래밍 입문의 상징인 "Hello, World" 예제가 처음 등장한 곳이 바로 B 언어 튜토리얼 문서입니다.
3. B의 한계 - 새 컴퓨터가 드러낸 문제
1970년 연구팀은 신형 컴퓨터 PDP-11을 들여옵니다. 그런데 여기서 B의 설계가 발목을 잡습니다. PDP-11은 워드가 아니라 바이트 단위로 메모리에 접근하는 기계였는데, B는 BCPL의 워드 지향 모델을 그대로 물려받은 타입 없는 언어였기 때문입니다.
문자 하나를 다루는 데도 비효율이 생겼고, PDP-11이 지원하는 다양한 데이터 크기를 언어가 표현할 방법이 없었습니다. 하드웨어는 발전했는데 언어가 그걸 못 따라가는 상황이었죠.
이 문제를 해결하러 나선 사람이 톰슨의 동료 데니스 리치(Dennis Ritchie)였습니다. 그는 1971년부터 B에 타입 시스템을 붙이는 작업을 시작합니다. char와 int 같은 자료형이 이때 생겼고, 배열과 포인터의 관계도 이 시기에 정리됩니다.
4. NB에서 C로 - 이름의 진짜 유래
리치가 확장한 언어는 처음에 NB라고 불렸습니다. New B, 새로운 B라는 뜻입니다. 그러다 언어가 B와는 확연히 달라지자 새 이름을 붙이는데, 그게 C였습니다.
여기서 많은 분들이 아는 "B 다음이라서 C"라는 설명이 나옵니다. 그런데 리치 본인이 쓴 논문 「The Development of the C Language」를 보면 재미있는 대목이 있습니다. 그는 이 이름이 알파벳의 진행(B→C)을 뜻하는지, BCPL 철자의 진행(B 다음 글자인 C)을 뜻하는지에 대한 답을 열린 문제로 남겨뒀습니다.
📌 두 해석의 차이
알파벳 설이 맞다면 C의 다음 언어는 D가 됩니다.
BCPL 철자 설이 맞다면 다음은 P가 되죠.
창시자가 정답을 안 정해준 덕분에,
이 농담은 지금도 개발자들 사이에서 돌아다닙니다.
실제로 D 언어와 P 계열 이름을 쓴 언어가 둘 다 나중에 등장했습니다.
어느 쪽이든 확실한 건, 당시 벨 연구소의 작명 문화가 지극히 실용적이었다는 점입니다. 거창한 이름보다 짧고 부르기 쉬운 이름을 선호했고, C는 그 문화의 산물이었습니다.
5. 1973년, UNIX가 C로 다시 태어나다
C의 형태가 잡히자 큰 실험이 하나 이뤄집니다. 1973년, 어셈블리어로 짜여 있던 UNIX 커널을 C로 다시 작성한 것입니다. 당시로서는 파격이었습니다. 운영체제의 핵심부는 어셈블리로 짜는 게 상식이던 시절이니까요.
이 재작성이 성공하면서 두 가지가 증명됩니다. C가 어셈블리를 대신할 만큼 하드웨어에 가깝다는 것, 그리고 C로 짠 운영체제는 다른 기종으로 옮기기 쉽다는 것. 이후 UNIX가 여러 기관과 대학으로 퍼져나가면서 C도 함께 퍼졌습니다. 언어가 운영체제를 업고 세계로 나간 셈입니다.
6. K&R부터 C23까지 - 표준의 역사
1978년 브라이언 커니핸과 데니스 리치가 『The C Programming Language』를 출간합니다. 흔히 저자들 이름을 따 K&R이라고 부르는 책인데, 공식 표준이 없던 시절 이 책이 사실상 언어의 명세 역할을 했습니다. 1983년부터는 ANSI 위원회가 표준화 작업을 시작해 1989년 첫 표준이 나옵니다.
| 구분 | 시기 | 의미 |
|---|---|---|
| K&R C | 1978년 | 책이 곧 표준이던 시절 |
| C89/C90 | 1989~1990년 | 첫 ANSI/ISO 표준 |
| C99 | 1999년 | // 주석, 가변 길이 배열 등 도입 |
| C11 / C17 | 2011 / 2018년 | 멀티스레딩 지원, 결함 정리 |
| C23 | 2024년 발행 | 현행 표준 |
50년 넘은 언어가 아직도 표준을 개정하고 있다는 것 자체가 이 언어의 현재 위치를 말해줍니다.
7. 왜 지금도 C를 쓸까
C가 여전히 현역인 영역은 뚜렷합니다. 하드웨어에 가까울수록 C의 자리입니다.
- 운영체제 커널 - 리눅스 커널의 대부분이 C로 작성되어 있고, 윈도우와 macOS의 커널에도 C가 깊게 자리하고 있습니다
- 임베디드 시스템 - 가전, 자동차 제어기처럼 메모리가 빠듯한 환경에서는 언어의 오버헤드가 작은 C가 기본 선택지입니다
- 언어의 언어 - 파이썬의 표준 구현체 CPython을 비롯해 수많은 언어의 인터프리터와 런타임이 C로 만들어져 있습니다
다만 최근 흐름도 언급해 둘 필요가 있습니다. 메모리 안전성 문제 때문에 시스템 프로그래밍 영역에서 Rust 같은 대안이 성장하고 있고, 리눅스 커널도 일부에 Rust를 받아들이기 시작했습니다. C의 자리가 하루아침에 사라지진 않겠지만, 독점이 영원하리라는 보장도 없어진 상황입니다.
8. 웹 개발자에게 C란
저는 2012년에 웹 개발로 커리어를 시작해서, 업무로 C를 짜본 적은 없습니다. 그런데 서버 장애를 파고들다 보면 결국 C의 세계와 만나게 되더군요. 웹 서버든 데이터베이스든 리눅스 위에서 돌아가고, 그 밑바닥이 전부 C니까요. 시스템 콜이나 소켓 옵션 문서를 읽을 일이 생기면 예제가 죄다 C 코드라서, 읽을 줄은 알아야 했습니다.
C를 유창하게 쓸 필요는 없었지만, 포인터와 메모리 개념을 이해하고 있는 것과 아닌 것의 차이는 트러블슈팅 상황에서 분명히 있었습니다. 웹 개발자에게 C는 쓰는 언어라기보다 읽어야 하는 언어에 가깝다는 게 제 생각입니다.
자주 묻는 질문 (FAQ)
Q. A 언어는 없었나요?
C의 직계 족보에는 없습니다. 계보는 BCPL → B → C입니다. A라는 이름의 언어가 역사상 아예 없었던 건 아니지만, C의 조상은 아닙니다.
Q. C 다음은 D인가요?
D라는 언어가 실제로 2001년에 나왔지만, C 개발팀이 만든 공식 후속작은 아닙니다. C의 영향을 받은 별개의 언어입니다. C의 직접적인 확장으로는 C++가 있죠.
Q. C와 C++는 뭐가 다른가요?
C++는 1979년부터 비야네 스트롭스트룹이 C에 클래스 개념을 얹어 만든 언어입니다. C의 문법 대부분을 물려받았지만 별개의 언어로 발전했습니다. 이름 유래는 별도 글에서 다뤘습니다.
Q. 지금 C를 배울 가치가 있나요?
목표에 따라 다릅니다. 임베디드나 시스템 프로그래밍이 목표라면 필수입니다. 웹이나 앱 개발이 목표라면 첫 언어로는 다른 선택지가 효율적일 수 있지만, 메모리와 포인터 개념을 배우는 교재로서의 가치는 여전합니다.
마무리
C라는 이름은 한 글자짜리 성의 없는 작명처럼 보이지만, 그 뒤에는 BCPL에서 B로, B에서 C로 이어진 구체적인 문제 해결의 역사가 있습니다. 새 컴퓨터의 바이트 주소 방식을 살리려고 타입을 붙였더니 다른 언어가 됐고, 이름은 앞 글자에서 하나 올렸을 뿐입니다. 그 이름이 알파벳에서 온 건지 BCPL 철자에서 온 건지는 창시자가 끝내 답을 안 정해줬고요. 50년 넘게 살아남은 언어치고는 시작이 참 담백했다는 생각이 듭니다.
🎲 개발은전투다 추천 글 모음
파이썬 이름 유래는? 뱀이 아닌 진짜 어원과 역사, 13년 차 개발자의 솔직한 평가
파이썬(Python)이라고 하면 많은 분들이 뱀을 먼저 떠올립니다. 로고에도 뱀 두 마리가 그려져 있으니 그럴 만하죠. 그런데 파이썬이라는 이름은 사실 뱀과 아무 상관이 없습니다. 이 글에서는 파
devwar.tistory.com
자바(Java)는 왜 커피잔일까? 오크(Oak)에서 자바가 된 이름의 유래
자바(Java)의 로고는 왜 김이 모락모락 나는 커피잔일까요? 커피와 아무 상관 없어 보이는 이 프로그래밍 언어에 커피잔이 붙은 데는, 원래 '오크(Oak)'라는 나무 이름으로 불렸다가 상표권 문제로
devwar.tistory.com
C++는 왜 C+1이 아닐까? 이름에 담긴 1983년의 농담과 탄생 배경
C++라는 이름은 C 언어의 증가 연산자 ++에서 왔습니다. 1983년 벨 연구소의 릭 마시티가 제안한, 반쯤 농담 같은 이름이었죠. 그런데 왜 하필 ++였는지, 왜 ++C가 아니라 C++인지, 그리고 이 언어가 애
devwar.tistory.com
'언어의역사' 카테고리의 다른 글
| 타입스크립트는 왜 만들어졌을까 - 자바스크립트가 커지자 마이크로소프트가 내놓은 답 (0) | 2026.07.03 |
|---|---|
| 비동기 프레임워크 vs 동기 프레임워크, 스프링 부트는 왜 비동기를 안 쓸까? (FastAPI·가상 스레드까지) (0) | 2026.07.03 |
| C++는 왜 C+1이 아닐까? 이름에 담긴 1983년의 농담과 탄생 배경 (0) | 2026.07.03 |
| 자바(Java)는 왜 커피잔일까? 오크(Oak)에서 자바가 된 이름의 유래 (0) | 2026.07.02 |
| ASP(Active Server Pages)란 무엇인가 — 초기 웹을 이끈 서버 스크립트의 등장과 쇠퇴 (0) | 2026.07.02 |