Search

260808_2144_"왜 여전히 C인가"

출처

리누스 토르발스가 말하는 "왜 여전히 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."