[IT인물열전] 당신이 이 글을 볼 수 있게 해준 C언어의 창조자, 데니스 리치

이상우 lswoo@itdonga.com

[IT동아 이상우 기자] 프로그램이란 컴퓨터가 특정한 작업을 수행하도록 지시하는 명령어의 집합이다. 컴퓨터의 두뇌에 해당하는 CPU는 스스로 생각하는 능력이 없고, 단순히 주어진 작업만을 빠르게 처리한다. 때문에 인간이 만든 프로그램을 컴퓨터에게 던져주면, 이 프로그램에 따라 정해진 일을 시작한다. 예를 들어보자. 우리가 계산기 프로그램을 열어서 여러 숫자와 사칙연산을 입력하면 우리에게 결과를 보여준다. 이처럼 프로그램은 우리가 컴퓨터에게 무언가를 시키고, 결과를 받아보는 등 컴퓨터와 인간이 소통하는 수단이라고 할 수 있다.

프로그램 코드
프로그램 코드

<프로그램은 인간과 컴퓨터의 소통 창구다, 출처: pixabay 무료 이미지>

오늘날 유명한 프로그램을 말해보라고 한다면 셀 수도 없이 많다. 그렇다면 프로그램을 만드는 개발자들 사이에서는 어떤 프로그램이 가장 유명할까? 'Hello World'를 떠올리지 않은 개발자는 드물 것이다. Hello Wolrd는 코드 몇 줄로만 이뤄진 아주 단순한 프로그램이다. 이를 실행하면 출력장치(모니터, 프린터 등)에 'Hello, World!'라는 단어가 나타난다. 이 프로그램이 유명한 이유는 현존하는 대부분의 프로그래밍 관련 서적에서 프로그램 개발을 실습해볼 수 있는 예제로 등장하기 때문이다. 이 예제가 처음 등장한 책은 1978년 미국의 컴퓨터 공학자 데니스 리치(Dennis MacAlistair Ritchie)와 브라이언 커닝핸(Brian Kernighan)이 쓴 'C 프로그래밍 언어(The C Programming Language)다.

C언어로 작성한 Hello
World
C언어로 작성한 Hello World

수십 년 전에 출판된 책의 예제가 아직까지 쓰이는 이유는 무엇일까? 오늘날 많은 프로그래밍 언어의 조상과도 같은 'C언어'를 개발한 사람이 바로 데니스 리치 본인이기 때문일 것이다. C++이나 자바 등의 언어는 모두 C언어에 뿌리를 두고 있다. 또한, C언어는 시스템 프로그램 개발을 위해 탄생한 언어로, 유닉스, 윈도, 리눅스 등 운영체제의 근간이 됐다. 조금 과장하자면, 독자가 지금 이 글을 읽을 수 있는 것은 데니스 리치가 개발한 C언어 덕분이라고 할 수 있다.

켄 톰슨과 데니스 리치
켄 톰슨과 데니스 리치

벨 연구소에서 태어난 유닉스와 C언어

데니스 리치는 1941년 뉴욕 브롱스빌에서 태어나 하버드 대학교에서 물리학과 응용수학을 전공하고, 1967년부터는 AT&T가 설립한 '벨 연구소'에서 근무했다. 윌리엄 쇼클리(William Bradford Shockley, http://it.donga.com/20355/)가 컴퓨터 기술의 핵심이라고 할 수 있는 트랜지스터를 개발했던 곳도 이 벨 연구소였다.

벨 연구소
벨 연구소

<벨 연구소 전경, 출처: 위키백과>

C언어가 세상에 등장한 것은 1971년으로, 사실 C언어는 유닉스를 개발하는 과정에서 부산물로 태어난 프로그램 언어다. 데니스 리치는 벨 연구소에서 그의 동료인 켄 톰슨, 더글라스 매킬로이 등과 함께 범용 운영체제 유닉스를 개발했는데, 그는 운영체제인 유닉스가 서로 다른 하드웨어 시스템에서도 구동할 수 있기를 원했다.

이전까지 프로그램은 범용이 아닌, 특정 장치에서만 작동할 수 있도록 설계되었다. 이 때문에 개발자는 새로운 플랫폼이 등장하면 기존의 프로그램을 해당 플랫폼에서 사용할 수 있도록 만드는 일에 많은 시간을 할애해야 했다. 데니스 리치가 C언어를 개발한 것도 이 때문이다. C언어의 문법으로 작성한 코드는 다른 컴퓨터 환경에서도 거의 고치지 않고 그대로 작동한다. C언어를 개발한 이후에는 유닉스를 C언어로 다시 제작했다. 유닉스를 다양한 하드웨어에서 사용할 수 있도록 하기 위해서였다.

국립 기술혁신 메달을 받는 켄 톰슨과 데니스
리치
국립 기술혁신 메달을 받는 켄 톰슨과 데니스 리치

<유닉스를 개발한 공로로 국립 기술혁신 메달을 받는 켄 톰슨(좌)과 데니스 리치(우)>

당연한 이야기지만, 컴퓨터와 인간이 사용하는 언어는 다르다. 잘 알려진 것처럼 컴퓨터는 모든 것을 0과 1로만 구분한다. 오직 전기신호가 입력되는지 아닌 지만을 구분할 수 있기 때문이다. 따라서 과거에는 프로그램을 만들 때 컴퓨터가 이해할 수 있는 이진수(기계어)로 개발해야 했다. 어셈블리라는 언어와 이를 기계어로 변환해주는 어셈블러가 등장하면서 이러한 과정은 조금이나마 수월해졌지만, 개발자는 여전히 더 사용하기 쉬운 개발 언어를 원했다.

C언어는 프로그래밍에 인간이 사용하는 언어와 유사한 부분이 많다. 따라서 코드 작성 시 기존의 언어보다 알아보기 쉬웠으며, 코드의 길이도 짧아졌다. 다음 예시는 앞서 말한 Hello World 프로그램을 각각 어셈블리와 C로 코드를 작성한 모습이다.

어셈블리로 작성한 Hello World 프로그램
코드
어셈블리로 작성한 Hello World 프로그램 코드

C로 작성한 Hello World 프로그램
코드
C로 작성한 Hello World 프로그램 코드

데니스 리치가 없었으면 애플도 없었다

데니스 리치가 개발한 유닉스와 C언어는 컴퓨터 역사에 큰 획을 그었다. 미국 경제 전문지 비즈니스 인사이더는 '오늘날 애플 컴퓨터가 존재할 수 있었던 것은 데니스 리치와 켄 톰슨이 만든 유닉스 덕분'이라고 평가하기도 했다. 데니스 리치가 없었다면 스티브 잡스는 물론, 빌 게이츠 같은 인물도 유명해질 수 없었을 것이라고 생각한다.

데니스 리치는 이런 업적 덕분에 컴퓨터 기술과 관련해서 많은 상을 받는다. 1983년에는 컴퓨터 과학의 노벨상이라고 불리는 '튜링 상'을 받았으며, 1998년에는 미국 정부가 수여하는 '국립 기술혁신 메달'을 받는다. 이보다 앞선 1997년에는 유닉스와 C언어를 개발한 공로로 전기 전자 기술자 협회(IEEE)로부터 훈장을 받기도 했으며, 2011년에는 같은 공로로 일본 상(Japan Prize)를 받았다.

일본 상을 받는 더글라스 매킬로이와 데니스
리치
일본 상을 받는 더글라스 매킬로이와 데니스 리치

<일본 상을 받는 더글라스 매킬로이(좌)와 데니스 리치(우), 출처: 위키백과>

2011년, 세상을 떠나다

데니스 리치는 2011년 10월 12일, 만 70세의 나이로 세상을 떠난다. 해외 매체의 보도에 따르면 지병이 악화됐다고 한다. 공교롭게도 같은 달(2011년 10월 6일) 스티브 잡스의 별세로 세상의 이목이 여기에 쏠려있었기 때문에, 아쉽게도 이 천재의 죽음은 많은 이들의 주목을 받지 못했다.

오늘날 우리가 사용하는 컴퓨터, 나아가 스마트폰이나 태블릿PC 등은 모두 데니스 리치의 업적을 바탕으로 하고 있다. 그가 개발한 유닉스와 C언어는 오늘날 여러 개발자를 통해 대를 이어가고 있다. 비록 그는 세상을 떠났지만, 많은 개발자의 정신적 기둥으로 남아 있을 것이다.

글 / IT동아 이상우(lswoo@itdonga.com)

※본 기사는 네이버캐스트(http://navercast.naver.com/)의 'IT 인물 열전' 코너에도 함께 연재됩니다.

IT동아의 모든 콘텐츠(기사)는 Creative commons 저작자표시-비영리-변경금지 라이선스에 따라 이용할 수 있습니다.
의견은 IT동아(게임동아) 페이스북에서 덧글 또는 메신저로 남겨주세요.