C언어 (C Language)
1972년, 미국 뉴저지주 벨 연구소.
켄 톰슨과 데니스 리치가 새로운 고민에 빠져 있었다.
혁신적인 운영체제인 유닉스(UNIX)는 이미 완성했다.
하지만 작성된 코드를 다른 컴퓨터로 옮기는 것은 또 다른 문제.
"소프트웨어를 어디서든 작동하게 만들 방법이 없을까?"
21세기에도 아직 완전한 답을 찾지 못한 이 질문은,
컴퓨터 역사상 가장 영향력 있는 '언어'를 탄생시키는 계기가 된다.
톰슨은 먼저 B언어를 만들었다. 하지만 뭔가 부족했다.
리치가 B언어에 자료형이라는 ‘체계’를 더하고, 기계의 메모리를 직접 주무를 수 있는 ‘권능’을 추가한다.
알파벳 B 다음이니까, 이름은 C.
궁극의 ‘공대 감성’ 네이밍. 애초에 ‘B’ 언어도 BCPL(Basic Combined Programming Language)에서 영향을 받았다고 전해진다.
좋은 언어와 좋은 교과서는 떼려야 뗄 수 없다.
1978년, 리치와 동료 브라이언 커니핸은 C언어 교과서를 출간.
이 교과서의 첫 번째 예제는, 컴퓨터를 배운 사람에게는 너무나 친숙한 문장이다.
printf("hello, world");
화면에 인사 한 줄을 띄우는 이 단순한 코드는, 이후 모든 프로그래밍 언어의 첫 관문이 되었다.
인간이 만든 프로그램이 인공지능이 되어 인간과 대화하는 2026년,
프로그램이 내게 인사를 건네는 첫 코드는 감회가 새롭다.
C언어와의 결합을 통해 유닉스는 비로소 어떤 컴퓨터에든 옮겨 심을 수 있는 운영체제가 되어,
각지의 연구소와 대학으로 빠르게 퍼져 나간다.
당시 프로그래밍 세계에는 이미 여러 언어가 각축을 벌이고 있었다.
과학 계산의 왕자 포트란(FORTRAN), 비즈니스 데이터 처리의 강자 코볼(COBOL), 교육용으로 사랑받던 파스칼(Pascal). 하지만 이들에겐 치명적인 한계가 있었다. 포트란과 코볼은 특정 분야에만 최적화되어 있었고, 파스칼은 너무 깔끔해서 하드웨어에 가까운 영역을 유연하게 다루기 어려웠다.
C는 달랐다. 인간의 언어처럼 읽기 쉬우면서도, 기계어만큼 빠르고, 어떤 컴퓨터에서든 돌아갔다.
"적당히 높고, 적당히 낮은" 이 절묘한 균형이 C를 50년 넘게 살아남게 한 비결이었다.
이후로도 수많은 언어가 태어났다.
세계 각국이 저마다의 말을 쓰듯, 개발자들도 목적에 따라 수백 가지 언어를 골라 쓴다.
FORTRAN, COBOL, LISP, ALGOL, BASIC, Pascal, Ada, Prolog, Smalltalk, C++, Objective-C, Perl, Haskell, Python, Ruby, Java, JavaScript, PHP, Lua, R, C#, Scala, Groovy, F#, Clojure, Go, Rust, Kotlin, Swift, TypeScript, Julia, Elixir, Dart, Zig, Nim, Crystal, V, Mojo…
이것도 극히 일부다.
기록된 프로그래밍 언어만 수천 개. 거슬러 올라가면, 수많은 언어의 계보가 결국 C 근처로 모인다.
50년이 지난 2026년.
세상은 화려한 인공지능(AI)과 함께, 새롭게 왕좌를 차지한 파이썬(Python)의 시대로 보인다.
오래전 학창 시절, 파이썬은 C언어나 Java에 입문하기 위한 ‘초보자용’ 언어 취급을 받았던 것을 생각하면 격세지감.
이제는 "C언어? 누가 그걸 새로 배워?"라고 말하는 사람도 있다.
하지만 우리가 파이썬으로 TensorFlow나 PyTorch와 같은 딥러닝 프레임워크를 불러오는 순간, 수면 아래에서는 C와 C++로 짜인 거대한 엔진이 돌아가기 시작한다. 속도에 한계가 있는 파이썬이 실시간으로 AI를 돌릴 수 있는 건, 힘든 계산을 전부 C언어로 된 하부 구조에 떠넘기기 때문이다.
엔비디아(NVIDIA)의 H100 GPU를 제어하는 CUDA? 역시 C/C++ 기반.
스마트폰의 안드로이드, iOS 커널? C다.
지금 이 글을 보여주는 웹 브라우저 엔진? C++이다.
세상은 변했지만, C는 사라지지 않았다.
오히려 더 깊고 어두운 곳으로 내려가, 디지털 세계 전체를 떠받치는 보이지 않는 거인이 되었다.
데니스 리치는 2011년, 스티브 잡스가 사망한 지 일주일 뒤에 조용히 세상을 떠났다.
화려한 추모 행렬은 없었지만, 전 세계의 개발자들은 조용히
printf("goodbye, world");
라고 코드를 쓰며, 그를 기렸다.
유행은 돌고 돈다.
늘 새로운 언어들이 C의 자리를 넘보지만,
C가 남긴 유산—절차적 사고, 메모리에 대한 이해, 효율성 추구—은 영원하다.
화려한 AI의 시대, 노코드, 바이브 코딩, 이제 인간이 코딩을 하는 시대는 끝났다는 말도 들린다.
컴퓨터를 잘 몰라도 간단한 앱을 만들 수 있는 시대가 열렸다.
하지만 가끔은 이 화려함을 가능케 한, 투박한 흑백 터미널 시절의 천재들을 기억해 주기를.
디지털 세상이 계속되는 한, 우리는 여전히 그들이 만든 레일 위를 달리고 있으니까.
최대한 신중하게 팩트 체크를 거쳤지만, 기술과 역사를 다루다 보니 놓친 부분이 있을 수 있습니다.
혹시 부족한 점을 발견하신다면 너그럽게 댓글로 알려주세요. 여러분의 조언이 모여 더 좋은 글이 됩니다.