C++는 왜 C+1이 아닐까? 이름에 담긴 1983년의 농담과 탄생 배경

C++라는 이름은 C 언어의 증가 연산자 ++에서 왔습니다. 1983년 벨 연구소의 릭 마시티가 제안한, 반쯤 농담 같은 이름이었죠. 그런데 왜 하필 ++였는지, 왜 ++C가 아니라 C++인지, 그리고 이 언어가 애초에 왜 만들어졌는지까지 파고들면 생각보다 재미있는 이야기가 나옵니다. 이 글에서는 C++의 이름 유래와 탄생 과정을 시간순으로 정리합니다.
"C++는 C의 다음 버전인가요?"
"이름에 왜 +가 두 개나 붙어요?"
"C#이랑은 무슨 관계예요?"
저는 13년째 웹 개발을 해왔고, 솔직히 C++로 밥벌이를 해본 적은 없습니다. 그런데도 이 언어를 완전히 피할 수는 없더군요. 크롬 브라우저도, Node.js의 심장인 V8 엔진도, 매일 쓰는 데이터베이스 엔진도 결국 C++로 돌아가고 있으니까요. 웹 개발자 입장에서 보면 C++는 직접 만지지는 않지만 늘 발밑에 깔려 있는 언어입니다.
이 글은 C++를 배우려는 분보다는, 이 언어가 어디서 왔고 이름이 왜 그렇게 지어졌는지 궁금한 분들을 위한 글입니다. 프로그래밍 언어의 역사에 관심 있는 분이라면 배경지식 없이도 따라올 수 있게 썼습니다.
📋 목차
- 케임브리지의 느린 시뮬레이터 - 모든 것의 시작
- 1979년 벨 연구소 - UNIX 커널이라는 과제
- C with Classes - 전처리기로 시작한 언어
- C++라는 이름의 탄생 - 1983년, 릭 마시티의 제안
- 왜 ++C가 아니고 C++일까
- 1985년, 세상 밖으로
- C++ 표준의 진화 - C++98부터 C++26까지
- 왜 지금도 C++를 쓸까
- 웹 개발자가 만나는 C++
1. 케임브리지의 느린 시뮬레이터 - 모든 것의 시작
C++의 이야기는 벨 연구소가 아니라 영국 케임브리지 대학에서 시작됩니다. 덴마크 출신의 비야네 스트롭스트룹(Bjarne Stroustrup)은 1970년대 후반 이곳에서 박사 논문을 쓰고 있었습니다. 주제는 분산 시스템의 소프트웨어 구조였고, 연구 도구로 꽤 큰 규모의 시뮬레이터를 직접 만들어야 했습니다.
처음에 그가 선택한 언어는 시뮬라(Simula)였습니다. 시뮬라는 클래스와 객체라는 개념을 세계 최초로 도입한 언어였고, 큰 프로그램을 구조적으로 정리하는 데는 탁월했습니다. 문제는 속도였습니다. 시뮬레이터가 커질수록 실행이 감당할 수 없이 느려졌고, 결국 그는 시뮬레이터를 BCPL이라는 저수준 언어로 통째로 다시 짜야 했습니다.
BCPL은 빨랐지만, 시뮬라가 주던 구조적인 정리 기능이 전혀 없었습니다. 이 두 언어 사이를 오간 경험이 스트롭스트룹에게 하나의 확신을 남깁니다.
📌 스트롭스트룹의 딜레마
구조를 주는 언어(시뮬라)는 너무 느리고,
빠른 언어(BCPL)는 구조가 없다.
이 둘을 동시에 만족하는 언어가 필요하다.
이 문제의식이 훗날 C++의 설계 철학이 됩니다.
2. 1979년 벨 연구소 - UNIX 커널이라는 과제
박사 학위를 마친 스트롭스트룹은 1979년 미국 뉴저지의 AT&T 벨 연구소에 합류합니다. C 언어와 UNIX가 태어난 바로 그곳입니다. 그에게 주어진 과제는 UNIX 커널을 분석해서 네트워크 상에 분산시킬 수 있는지 검토하는 것이었습니다. 박사 시절 연구 주제와 정확히 이어지는 일이었죠.
이번에도 같은 문제가 반복될 것이 뻔했습니다. 그래서 그는 이번에는 도구를 직접 만들기로 합니다. 당시 벨 연구소에서 가장 실용적인 시스템 언어였던 C를 기반으로, 시뮬라의 클래스 개념을 얹는 방식이었습니다.
C를 선택한 이유는 명확했습니다. 빠르고, 이식성이 좋고, 이미 널리 쓰이고 있었습니다. 게다가 복도 건너편에 C를 만든 데니스 리치와 브라이언 커니핸이 있었습니다. 스트롭스트룹 본인도 훗날 이들의 조언이 없었다면 C++는 태어나지 못했을 것이라고 회고했습니다. 첫 C++ 매뉴얼이 데니스 리치가 건네준 C 매뉴얼 문서 원본에서 출발했다는 일화도 있습니다.
3. C with Classes - 전처리기로 시작한 언어
1979년 10월, 스트롭스트룹은 Cpre라는 전처리기를 만듭니다. 클래스가 포함된 코드를 일반 C 코드로 변환해주는 도구였습니다. 처음부터 완전히 새로운 컴파일러를 만든 게 아니라, 기존 C 컴파일러를 그대로 활용하는 실용적인 접근이었죠.
이 확장된 언어는 'C with Classes'라고 불렸습니다. 이름 그대로 클래스가 붙은 C였습니다. 초기 버전에 들어간 기능은 다음과 같습니다.
- 클래스와 파생 클래스(상속)
- public/private 접근 제어
- 생성자와 소멸자
- 더 강한 타입 검사
- 인라인 함수, 기본 인자
지금 기준으로 보면 소박한 목록이지만, 당시 C에는 이 중 어느 것도 없었습니다. 1980년 4월에는 이 내용을 정리한 첫 기술 보고서가 벨 연구소 내부에 발표됩니다.
1982년경 스트롭스트룹은 전처리기 방식의 한계를 느끼고 전용 컴파일러 개발로 방향을 바꿉니다. 이것이 Cfront입니다. C++ 코드를 C 코드로 번역하는 방식이라 다양한 시스템에서 돌릴 수 있었고, 이 시기에 가상 함수, 연산자 오버로딩, 참조(reference) 같은 굵직한 기능들이 추가됩니다. 사실상 별개의 언어가 되어가고 있었던 겁니다.
4. C++라는 이름의 탄생 - 1983년, 릭 마시티의 제안
언어가 커지면서 'C with Classes'라는 이름은 점점 안 어울리게 됐습니다. 이제 클래스만 있는 게 아니었으니까요. 한동안 'new C'로 불리기도 했고, 내부적으로는 'C84'라는 이름도 검토됐지만 못생기고 헷갈린다는 이유로 버려졌습니다.
이름을 바꿔놓은 제안은 1983년 중반, 동료였던 릭 마시티(Rick Mascitti)에게서 나왔습니다. C 언어에서 변수 값을 1 증가시키는 연산자가 ++인데, C를 한 단계 발전시킨 언어라는 뜻으로 C++가 어떻겠냐는 것이었습니다.
💡 반쯤 농담으로 지어진 이름
마시티는 1992년 이 명명에 대해 질문받았을 때,
진지한 작명이라기보다는 장난기 섞인(tongue-in-cheek) 제안이었다고 답했습니다.
프로그래밍 역사상 가장 성공한 농담 중 하나가 된 셈입니다.
스트롭스트룹은 이 이름이 C로부터의 점진적인 진화라는 언어의 성격을 잘 담고 있다고 판단했고, 1983년 12월 논문에서 처음 공식적으로 사용합니다. 참고로 첫 C++ 버전이 AT&T 내부에서 실제로 사용되기 시작한 것도 1983년 8월입니다.
5. 왜 ++C가 아니고 C++일까
C 문법을 아는 분이라면 한 번쯤 떠올렸을 의문입니다. i++는 값을 사용한 뒤에 증가시키고, ++i는 증가시킨 뒤에 사용합니다. 그러니 "발전된 C"라면 엄밀히는 ++C가 맞지 않느냐는 거죠.
실제로 이 농담 섞인 지적은 당시에도 있었습니다. C++라는 표기대로라면 "C를 쓰고 나서 증가시킨다", 즉 언어 자체는 여전히 예전 C 그대로라는 해석이 가능하니까요. 스트롭스트룹도 저서에서 이런 언어유희들을 언급한 바 있고, 언어에 담긴 중의적 의미 상당수가 의도된 것이라고 밝히기도 했습니다.
몇 가지 소소한 사실을 덧붙이면 이렇습니다.
- C+는 C 문법상 그 자체로는 성립하지 않는 표현이고, ABCL/c+라는 무관한 언어가 이미 존재했습니다
- Cpp 같은 축약 표기는 파일 확장자와 혼동될 수 있어 공식적으로는 피했습니다
- 공식 발음은 "씨 플러스 플러스"입니다
결국 이름은 문법적 엄밀함보다 간결함과 상징성으로 결정된 셈입니다. 개발자들끼리 통하는 유머가 40년 넘게 살아남은 경우죠.
6. 1985년, 세상 밖으로
1985년 10월은 C++ 역사에서 두 가지 사건이 겹친 달입니다. Cfront의 첫 상용 버전이 출시됐고, 같은 시기에 스트롭스트룹의 저서 『The C++ Programming Language』 초판이 출간됐습니다. 표준이 없던 시절, 이 책이 사실상 언어의 명세 역할을 했습니다.
확산 속도는 지금 기준으로 보면 느긋했습니다. 1985년 말 사용자 수가 약 500명, 1986년에 약 2,000명 수준으로 추정됩니다. 이후 1987년 GNU C++, 1990년 볼랜드의 Turbo C++ 같은 컴파일러들이 나오면서 본격적으로 대중화됩니다. 특히 Turbo C++는 MS-DOS 시절 수십만 카피가 팔리며 한 세대 개발자들의 입문 도구가 됐습니다.
7. C++ 표준의 진화 - C++98부터 C++26까지
C++는 1998년 ISO 국제 표준이 된 이후 계속 개정되어 왔습니다. 특히 2011년 이후에는 3년 주기 릴리스가 정착됐습니다.
| 표준 | 시기 | 의미 |
|---|---|---|
| C++98 | 1998년 | 첫 ISO 표준. STL 포함 |
| C++11 | 2011년 | '모던 C++'의 시작. auto, 람다, 스마트 포인터 |
| C++14 / 17 | 2014 / 2017년 | 모던 C++ 다듬기 |
| C++20 | 2020년 | 콘셉트, 모듈, 코루틴 등 대규모 개편 |
| C++23 | 2024년 발행 | 현행 표준 (ISO/IEC 14882:2024) |
| C++26 | 예정 | 다음 표준 |
1983년에 붙은 ++라는 이름처럼, 이 언어는 실제로 40년 넘게 계속 증가하고 있는 셈입니다.
8. 왜 지금도 C++를 쓸까
1979년에 시작된 언어가 지금도 현역인 이유는 결국 하나입니다. 성능이 곧 돈이 되는 영역에서는 대체재가 마땅치 않기 때문입니다.
- 게임 엔진 - 언리얼 엔진의 코어는 C++로 작성되어 있고, 유니티도 엔진 내부는 C++, 스크립팅만 C#입니다
- 브라우저 - 크롬과 파이어폭스의 상당 부분이 C++로 작성되어 있습니다
- 금융 - 초단타 매매처럼 마이크로초 단위 지연이 손익으로 직결되는 시스템에서 널리 쓰입니다
- AI 프레임워크 - 텐서플로우나 파이토치는 파이썬으로 쓰지만, 실제 연산을 담당하는 코어는 C++입니다
스트롭스트룹이 강조해온 설계 원칙 중에 "쓰지 않는 기능에는 비용을 지불하지 않는다"는 제로 오버헤드 원칙이 있습니다. 이 철학이 성능이 절대적인 분야에서 C++가 버티는 이유를 잘 설명해 줍니다.
9. 웹 개발자가 만나는 C++
저처럼 웹만 파온 개발자에게 C++는 묘한 존재입니다. 직접 짤 일은 거의 없는데, 스택을 한 겹만 벗겨보면 어디에나 있습니다. Node.js를 예로 들면, 자바스크립트를 실행하는 V8 엔진이 C++이고, 성능이 필요한 npm 패키지 중에는 C++로 짠 네이티브 애드온을 품고 있는 것들이 있습니다. npm install 중에 낯선 컴파일 로그가 주르륵 올라간다면 대개 그런 경우입니다.
2016년쯤 실력에 한창 욕심내던 시기에 C++를 제대로 파볼까 고민한 적이 있었는데, 결국 당장 현장에서 쓰는 기술들을 따라가는 쪽을 택했습니다. 그 선택을 후회하진 않지만, 발밑에서 돌아가는 것들의 정체 정도는 알아두는 게 좋다고 지금도 생각합니다. 이 글을 쓴 이유이기도 하고요.
자주 묻는 질문 (FAQ)
Q. C++라는 이름은 누가 지었나요?
1983년 벨 연구소의 릭 마시티가 제안했습니다. C 언어의 증가 연산자 ++에서 따온 이름으로, C에서 한 단계 발전했다는 의미를 담고 있습니다.
Q. C++와 C#은 무슨 관계인가요?
직접적인 계승 관계는 아닙니다. C#은 2000년 마이크로소프트가 만든 별개의 언어입니다. 다만 이름은 C++의 작명 방식을 이어받은 것으로, #을 +가 4개 겹친 모양으로 해석하는 시각도 있습니다.
Q. C++를 배우려면 C를 먼저 배워야 하나요?
필수는 아닙니다. 스트롭스트룹 본인도 C++를 독립된 언어로 바로 배우는 것을 권합니다. 다만 C를 알면 C++가 왜 그런 모양이 됐는지 이해하는 데는 도움이 됩니다.
Q. 지금 배워도 늦지 않았나요?
분야에 따라 다릅니다. 게임 엔진, 임베디드, 고성능 시스템 쪽이라면 여전히 핵심 언어입니다. 반면 웹 서비스 개발이 목표라면 우선순위가 높은 언어는 아닙니다.
마무리
C++는 케임브리지에서 느린 시뮬레이터에 시달리던 한 박사과정 학생의 문제의식에서 출발해서, 벨 연구소의 실무 과제를 거쳐, 동료의 농담 같은 제안으로 이름을 얻은 언어입니다. 거창한 청사진에서 시작된 게 아니라 "빠르면서 구조적인 언어가 없으니 만들자"는 실용적인 동기가 전부였고, 그게 오히려 40년 넘게 살아남은 비결이 아니었나 싶습니다. 이름의 ++가 여전히 유효하다는 점이 개인적으로는 이 이야기에서 가장 재미있는 부분입니다.
🎲 개발은전투다 블로그 추천 세트
C언어 이름의 유래 - B 다음이라서 C? 창시자도 확답하지 않은 이유
C언어 이름의 유래는 흔히 "B 언어 다음이라서 C"라고 알려져 있습니다. 절반은 맞는 얘기입니다. 그런데 C를 만든 데니스 리치 본인은 이 이름이 알파벳 순서에서 온 건지, 조상 언어인 BCPL의 철
devwar.tistory.com
파이썬 이름 유래는? 뱀이 아닌 진짜 어원과 역사, 13년 차 개발자의 솔직한 평가
파이썬(Python)이라고 하면 많은 분들이 뱀을 먼저 떠올립니다. 로고에도 뱀 두 마리가 그려져 있으니 그럴 만하죠. 그런데 파이썬이라는 이름은 사실 뱀과 아무 상관이 없습니다. 이 글에서는 파
devwar.tistory.com
자바와 자바스크립트 차이는? 10일 만에 만들어진 자바스크립트 역사 이야기
자바(Java)와 자바스크립트(JavaScript)의 차이는 개발 공부를 막 시작한 분들이 가장 많이 헷갈려 하는 부분입니다. "자바랑 자바스크립트랑 같은 거 아니에요?" 제가 13년째 가장 자주 듣는 질문이
devwar.tistory.com
ASP(Active Server Pages)란 무엇인가 — 초기 웹을 이끈 서버 스크립트의 등장과 쇠퇴
ASP(Active Server Pages)는 마이크로소프트가 1996년에 내놓은 서버 사이드 스크립트 기술입니다. 윈도우 서버의 IIS 위에서 동적인 웹 페이지를 만들 수 있게 해준 기술로, 90년대 후반부터 2000년대 초
devwar.tistory.com
자바(Java)는 왜 커피잔일까? 오크(Oak)에서 자바가 된 이름의 유래
자바(Java)의 로고는 왜 김이 모락모락 나는 커피잔일까요? 커피와 아무 상관 없어 보이는 이 프로그래밍 언어에 커피잔이 붙은 데는, 원래 '오크(Oak)'라는 나무 이름으로 불렸다가 상표권 문제로
devwar.tistory.com
'언어의역사' 카테고리의 다른 글
| 비동기 프레임워크 vs 동기 프레임워크, 스프링 부트는 왜 비동기를 안 쓸까? (FastAPI·가상 스레드까지) (0) | 2026.07.03 |
|---|---|
| C언어 이름의 유래 - B 다음이라서 C? 창시자도 확답하지 않은 이유 (0) | 2026.07.03 |
| 자바(Java)는 왜 커피잔일까? 오크(Oak)에서 자바가 된 이름의 유래 (0) | 2026.07.02 |
| ASP(Active Server Pages)란 무엇인가 — 초기 웹을 이끈 서버 스크립트의 등장과 쇠퇴 (0) | 2026.07.02 |
| 코틀린(Kotlin)이란? 자바부터 스프링·Ktor·멀티플랫폼까지 활용 범위 총정리 (2026) (0) | 2026.06.29 |