[연재] 프로그래밍 언어 이야기 3 - C 언어
"프로그래밍 언어 이야기" 연재
- 프로그래밍 언어 이야기, 연재를 시작하며
- 프로그래밍 언어 이야기 1 - 베이직
- 프로그래밍 언어 이야기 2 - 파스칼
- 프로그래밍 언어 이야기 3 - C 언어
-----
바쁘다는 핑계로 한동안 쉬었던 "프로그래밍 언어 이야기" 연재를 8개월만에 재개해 봅니다. 미네르바 사건 등 사회적 이슈에 주로 관심있으신 분들께는 아무래도 많이 생소한 주제일 것입니다. 프로그래밍 분야에 특별히 관심이 없는 분들은 그냥 건너뛰시기 바랍니다. ;)
-----
C는 1972년 유닉스에서 사용하기 위해 벨 연구소의 데니스 리치가 만든 프로그래밍 언어로, 프로그래밍을 공부하는 과정에서 대개 한 번 쯤은 거쳐가는 언어이다.
나는 대학생때 "The C Programming Language" 책으로 C 언어를 공부했는데, 270페이지의 책 두께가 보여주듯이 C는 꽤나 간결한 언어이다. ("The Ruby Programming Language"가 450페이지, "Core Java, Vol. 1"과 "Core Java, Vol. 2"가 합쳐서 1,900페이지인 것과 비교해보라!)
C의 주요 특징/장점은 아래와 같다.
- 포인터를 통해 (할당받은) 메모리 영역을 직접 조작할 수 있다.
- 실질적으로 현존하는 모든 운영체제의 ABI가 C를 기준으로 설계돼 있다.
- 모든 시스템 프로그래밍 레벨 라이브러리들은 항상 C API를 제공한다. (그리고 타 언어 API는 늘 해당 C API를 기반으로 구현된다.)
- 다른 프로그래밍 언어들이 대부분 C로 구현돼 있기 때문에, 해당 언어의 익스텐션 개발도 C로 이뤄진다.
1번은 이미치 처리 등과 같이 메모리의 효율적 사용이 필수적인 종류의 알고리즘에서 매우 중요하게 작용한다.
2, 3, 4번은 현재의 (그리고 지난 30여년간의) 프로그래밍 환경에서 추상계층 하부구조가 가진 특성을 반영한다. (아마도 새로운 운영체제와 시스템 프로그래밍 언어가 동시에 만들어지지 않는 이상, 이러한 하부구조는 앞으로도 쉽게 변하기 어려울 것이다.)
나는 프로그래머들이 C에 대해 두가지의 태도를 견지해야 한다고 생각한다.
C는 소프트웨어 추상계층의 하부를 장악하고 있는 언어이다. 그런 점에서 C를 잘 다루는 것은 실용적인 관점에서도 매우 중요하다. 주 언어가 C가 아닌 프로그래머라도 C를 사용할 줄 모른다면 소프트웨어적 문제해결에 있어 여러가지 한계에 부닥치게 된다.
하지만 다른 관점에서 C는 만들어진지가 40년이나 된 낡은 언어이기도 하다. 그같은 구닥다리 언어가 여전히 소프트웨어 추상계층의 하부를 장악하고 있는 현상은 프로그래밍 환경의 발전에 있어 여러 제약 사항으로 작용하고 있는 것 또한 사실이다.
지난 10년여간의 "프로그래밍 언어 르네상스"의 시기를 거치면서, 함수 리터럴(클로져), 메타프로그래밍, 병렬 프로그래밍 등에 대한 프로그래머들의 새로운 관심은 이들 기능에 대한 지원을 어떻게 좀더 소프트웨어 추상계층의 하부로 이동시킬 지에 대한 논의 또한 유발시키고 있다. (실제로 애플의 경우는 맥 OS X 10.6에서 C 언어에 비표준 클로져 익스텐션을 추가하고 이를 이용해 새로운 병렬 프로그래밍 API를 구현해냈다.)
눈여겨 볼만한 사실은 지난 10여년간 로우레벨을 능숙히 다루는 프로그래머들의 숫자가 급감하면서 소프트웨어 추상계층 하부에서의 혁신이 무척 더뎌졌다는 점이다. 오히려 그래서 시스템 프로그래밍 언어 구현, 운영체제 설계 등의 로우레벨 분야에서 앞으로 흥미로운 기회들이 많이 생겨날 것으로 보인다.


제가 컴에 대한 상담 문의를 할까 말까 망설이고 있었습니다.
저는 컴에는 문외한이지만 그래도 상당히 관심이 많거든요.
아무튼 이번 기회로 저도 컴프로그래밍을 공부하려고 합니다.
나중에 여러가지 일들이 해결이 되기 시작하면
Makefile님의 이멜로 연락을 드리겠습니다.
보람있는 하루가 되시기를 바랍니다. :)
아참 이 블로그를 통해 알게된 "김철균" 씨가 이번엔 트위터 검열의 뉘앙스를 풍기는 발언 때문에 회자되고 있더군요. 자기 버릇 개 못준다죠.
오랜만에 들어오니 글이 몇 개 올라와있군요.
지치지 마시고 안녕하시길 바라겠습니다.
잘 진행하셔서 승소하기를 바랍니다.
건강에 유의하시고 평안하시기를~!
되도록이면 변호사들을 많이 확보하시는게 좋아요.
변호사들과 상담을 충분히 하시도록 권하고 싶습니다.
아무쪼록 잘 진행되기를 바랍니다.
항상 관심을 가지고 응원하고 있습니다.
제가 me@daesan.com으로 pna대안언어축제관련해 메일 하나 보내드렸는데요.
연락이 없으셔서 이렇게 댓글 남깁니다.