C의 존재 의의?

2020. 3. 16.


2019년 1월 15일 당시에 들었던 생각을 정리해 페이스북에 올렸던 글입니다. 블로그로 옮기려고 생각했던 첫번째 글입니다.

많은 매체에서 C의 시대는 저물었다고들 이야기한다. 어차피 배워만 놓고 쓰지도 않을 거라는 이야기도 있고, 그런 걸 할 바에야 현대적이고 쉬운 언어를 하라는 이야기도 자주 보인다. 하지만 정말 C는 배울 필요가 없는 걸까? 개인적으로 이런 류의 이야기는 사실상 약팔이에 가깝다고 본다. 더도 말고 덜도 말고 딱 두 가지 이유만 대자면, C는 아직도 현업에서의 점유율이 크다는 점과 전산 교육용 언어로써의 이점을 지니고 있다는 점을 들 수 있을 것이다.

특정 언어가 쓰이는 정도를 매월마다 백분율로 정리해주는 사이트가 있다. 꽤 오래전부터 지속되고있고, 수많은 주장들에 증거로써 제시되고 있는 사이트이기에 신뢰성이 높다고 할 수 있다. 그런 사이트에서 C의 점유율이 2019년 현재 당당히 2위를 차지하고 있다. 우리(학부생 나부랭이)가 찾아보기 힘든 곳 어딘가에서도 C 할아버지는 열심히 현역으로 돌고 계신다는 뜻이 되겠다.

거기다 2018년 6월에 C18이라는 새로운 표준안까지 나온 상태다. 쓰이지도 않을 언어에 표준안을 제정할 만큼 ISO가 바보는 아닐 것이다. 리눅스의 중심을 지키는 gcc 8버전과 MacOS의 기본 컴파일러인 clang 6버전에도 채택된 만큼 전체적인 프로젝트 수가 줄어들지는 않을 것이다.

또한 C는 타 고급 언어들보다 하드웨어를 들여다보기 쉬운 언어다. 그 말인즉슨, 하드웨어를 공부하기도 비교적 수월하다는 말이 되겠다. 실제로 CS:APP 같은 책은 컴퓨터 시스템을 설명하기 위해 C로 예제를 보여주기도 한다. 물론 익숙하지 않은 이들에겐 하나의 벽으로 다가오겠으나, 그만큼 C가 이 부분에 있어서 대체할 수 없는 요소임을 증명하는 것이라고 생각한다.

딥러닝이 시대의 화두가 된 지금, 전산학도로써 걸어야 할 길이 대체 어디인지 갈팡질팡하는 이들이 꽤 있을 것으로 예상된다. 어떤 라이브러리가 좋다더라, 어떤 프레임워크가 좋다더라하며 수없이 달콤한 향기가 주변에 맴돌 것이다. 그러나 우리가 명심해야 할 것은 딱 한 가지, 모든 코드는 기계 위에서 돌아야 한다는 것뿐이다. 그 기초 뼈대를 떠받들고 있는 것은 C 내지는 asm, 더 나아가 기계어이고, 이를 무시한다는 것은 허공 위에 건물을 짓겠다는 말과 크게 다름없다고 생각한다.

물론 언젠가는 전산학의 기초가 흔들릴 정도로 세상이 격변할 지 모른다. 양자 컴퓨터, 유비쿼터스, 우리가 상상하지 못하고 있는 그 무언가까지. 하지만 아직은 아니다. 그게 내가 C를 쳐다도 보지 말라고 차마 이야기할 수 없는 이유다. 약팔이에 현혹되면 안된다. 멋있다고 휩쓸리지 말자. 중심을 잡자. 기초를 쌓자. 어떻게 말해도 부족하다.

기본이 가장 중요하다.