출처
리누스 토르발스가 말하는 "왜 여전히 C인가"
1. 개요
•
원문: 리누스 토르발스(Linus Torvalds) 인터뷰
•
주제: C를 대체할 만한, 운영체제(OS) 개발에 적합한 새로운 프로그래밍 언어가 있는가에 대한 질문과 답변.
•
핵심 답변: 리누스는 스스로를 "구식(old-fashioned)"이라 표현하며, 하드웨어를 소프트웨어 관점에서 다루는 데 있어 C에 근접한 언어를 아직 보지 못했다고 밝힘.
•
결론 요약: C의 강점은 단순히 "하드웨어용 좋은 코드를 생성한다"는 데 있지 않고, 컴퓨터처럼 사고할 때 C 코드가 그대로 말이 된다(makes sense)는 데 있음. 이는 최근 18개월간의 커널 경로 탐색(path lookup) 최적화 성과로 뒷받침됨.
2. C를 선호하는 이유
관점 | 리누스의 견해 |
출발점 | OS/리눅스에 뛰어든 근본 동기는 하드웨어에 대한 애정. 납땜 같은 물리 작업이 아니라, 소프트웨어 관점에서 하드웨어와 상호작용하는 것을 좋아함. |
C의 본질 | 하드웨어용 코드 생성 능력뿐 아니라, "컴퓨터처럼 사고하면 C가 자연스럽게 이해된다"는 점이 핵심. |
설계 배경 | C는 컴파일러가 단순해야 했던 시대에, 출력(어셈블리)에 맞춰(geared toward output) 설계됨. |
예측 가능성 | 그래서 리누스는 C를 읽으면 어셈블리가 어떤 모습일지 안다. 그는 이 예측 가능성을 중요하게 여김. |
3. 현재 역할과 최근 작업
•
현재는 직접 코딩보다 기술 리드(technical lead)로서 다른 사람의 코드를 머지(merge)하는 비중이 큼.
•
다만 최근 몇 달간 직접 손댄 코드는 파일/경로 탐색(file and path lookup) 부분.
◦
목표: 가능한 한 캐시 미스(cache miss)를 적게 발생시키는 것.
◦
해당 코드는 전부 C로 작성.
4. 마이크로 최적화 (Micro-optimization)
•
최적화 수준: 단일 명령어(single instruction), 특히 단일 캐시 미스 단위까지 신경 쓰는 극도로 낮은 레벨.
•
철학:
◦
"마이크로 최적화를 하지 말라"는 통념이 있지만, 그것을 사랑한다면 그것을 해야 한다.
◦
단, 알고리즘 자체를 먼저 좋게 만든 뒤 마이크로 최적화에 들어감 (순서가 중요).
5. 성과 (지난 18개월)
•
경로 이름(path name) 조회를 세계 그 누구보다 빠르게 수행한다고 자신함("I guarantee it").
•
1,000 CPU 규모 머신에서도 경합(contention) 없이 병렬 처리 가능.
•
리누스 본인이 "결코 도달하지 못할 줄 알았지만 이제 도달했다"고 평가할 만큼 인상적인 성과.
6. 시사점
1.
언어 선택은 목적에 종속: OS/커널처럼 하드웨어와 밀착하고 어셈블리 수준의 예측 가능성이 중요한 영역에서는 C의 강점이 여전히 뚜렷함.
2.
"예측 가능성"이 핵심 가치: 고수준 추상화보다, 생성될 기계어를 머릿속에 그릴 수 있다는 점이 저수준 시스템 개발자에게 중요.
3.
최적화의 순서: 알고리즘 개선 → 이후 마이크로 최적화. 무작정 미세 최적화부터 하는 것을 경계.
4.
확장성 검증: 캐시 미스 최소화 + 경합 없는 병렬화는 대규모(수천 코어) 환경에서 실제로 검증된 결과.
부록. 원문 핵심 인용
•
"I have yet to see a language that comes even close to C in that respect."
•
"If you think like a computer, writing C actually makes sense."
•
"When I read C, I know what the assembly language will look like, and that's something I care about."
•
"We made sure our algorithms are good before we started the micro optimizations."
•
"We look up path names way faster than anybody else ... in parallel on a thousand CPU machine with no contention."
