데니스 리치

위키원
sekung1010 (토론 | 기여)님의 2020년 7월 15일 (수) 16:14 판
이동: 둘러보기, 검색

데니스 리치(Dennis Ritchie 또는 Dennis MacAlistair Ritchie, 1941년 9월 9일 ~ 2011년 10월 12일)는 미국의 전산학자, 공학 기술자이자 컴퓨터 과학자이다. 그리고 현대 컴퓨터의 선구자이자 C 언어유닉스 운영체제의 창시자로 'C언어와 유닉스의 아버지'라고 불린다.

생애

데니스 리치는 1941년 9월 9일 미국의 뉴욕주 브롱스빌(Bronxville)에서 태어나 뉴저지에서 자랐다. 그의 아버지 앨리스터 리치는 벨 연구소에서 스위칭 시스템 엔지니어로 일했고 그의 어머니 장 맥케 리치는 가정 주부였다. 데니스 리치가 어렸을 때 뉴저지로 이사했고 하버드 대학교에 진학했다. 데니스 리치가 컴퓨터를 처음 접하게 된 시기는 하버드대에서 '유니박 I' 강의를 들으면서부터였다. 그는 하버드 대학교, 대학원에서 물리학과 응용수학을 전공하여 학위를 얻었다. 그러면서 매사추세츠 공과 대학의 컴퓨터 센터에서 근무했으며 수학보다 컴퓨터에 더 관심을 가지게 되었다. 그리고 그는 무기 연구 및 실험을 하는 산디아 국립 연구소(Sandia National Laboratories)에 채용되었지만 데니스 리치는 2001년 인터뷰에서 "거의 1968년이 되었는데 정부를 위해 폭탄을 제작하는 것은 시대와 조화를 이루지 못한 것"이라고 회상했다. 데니스 리치는 1967년 에이앤티(A&T)가 설립한 벨 연구소에서 근무했다. 윌리엄 쇼클리(William Bradford Shockley)가 컴퓨터 기술의 핵심이라고 할 수 있는 트랜지스터를 개발했던 곳도 이 벨 연구소였다. 당시 벨 연구소는 일괄처리 방식을 상호작용 방식으로 대체하는 아이디어로 멀틱스(Multics)를 개발하기 시작했는데, 후에 벨 연구소가 멀틱스 연구를 포기했음에도 상호작용 방식과 협업과 같은 OS에 대한 핵심 아이디어를 버릴 수 없었던 리치는 유닉스라고 불리는 멀틱스의 후속 OS를 연구하기 시작했다. 그는 운영체제인 유닉스가 서로 다른 하드웨어 시스템에서도 구동할 수 있기를 원했다. 그리고 또 다른 유닉스 개발 동기로는 퇴물과도 같았던 피디피(PDP)-7에서 스페이스워 게임을 돌릴 수 있도록 하기 위해서였다고도 한다. 이전까지 프로그램은 범용이 아닌, 특정 장치에서만 작동할 수 있도록 설계되었다. 이 때문에 개발자는 새로운 플랫폼이 등장하면 기존의 프로그램을 해당 플랫폼에서 사용할 수 있도록 만드는 일에 많은 시간을 할애해야 했기 때문이다. 이 작업은 동료였던 켄 톰프슨, 더글라스 매킬로이 등과 함께 진행하게 되었다. 그리고 1969년도부터 시작한 유닉스 개발은 1973년 10월에 운영체제 분야의 최상위 학술대회인 에이씨엠 운영체제 원칙 심포지엄(ACM Symposium on Operating Systems Principles)에서 공개되었다.[1][2][3][4][5]


이 과정에서 여러 기종에서 유닉스를 이식하기 쉽게 하기 위하여, 켄 톰프슨의 BCPL을 바탕으로 만든 언어인 B 언어를 바탕으로 새로운 언어를 만들게 되는데 이것이 바로 C 언어이다. 그렇게 유닉스를 개발하는 과정에서 C 언어가 1971년에 등장하였다. C 언어를 개발한 이후에는 유닉스를 C언어로 다시 제작했다. 유닉스를 다양한 하드웨어에서 사용할 수 있도록 하기 위해서였다. 그리고 1971년 최초의 〈Unix Programmer's Manual〉을 작성했다. 또한, C 언어를 개발한 후 데니스 리치는 브라이언 커니핸과 함께 〈C 프로그래밍 언어〉(The C Programming Language)와〈C 프로그래밍 언어〉책을 썼기에 커니핸이 C 언어 개발에 참여한 것으로 종종 오해받으나 커니핸의 말에 따르면 자신은 C 언어 개발에 참여하지 않았다고 한다. 알트란(ALTRAN), B 언어, 비씨피엘(BCPL), 멀틱스 등의 개발에도 영향을 끼친 것으로도 알려져 있다.[1][6]

데니스 리치가 개발한 유닉스와 C 언어는 컴퓨터 역사에 큰 획을 그었다. 그리고 그는 C 언어에 대해 "C는 유별나고 결함이 있으며, 엄청나게 성공했다."라는 명언을 남기기도 했다.[7] 1983년에 켄 톰프슨과 "범용 운영체제 이론개발, 특히 유닉스 운영체제의 구현에 대한 공로"로 튜링상을 수상했다. 그리고 미국 경제 전문지 비즈니스 인사이더는 '오늘날 애플 컴퓨터가 존재할 수 있었던 것은 데니스 리치와 켄 톰슨이 만든 유닉스 덕분'이라고 평가하기도 했다(Business Insider 참조). 데니스 리치가 없었다면 빌 게이츠와 스티브 잡스도 유명해질 수 없었을 것이라고 생각한다. 데니스 리치는 이런 업적 덕분에 컴퓨터 기술과 관련해서 많은 상을 받는다. 1983년에는 컴퓨터 과학의 노벨상이라고 불리는 '튜링 상'을 받았으며, 1998년에는 미국 정부가 수여 하는 '국립 기술혁신 메달'을 받는다. 이보다 앞선 1997년에는 유닉스와 C 언어를 개발한 공로로 전기 전자 기술자 협회(IEEE)로부터 훈장을 받기도 했으며, 2011년에는 같은 공로로 일본 상(Japan Prize)를 받았다. 이후 그는 여행과 독서를 즐겼지만, 그의 열정은 2007년에 은퇴할 때까지 벨 연구소와 함께 있었다. 그리고 루슨트 테크놀로지스의 시스템 소프트웨어 연구부장 등을 역임하다가 2007년 은퇴하였다.[1][3][8]

데니스 리치는 2011년 10월 12일, 미국 뉴저지 버클리(Berkeley Heights) 자택에서 사망한 채로 발견되어 헤이츠의 만 70세의 나이로 세상을 떠난다. 사망 원인은 전립선 암과 심장병 치료 후 최근 몇 년 동안 혼자 살았던 리치 씨는 건강이 좋지 않았다고 빌 형제가 말했다. 공교롭게도 같은 달인 2011년 10월 6일에 스티브 잡스의 별세로 세상의 이목이 여기에 쏠려있었기 때문에, 아쉽게도 이 천재의 죽음은 많은 이들의 주목을 받지 못했다. 하지만, 오늘날 우리가 사용하는 컴퓨터, 나아가 스마트폰이나 태블릿PC 등은 모두 데니스 리치의 업적을 바탕으로 하고 있다. 그가 개발한 유닉스와 C 언어는 오늘날 여러 개발자를 통해 대를 이어가고 있다.[3][5]

경력

학력 및 경력

  • 1960년 ~ 1967년 : 하버드 대학교, 대학원 물리학, 응용 수학 전공
  • 1967년 ~ 2007년 : 미국 벨 연구소 컴퓨터 연구센터, 미국 루슨트 테크놀러지스 시스템스프트웨어 연구부

약력

  • 1971년 : C 언어 발표
  • 1969년 ~ 1973년 : 유닉스 개발
  • 1973년 : 유닉스 발표
  • 1997년 : 컴퓨터 역사 발물관 펠로우

수상

  • 1983년 : 튜링상 수상
  • 1997년 : 전기 전자 기술자 협회 훈장
  • 1998년 : 미국 국립 기술혁신 메달 수상
  • 2011년 : 일본 국제상 수상

저서

  • 1971년 : 유닉스 프로그래머를 위한 매뉴얼(Unix Programmer's Manual)
  • 1978년 : C 프로그래밍 언어(The C Programming Language), 브라이언 커니핸과 공동 저자
  • 1983년 : C 프로그래밍 매뉴얼(Programmieren in C. ANSI C (2. A.): Mit dem C-Reference Manual)

주요 활동

오픈 소스의 시초

데니스 리치와 켄 톰프슨은 특히나 공동체 지향적인 성향이 강했다. 그래서 자신들이 만든 프로그램에 대해서 어떠한 대가도 바라지 않고 친절하게 수많은 사람들에게 설명을 해주곤 했다. 특히 이들이 영향을 많이 준 그룹은 캘리포니아 버클리 대학의 컴퓨터 과학자들이었는데 켄 톰프슨과 데니스 리치는 1970년대에 서부 연안 유닉스 사용자 모임 등을 통해서 유닉스 코드를 한 줄씩 읽어주면서 직접 설명을 하고, 며칠간 많은 사람들에게 유닉스의 정신을 전파했다. 유닉스는 앞서가는 특정 컴퓨터 회사들에 의해 소유된 독점적인 운영체계가 아니었다는 것과 또 그것이 표준 프로그래밍 언어로 작성되고, 대중적인 많은 아이디어를 받아들였다는 이유로 누구에 의해서도 개선되고 강화될 수 있는 최초의 개방형 표준 운영체계가 되어 현재의 오픈 소스 진영의 기초가 되는 중요한 운영체제이기도 했다. 데니스 리치와 켄 톰슨은 자신들이 만든 유닉스가 많은 사람에게 이용되기를 원했고, 이들의 의지를 이어받아 버클리 대학의 프로그래머들이 많은 개선을 통해 비에스디 유닉스를 탄생시켰고 이들의 생각들은 리처드 스톨만의 자유소프트웨어재단(FSF, Free Software Foundation)과 오픈 소스 운동으로 이어졌다. 결론적으로 여러 회사나 대학 및 개인들에 의해 많은 확장판과 새로운 아이디어들이 다양한 버전의 유닉스에 추가됨으로써, 대형 프리웨어 제품의 한 종류로 진화하였고 현재 최고의 오픈 OS로 유명하며 많은 아이티 산업에 영향을 미치고 있는 리눅스(Linux)의 기원도 여기에서 파생되었다고 알려져 있다.[4]

C 언어

C언어가 세상에 등장한 것은 1971년으로, 사실 유닉스를 개발하는 과정에서 부산물로 태어난 프로그램 언어이다. 켄 톰프슨이 벨 연구소에서 멀틱스 운영체제를 개조하여 유닉스를 만들던 중 기계마다 운영체제를 제작하다시피 하여 만드는 애로사항을 해결하고자 이식성이 좋고, 호환성이 좋은 언어로 제작하여야겠다는 필요성을 가졌다. 이때 데니스 리치가 B 언어를 개조하여 1972년 C 언어를 제작하고, 이를 이용하여 유닉스를 다시 만들게 되었다. C 언어의 문법으로 작성한 코드는 다른 컴퓨터 환경에서도 거의 고치지 않고 그대로 작동하는데요. C 언어는 다양한 어플리케이션뿐만 아니라, 현대적인 대부분 운영체제와 여러 컴퓨팅 기능을 가진 기계들을 동작시키는 가장 기초적인 언어로 수많은 개발자의 사랑을 받았다. 그리고 C 언어의 기본적인 문법을 기초로 하여 현재 가장 인기 있는 프로그래밍 언어들이 탄생하게 되었다. C 언어는 프로그래밍 시 사람이 사용하는 언어와 유사한 부분이 많아서 코드를 작성했을 때 기존의 언어보다 알아보기 쉬웠으며, 코드의 길이도 짧아졌다. 그리고 C 언어는 기존의 A 언어와 B 언어를 개량하여 만들었다. 빠른 처리 속도가 필요한 시스템 제어 분야에 많이 사용한다. 그리고 C가 나올 당시 시점에서 당시 널리 쓰이던 포트란이나 코볼, 베이식과 비교해 보자면, C는 언어 자체에는 아주 기초적인 기능 만을 탑재하여 언어에 기본 탑재되는 명령어를 최소한도로 줄였다는 특징이 있는데 스타트(START)나 엔드(END) 같은 명령어도 배제하고, 대부분을 { } 같은 기호로 표현했기 때문에 코드가 매우 깔끔해 보이고 용량도 줄었다.[9] C언어의 특징으로는 이식성이 뛰어나다. 다른 프로그래밍 언어보다 높은 호환성을 가지고 있고 C언어의 표준 함수로만 작성된 프로그램은 어떤 기종의 컴퓨터에서도 정상적으로 컴파일이 되고 실행될 수 있다. 그리고 저수준과 고수준의 제어가 모두 가능하고 다양한 연산자를 가지고 있기 때문에 원하는 방식대로 다양한 프로그래밍이 가능하다. 또한, 새로운 자료형을 정의하여 사용할 수 있기에 형식이 자유롭고 전처리기를 사용하기에 컴파일 전 사전적으로 확인할 수 있는 기능을 가져 전체적인 흐름 분석에 용이하다. 그리고 비트 조작 등 세밀한 기술이 가능하다는 특징이 있으며, 미니컴퓨터용 운영체제인 유닉스의 대부분은 C언어로 기술되어 있다. 그에 비해 단점으로는 유닉스를 개발하다 태어난 언어이기 때문에 유닉스가 가진 약점을 그대로 가지고 있다. 그리고 자료형 검사 기능이 미약하고 혼합 연산의 경우 연산 우선순위에 따라 자동 계산되므로 우선순위를 모르면 잘못된 계산 결과를 얻을 수 있다.[4][10][11]

유닉스

유닉스(UNIX)

유닉스(Unix)는 대부분의 현대적 컴퓨터 운영 체제의 원형이 된 OS이다. 현대의 윈도우 계열이 아닌 리눅스, 안드로이드, 맥OS, 아이OS 등의 많은 운영 체제가 유닉스를 그 뿌리로 하고 있다. 원래는 멀티유저용 서버 운영체제나 현재는 개인용 데스크톱이나 임베디드용으로도 쓰인다. 1960년대 후반 엠아이티(MIT) 대학과 벨 연구소에서 개발을 시도했던 시분할 운영 체제 멀틱스(Multics)가 그 기원이다. 멀틱스는 여러 사용자를 동시에 지원하고 기능이 많은 우수한 운영체제였으나 많은 실험적 첨단 기능을 가지다 보니 대단히 크고 복잡한 운영체제였고 무엇보다 지이/허니웰(GE/Honeywell)의 비싼 대형 컴퓨터에만 돌아갔다. 그리고 유닉스는 컴퓨터 운영 체제 역사상 가장 중요한 운영 체제라고 할 수 있다. 무엇보다도 운영 체제가 대부분 고급 언어인 C 언어로 쓰여 있었고 소스 코드를 쉽게 구할 수 있어서 다른 컴퓨터 하드웨어나 새로운 기종에 적은 노력으로도 쉽게 이식할 수 있었고 멀티태스킹(Multi-Tasking)과 다중 사용자를 지원하도록 설계되었다. 그래서 그 당시 매우 다양하던 새로운 컴퓨터들의 운영체제로 채용되었고 이를 기반으로 그 이후에 발전된 현대의 컴퓨터의 운영체제는 윈도우 계열을 제외하면 대부분 유닉스의 변종이나 그 자손이라고 볼 수 있다. 유닉스를 기점으로 운영체제 개발의 역사 및 프로그래밍의 역사가 크게 변하게 된다. C언어 자체가 유닉스 시스템 프로그래밍을 하기 위해 만들어졌고 그 결과 "포터블 어셈블리"라고 불릴 정도로 컴팩트하면서도 매우 효율적이고 이식이 쉬운 언어였다. 또 유닉스는 기본으로 바로 프로그램을 할 수 있는 최상의 환경을 제공하였다. 각종 편리한 프로그램 도구가 잘 발달해서 프로그래머들이 개발하기에 가장 편리한 환경으로 발전하였다. 그래서 C언어도 시스템 프로그래밍 언어의 업계 표준이 된다. 현재 스마트폰용 OS도 시장을 양분하다시피 하는 안드로이드(리눅스 기반)와 iOS(BSD 기반)는 모두 유닉스 계열이다. 타이젠(리눅스 기반), 웹OS(리눅스 기반)를 비롯하여, 취소된 프로젝트인 미고(리눅스 기반), Firefox OS(리눅스 기반), 우분투 모바일(리눅스 기반)도 모두 유닉스 계열 커널을 사용한 운영체제이다. 유닉스의 특징으로 사용자에게 명렁어를 입력받기 위해서 유닉스는 셸 프롬프트를 화면에 나타낸다. 프롬프트가 나타난 상태에서 사용자가 명령어를 기술하면 그 명령어는 명령어 해석기(shell)를 통하여 시스템에 전달되고 시스템은 명령어를 처리하여 정상적인 명령인지 오류 명령인지에 대하여 답변해 주면서 동시에 시스템의 고장 원인에 대한 답변도 알려주는 방식으로 사용자가 마치 시스템과 대화하는 것과 같은 방식으로 사용된다. 그리고 멀티태스킹으로 여러 개의 명령어를 동시에 처리할 수 있는 방식이 가능해 하나의 명령어 처리가 완료되지 않은 상태에서 다른 명령어를 처리할 수 있다.[12][13][14]

각주

  1. 1.0 1.1 1.2 데니스 리치 나무 위키 - https://namu.wiki/w/%EB%8D%B0%EB%8B%88%EC%8A%A4%20%EB%A6%AC%EC%B9%98
  2. 멀틱스 나무 위키 - https://namu.wiki/w/%EB%A9%80%ED%8B%B1%EC%8A%A4
  3. 3.0 3.1 3.2 이상우 기자, 〈IT 인물열전 데니스 리치〉, 《IT동아》, 2015-04-23
  4. 4.0 4.1 4.2 에스케이하이닉스 공식 홈페이지 - https://news.skhynix.co.kr/1084
  5. 5.0 5.1 Steve Lohr, 〈Dennis Ritchie, Trailblazer in Digital Era, Dies at 70〉, 《The New York Times》, 2011-10-13
  6. 데니스 리치 위키 백과 - https://ko.wikipedia.org/wiki/%EB%8D%B0%EB%8B%88%EC%8A%A4_%EB%A6%AC%EC%B9%98
  7. KG에듀원, 〈개발자라면 꼭 읽어봐야 할 짧은 인생명언 TOP5〉, 《네이버 블로그》, 2017-09-28
  8. 컴퓨터 역사 박물관 - https://web.archive.org/web/20150103005313/http://www.computerhistory.org/fellowawards/hall/bios/Dennis%2CRitchie/
  9. C언어 나무 위키 - https://namu.wiki/w/C%EC%96%B8%EC%96%B4
  10. luckey, 〈C언어의 유래와 역사〉, 《티스토리》, 2009-03-19
  11. gloss62,〈[강좌 01 C언어 개요]〉,《네이버 카페》, 2009-08-26
  12. 유닉스 나무 위키 - https://namu.wiki/w/%EC%9C%A0%EB%8B%89%EC%8A%A4
  13. NATION OF 6KKKI, 〈1. 유닉스의 개요 - 역사, 특징, 구조〉, 《티스토리》, 2013-02-20
  14. 이화여자대학교 수학과 공식 홈페이지 - http://math.ewha.ac.kr/~jylee/CompMath.html/unix2/ch2.html 유닉스의 특징과 장점 유닉스의 구성과 내부구조

참고 자료

같이 보기

틀:토마글틀:토마글