블로그메인ct_인명사전 데니스 리치(수요일)_20150623_2.png

컴퓨터의 두뇌에 해당하는 CPU는 주어진 작업만을 빠르게 처리할 뿐 스스로 생각하는 능력은 없습니다. 사람이 만든 프로그램을 컴퓨터에 명령해야지만 이에 따라 정해진 일을 시작할 수 있죠. 따라서 프로그램이란 컴퓨터와 사람 사이를 연결하는 일종의 커뮤니케이션 요소라고 할 수 있습니다. 현재 유명한 프로그램은 수도 없이 많지만, ‘Hello World’를 모르는 개발자는 없을 거라고 하는데요. 이는 몇 줄의 코드로 이뤄진 단순한 프로그램으로 실행하면 출력장치에 ‘Hello World’라는 단어가 나타난다고 합니다. 이 프로그램이 유명한 이유는 현존하는 대부분의 프로그래밍 관련 서적에 실습 예제로 등장하기 때문인데요. 이 예제가 처음 등장한 책은 1978년 미국의 컴퓨터 공학자 데니스 리치와 브라이언 커닝핸이 쓴 ‘C프로그래밍 언어’입니다. 오늘은 현존하는 많은 프로그래밍 언어의 조상과도 같은 이 ‘C언어’를 개발한 ‘데니스 리치’에 대해 알아보려고 하는데요. 현대적 운영 체제의 원형인 유닉스의 공동개발자이자, C언어의 창시자인 그의 인생과 업적을 함께 살펴보도록 해요~!

 

title1 (77).png

데니스 리치는 1941년 9월 9일 뉴욕 인근의 소도시인 브롱스빌(Bronxville)에서 태어났습니다. 그의 아버지인 알리스테어 리치(Alistair E. Ritchie)는 유명한 컴퓨터 과학자로 벨 연구소에서 오랫동안 일하며 스위치회로(switching circuit) 이론을 정립한 인물이었는데요. 데니스 리치가 컴퓨터를 처음 만난 시기는 하버드 재학 시절 '유니박1' 강의를 들었을 때였습니다. 그는 1963년 하버드 대학에서 물리학 학위를 받았고, 이후 메인프레임을 더 작고 싼 컴퓨터로 옮기는 연구를 처음 시작한 매사추세츠 공대(MIT)로 자리를 옮긴 뒤, 1967년 아버지가 일하던 벨 연구소에 입사하게 됩니다.

1 - 2019-10-21T194146.890.png▲ 벨 연구소 전경 / 출처 : 위키백과 (http://ko.wikipedia.org/)

당시 벨 연구소는 일괄처리 방식을 상호작용 방식으로 대체하는 아이디어로 멀틱스(Multics)를 개발하기 시작했습니다. 멀틱스는 '일괄처리(batch processing)' 방식을 상호작용(interactivity) 방식으로 대체하는 아이디어에서 출발했는데요. 일괄처리란, 프로그램이 입력 받은 작업 목록을 한꺼번에 수행하는 방식을 가리킵니다. 반면 상호작용 방식이란, OS가 돌리는 소프트웨어(SW)를 만드는 프로그래머나 이를 실행하는 일반 사용자가 직접 그 작업방식을 제어할 수 있는 것을 말하죠.

2 - 2019-10-21T194205.570.png

벨 연구소에는 리치의 동료 프로그래머 켄 톰슨도 있었는데요. 벨 연구소는 향후 멀틱스 연구를 중단했지만 리치와 톰슨은 그 OS 설계의 핵심이 되는 상호작용과 협업에 대한 아이디어를 버릴 수 없었습니다. 톰슨은 '유닉스(Unix)'라 명명한 멀틱스 후속 OS를 연구하기 시작했고 리치도 곧 그 작업에 동참했죠. 또한 최초의 유닉스를 개발하던 중 새로운 시스템이 필요하게 되어 PDP-7에서 새 기종인 PDP-11로 유닉스를 이식하게 되었습니다. 이 과정에서 여러 기종에서 유닉스를 이식하기 쉽게 하기 위해, 켄 톰슨의 B언어(BCPL을바탕으로 만든 언어)를 바탕으로 새로운 언어를 만들게 되는데 이것이 바로 C언어였습니다.

 

title2 (77).png

켄 톰슨에 따르면 1969년 벨 연구소에서 유닉스를 만들게 된 동기가 당시 퇴물과도 같았던 PDP-7에서 스페이스워 게임을 돌릴 수 있도록 하기 위해서였다고 합니다. 어찌 보 면 별 것도 아닌 것을 위해 말도 안 되는 엄청난 일을 벌인 셈인데, 더 놀라운 것은 그의 이런 계획에 데니스 리치를 포함한 최고의 과학자들이 모두 열정적으로 매달렸다는 점인데요. 그들의 이런 성향은 오늘날의 시각에서는 이해하기가 쉽지 않지만, 당시 대항문화와 열정으로 가득 찬 젊은이들의 문화에서는 충분히 가능한 일이었습니다.

데니스 리치와 켄 톰슨은 특히나 공동체 지향적인 성향이 강했다고 하는데, 그래서 자신들이 만든 프로그램에 대해서 어떠한 대가도 바라지 않고 친절하게 수 많은 사람들에게 설명을 해주곤 했습니다. 특히 이들이 영향을 많이 준 그룹은 캘리포니아 버클리 대학의 컴퓨터 과학자들이었는데요. 켄 톰슨과 데니스 리치는 1970년 대에 서부연안 유닉스 사용자 모임 등을 통해서 유닉스 코드를 한 줄씩 읽어주면서 직접 설명을 하고, 며칠 간 많은 사람들에게 유닉스의 정신을 전파했다고 하죠.

데니스 리치와 켄 톰슨은 자신들이 만든 유닉스가 많은 사람들에게 이용되기를 원했고, 이들의 의지를 이어받아 버클리 대학의 프로그래머들이 많은 개선을 통해 BSD 유닉스를 탄생시켰습니다. 이들의 생각들은 리차드 스톨만의 자유소프트웨어재단(FSF, Free Software Foundation)과 오픈 소스 운동으로 이어지게 됩니다.

★ 오픈 소스(Open Source)란?

오픈소스 소프트웨어, OSS라고도 합니다. 소프트웨어의 설계도에 해당하는 소스코드를 인터넷 등을 통하여 무상으로 공개하여 누구나 그 소프트웨어를 개량하고, 이것을 재배포할 수 있도록 하는 것 또는 그런 소프트웨어를 말하는데요. 이는 소스코드를 공개하여 유용한 기술을 공유함으로써 전세계의 누구나가 자유롭게 소프트웨어의 개발·개량에 참여할 수 있게 하는 것이 우수한 소프트웨어를 만드는 데 도움이 된다는 생각에 바탕을 두고 있습니다.

 

3 (98).png

결론적으로 1974년, 유닉스는 C언어로 쓰여진 최초의 운영체계가 되었는데요. 여러 회사들이나 대학 및 개인들에 의해 많은 확장판과 새로운 아이디어들이 다양한 버전의 유닉스에 추가됨으로써, 대형 프리웨어 제품의 한 종류로 진화하였고 현재 최고의 오픈 OS로 유명하며 많은 IT 산업에 영향을 미치고 있는 Linux의 기원도 여기에서 파생되었다고 알려져 있습니다.

유닉스는 앞서가는 특정 컴퓨터 회사들에 의해 소유된 독점적인 운영체계가 아니었다는 것과 또 그것이 표준 프로그래밍 언어로 작성되고, 대중적인 많은 아이디어를 받아들였다는 이유 때문에 누구에 의해서도 개선되고 강화될 수 있는 최초의 개방형 표준 운영체계가 되어 현재의 오픈 소스 진영의 기초가 되는 중요한 운영체제이기도 했습니다.

 

title3 (54).png

C언어가 세상에 등장한 것은 1971년으로, 사실 유닉스를 개발하는 과정에서 부산물로 태어난 프로그램 언어입니다. 하지만 유닉스의 성공과는 별도로 엄청난 성공을 거두게 되었습니다.

데니스 리치는 벨 연구소에서 그의 동료인 켄 톰슨, 더글라스 매킬로이 등과 함께 범용 운영체제 유닉스를 개발했는데, 그는 운영체제인 유닉스가 서로 다른 하드웨어 시스템에서도 구동될 수 있기를 원했습니다. 이전까지 프로그램은 범용이 아닌, 특정 장치에서만 작동할 수 있도록 설계되었었는데요. 이 때문에 개발자는 새로운 플랫폼이 등장하면 기존의 프로그램을 해당 플랫폼에서 사용할 수 있도록 만드는 일에 많은 시간을 할애해야 했습니다. 데니스 리치가 C언어를 개발한 것도 이 때문이었습니다. C언어의 문법으로 작성한 코드는 다른 컴퓨터 환경에서도 거의 고치지 않고 그대로 작동하는데요. C언어를 개발한 이후에는 유닉스를 C언어로 다시 제작했습니다. 유닉스를 다양한 하드웨어에서 사용할 수 있도록 하기 위해서였죠.

C언어는 다양한 어플리케이션뿐만 아니라, 현대적인 대부분의 운영체제와 여러 컴퓨팅 기능을 가진 기계들을 동작시키는 가장 기초적인 언어로 수많은 개발자들의 사랑을 받았습니다. 그리고 C 언어의 기본적인 문법을 기초로 하여 현재 가장 인기 있는 프로그래밍 언어들이 탄생하게 되었답니다.

C언어는 프로그래밍 시 사람이 사용하는 언어와 유사한 부분이 많습니다. 따라서 코드를 작성했을 때 기존의 언어보다 알아보기 쉬웠으며, 코드의 길이도 짧아졌는데요.

4 (91).png▲ Hello World 프로그램을 각각 어셈블리(좌)와 C언어(우)로 작성한 모습 / 출처 : 위키백과 (http://ko.wikipedia.org/)

위 예시에 알 수 있듯, 어셈블리로 다른 하드웨어 시스템용 프로그램을 만든다면 같은 어셈블리 언어지만, 전혀 다른 문법으로 재작성해야 합니다. 하지만 C언어로 작성한 Hello World를 보면 어셈블리와 비교해 문장이 매우 간결한 것을 알 수 있죠.

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

이런 공로를 인정받아 1983년 유닉스의 주개발자였던 켄 톰슨과 데니스 리치는 컴퓨터 과학계의 노벨상이라고 할 수 있는 튜링 어워드(Turing Award)를 수상했으며, 1999년에는 클린턴 대통령에게 기술부분 최고의 영예인 국가기술혁신메달(National Medal of Technology and Innovation)을 받기도 했습니다.

 

IT 역사의 부흥기를 만들었다고 평가되는 데니스 리치는 2011년 10월 12일, 만 70세의 나이로 세상을 떠났는데요. 공교롭게도 같은 달 스티브 잡스의 별세로 많은 이들의 주목을 받지 못했습니다. 하지만 오늘날 우리가 사용하는 컴퓨터, 나아가 스마트폰이나 태블릿PC 등은 모두 데니스 리치의 업적을 바탕으로 하고 있다고 해도 과언이 아니죠. 그가 개발한 유닉스와 C언어는 지금도 여러 개발자들을 통해 유용하게 사용되고 있답니다. 자신이 개발한 결과물을 많은 사람들과 공유하여 IT 발전에 공헌한 데니스 리치. 그의 이러한 발자취야말로 현대 IT 산업의 부흥을 이끈 진정 가치 있는 것이 아닐까 생각해봅니다.