2007년 9월 13일 목요일

[본문스크랩] 현대 컴퓨팅의 아버지, 앨런 튜링

현대 컴퓨팅의 아버지, 앨런 튜링
박지훈
2005/03/23
앨런 튜링
(1911~1954)
앨런 튜링은 책상 위에서 매일 접하는 현대 컴퓨터의 수학적 모델을 제시한 선지자이다.

“기계는 생각할 수 있는가?”라는 화두를 던져 수많은 과학자와 작가들을 고민하게 만든 천재. 독일군이 만든 악명 높은 에니그마(Enigma) 암호를 해킹해 연합군이 2차 대전을 승리하게끔 도운 숨은 영웅. 그러나 그는 독이 든 사과를 먹고 자살했다. 컴퓨팅 분야의 노벨상이라 불리는 ‘앨런 튜링 상(Alan Turing Prize)’은 12년 후 세상에 나타난다.

현 시대의 컴퓨터를 만능에 가까운 기계라고 주장해도 반박할 꺼리가 많지 않다. 개인용 컴퓨터에서도 못하는 일이 거의 없다. 웹 브라우저를 통해 전세계의 정보를 가져올 수 있고 마이크로소프트가 만든 오피스(Office)와 같은 사무용 소프트웨어를 사용하여 기본적인 수학 계산, 워드 프로세싱을 수행할 수 있다. 브라우징용 컴퓨터, 사무용 컴퓨터가 별도로 필요하지 않다.

한 컴퓨터에서 상상할 수 없는 다양한 일들을 수행할 수 있는 것은 여러 종류의 프로그램들을 컴퓨터 내부의 메모리에서 읽고 중앙처리장치(CPU)가 해석하며 실행하기 때문이다.

하지만 컴퓨터의 실체가 존재하지 않았던 20세기 초반, 대부분의 사람들은 특정한 일이나 계산을 자동으로 수행하는 기계를 만들려면 매번 그에 맞는 새로운 기계들이 필요하다고 생각했다. 그리고 그들을 동작시키려면 기계 외부의 스위치나 버튼, 선, 천공카드 등을 조작하여 기계에게 명령을 내려야 한다고 가정하였다.

1930년대, 겨우 20대였던 앨런 튜링은 현대 컴퓨터와 프로그램이 동작하는 원리가 설명된 추상적인 수학 모델을 세상에 내놓았다. 바로 ‘튜링 머신(Turing Machine)’이다. 그 결과 존 폰 노이만을 비롯한 과학자들은 수많은 계산 방식을 자동으로 수행하는 디지털 컴퓨터의 핵심에 접근하게 된다.
 
“그는 수학자였다”
앨런 튜링은 영국의 식민지였던 인도에서 영국인 부모를 두고 1911년에 태어났다. 영국과 인도를 수차례 오가며 학창 생활을 보냈던 튜링은 캠브리지 대학의 킹스 칼리지(King’s College)에 입학한 후 저명한 수학자인 하디 밑에서 수리 논리학 연구를 하였다.

그의 나이 25세인 1936년에 ‘계산 가능한 수에 관한 연구(On Computable Numbers, with an Application to the Entscheidungsproblem)’라는 논문을 발표하여 ‘튜링 머신’이라는 가상 기계를 세상에 소개한다(참조페이지). 그 후 미국의 프린스턴 대학으로 유학을 가서 기존의 튜링 머신을 보강한 하이퍼계산(hypercomputation)을 연구한 논문으로 박사 학위를 받는다.

앨런 튜링은 자동화된 디지털 컴퓨터를 목표로 연구한 것은 아니다. 그는 수학자였으므로 자신의 가설을 수학적으로 증명하는데 매진하였다. 튜링 머신 또한 단지 계산 가능한 함수(computable function)를 정의하기 위한 수단으로서 고안해낸 것이다. 하지만 그 여파는 대단하여 지금까지도 컴퓨터 산업에 큰 영향을 미치고 있다.

튜링 머신, 현대 디지털 컴퓨터의 추상적 모델
튜링 머신은 알고리즘을 수학적이고 기계적인 절차들로 분해하여 동작할 수 있는 컴퓨터의 실행과 저장에 관한 추상적인 모델이다. 튜링 머신은 애초에 무엇이 계산되어질 수 있는지에 대한 범위를 규정하기 위해 정의되었다. 튜링 머신을 소개한 논문을 한마디로 요약하면 이렇다. “만약 튜링 머신에 의해 계산될 수 있으면 그 함수는 계산 가능하다.” 튜링 머신의 실행이 중간에 멈추지 않고 끝까지 실행되는 경우를 계산 가능하다고 정의한 것이다.

<그림 1>에서 보다시피, 튜링 머신 그 자체는 실제 기계가 아니라 수학 원리로 구성된 가상 기계이다. 튜링 머신의 동작을 이해하면 튜링의 업적과 현대 컴퓨터에 끼치는 영향력을 온전히 느낄 수 있다.

<그림 1> 튜링 머신의 구조

튜링 머신은 <그림 1>에서 보다시피 다음과 같은 4가지 요소로 구성된다.

[1] 테이프(tape) : 사각형의 셀들이 일렬로 나열되어 있다. 각 셀들 안에는 한정된 심볼(숫자나 문자)이 들어간다. 테이프의 길이는 무한정이다.

[2] 헤드(head) : 테이프에 있는 셀 안에 있는 심볼을 읽고 쓰며 좌우로 이동하는 장치이다.

[3] 상태 레지스터(state register) : 튜링 머신의 현재 상태의 값(심볼)을 저장하는 공간으로서 값들은 한정되어 있다.

[4] 액션 테이블(action table) : 튜링 머신에게 셀을 읽고 쓰며 헤드를 좌우로 이동하고 상태를 변경하게 하는 명령어들의 집합이다. 보통(현재 상태, 현재 심볼, 새로운 상태, 새로운 심볼, 왼쪽/오른쪽 이동)들로 표현된다. 각 명령어들의 해석 방법은 이렇다. 만약 상태 레지스터에 있는 값이 ‘현재 상태’ 값이고 헤드가 ‘현재 심볼’을 읽었다면 상태 레지스터의 값을 ‘새로운 상태’ 값으로 변경하고 ‘현재 심볼’ 값을 ‘새로운 심볼’ 값으로 바꾼 다음에 왼쪽 또는 오른쪽으로 이동한다. 만약 상태 레지스터와 헤드가 읽는 값에 대응되는 명령어가 액션 테이블에 없다면 수행을 멈춘다.

예를 들어 테이프 위의 숫자들을 테이프 오른쪽에 0을 사이에 두고 복사하는 튜링 머신을 구성해보자. 즉 테이프에 11이 있다면 11011로 만드는 것이다(0은 빈 셀을 의미한다). 현재 테이프에 11이라는 두개의 심볼이 나열되어 있고 헤드는 제일 왼쪽의 1에 있다고 가정한다. 상태 레지스터에 저장될 수 있는 상태 값은 {s1, s2, s3, s4, s5} 중에 하나이며 초기 값은 s1이다. 이것을 위한 액션 테이블은 다음과 같다.

<표 1> 액션 테이블

<표 1>의 맨 위에 있는 명령인 (S1, 1, S2, 0, R)은 현재 상태 레지스터의 값이 S1이고 헤드가 읽은 값이 1이면, 상태 레지스터의 값을 S2로 변경하고 현재 헤드가 가리키는 셀의 값을 0으로 변경한 후 R(오른쪽)로 헤드를 이동하라는 뜻이다. 나머지 명령어들도 동일하게 해석할 수 있다.

주의할 것은 위에서 아래 순서대로 차례로 명령어가 실행되는 것이 아니라 상태 레지스터와 헤드가 가리키는 값에 대응되는 액션 테이블의 명령이 실행된다는 것이다. 그러면 액션 테이블의 명령대로 테이프에 어떤 변화가 생기는지 단계적으로 살펴보자(굵은 심볼이 현재 헤드가 있는 셀이다).

<표 2> 튜링 머신 실행 과정

튜링 머신이 15개의 단계를 거쳐서 11이란 값을 복사하여 11011로 만든 후 멈췄다. 보다시피 액션 테이블의 명령어들로 쪼개어 나눌 수 있는 어떤 종류의 계산이나 처리, 예를 들어 사칙연산 외에 미적분까지도 튜링 머신을 구성하여 결과 값을 얻어 낼 수 있다.

튜링 머신을 프로그램으로 구현한 이들의 도움으로 실행 과정을 면밀히 관찰할 수 있다. 인터넷 상에서 자바 애플릿으로 구현된 튜링 머신 사이트(www.igs.net/~tril/tm/tm.html)를 방문해보자.

<화면 1> 튜링 머신 시뮬레이터

<화면 1>에서 위쪽의 버튼들은 튜링 머신을 제어하는 역할을 하며 그 밑에 길게 나열된 사각형들로 구성된 집합은 테이프이다. 사각형의 테두리가 짙은 곳은 현재 헤드가 있는 셀이다. ‘Load new Program’ 버튼은 액션 테이블의 종류를 선택하는 것인데 뺄셈 기능을 수행하는 ‘Subtractor’라는 메뉴를 선택해보자. 그러면 왼쪽 아래에 ‘Programming’이라는 필드에 액션 테이블의 내용이 나타날 것이다.

그 곳의 처음 명령어인 (1,_ 1,_,>)를 해석하면 현재 상태가 1인데 만약 현재 헤드가 읽은 값이 _(빈 셀)이면 상태와 현재 셀의 값을 그대로 놔두고 헤드를 오른쪽(>)으로 이동하라는 뜻이다(<표 1>의 명령어 형식을 참고하라). 즉 뺄셈 기능을 수행하는 튜링 머신으로 셋업하는 것이다.

테이프를 ‘111111-1111=’이란 심볼로 초기화하자. 그 다음 ‘Start’라는 버튼을 누르면 Programming 필드에 있는 명령대로 헤드가 이동하면서 테이프의 값들이 변화되는 과정을 튜링 머신 동작이 끝날 때까지 볼 수 있다. 반면 ‘step’ 버튼을 누르면 명령어 각각이 수행되는 과정을 볼 수 있다.

표준 튜링 머신과 유니버설 튜링 머신
<그림 1>에 설명한 튜링 머신은 표준 튜링 머신(Standard Turing Machine:STM)으로서 액션 테이블과 상태 레지스터가 고정되고 불변하기 때문에 새로운 계산 때마다 다른 튜링 머신이 필요한 단점이 있다. 이런 한계를 극복하기 위해 모든 튜링 머신들이 동작할 수 있는 범용 튜링 머신 UTM(Universal Turing Machine)이 존재한다고 주장하였다.

UTM은 테이프에 액션 테이블과 상태 정보까지도 저장된다. 따라서 액션 테이블과 상태 정보를 재 프로그래밍할 수 있으므로 임의의 모든 계산들을 수행할 수 있게 된다. 엄밀히 말하면 STM은 현대의 프로그램, UTM은 프로그램이 동작하는 컴퓨터의 모델인 셈이다. 보통 튜링 머신을 언급할 때, STM과 UTM을 명시적으로 구별하지 않는다면 UTM을 지칭하는 경우가 일반적이다.

튜링 머신의 진정한 가치
현명한 독자들은 <그림 1>과 <화면 1>을 보면서 튜링 머신이 현대의 컴퓨터를 모델링하는 것을 알아챘을 것이다. <화면 1>에서 뺄셈 기능을 수행하는 액션 테이블은 <표 3>이다. 유심히 보자.

<표 3> 뺄셈 튜링 머신의 액션 테이블

<표 3>을 보면 마치 어셈블리 언어를 보는 것 같지 않는가? 현대의 관점에서 튜링 머신의 ‘테이프’는 데이터들의 메모리, ‘액션 테이블’은 그 데이터를 조작하는 프로그램의 명령어들로 볼 수 있다. 현대의 컴퓨터는 튜링 머신을 구현한 자동화된 기계로서, 0과 1로 이루어진 이진 데이터를 메모리에 저장하고 프로그램의 명령을 중앙처리장치에서 해석함으로서 여러 종류의 계산을 위해 새로운 기계를 만들 필요가 없는 ‘범용 전자 기계’이다.

프로그램(program)은 심볼들을 이용해 기계에게 명령을 내리는 의미 있는 심볼들의 집합체이며, 프로그래밍이란 프로그램을 만드는 과정이다. 프로그램 언어(program language)는 프로그램을 만들기 위한 심볼들의 의미와 관계를 규정한 것이며, <표 3>과 같이 원시적인 형태는 일반인이 작성하기 힘들기 때문에 사람의 언어와 유사하게 발전돼온 것이 바로 프로그래밍 언어의 역사이다.

앨런 튜링의 위대한 점을 요약하면 프로그래밍이 가능한 컴퓨터의 수학적 원리를 제시함과 동시에 ‘테이프’에 있는 데이터와 액션 테이블의 명령어들이 같은 형식의 심볼들(숫자와 문자들)로 구성되었다는 것이다. 즉 데이터와 프로그램을 동일한 방식으로 저장하고 처리할 수 있는 길이 열린 것이다.

<화면 2> 에드박
앨런 튜링의 아이디어는 존 폰노이만에 의해 결실이 맺어진다. 앨런 튜링이 프린스턴 대학에서 박사 학위를 받을 동안, 지도교수였던 노이만은 튜링 머신의 아이디어에 관심이 많았으며 앨런 튜링에게 공동으로 연구를 진행하자고 제의하였다.

하지만 튜링은 요청을 거절하고 박사 학위를 받은 후 영국으로 돌아갔다. 그 후 1951년, 노이만은 앨런 튜링의 튜링 머신의 원리를 구현한 프로그램 내장 방식(stored program)의 디지털 컴퓨터인 <화면 2>의 애드박(EDVAC)을 개발하여 현대 컴퓨터의 원형을 만들었다(노이만이 튜링 머신에 관심이 있었다는 것은 사실이나 그 아이디어를 직접 인용하여 컴퓨터를 개발한 것인지는 확실치 않다,참조페이지).

에드박은 10진법이 아닌 2진법을 사용했으며 프로그램 내장 방식의 최초의 컴퓨터이다. 프로그램 내장 방식이란 프로그램을 기억장치에 저장해두고 명령을 순서대로 중앙처리장치가 해석하며 실행하는 것을 의미하며 하드웨어는 중앙처리장치와 메모리가 구별된다.

튜링 머신의 ‘테이프’와 ‘액션 테이블’이 각각 데이터와 프로그램의 형태로 컴퓨터 메모리 안에 동시에 저장되어 처리되는 것이다. 현대 대부분의 컴퓨터들은 노이만 방식의 컴퓨터 아키텍처를 채택하고 있다.

에드박은 최초의 컴퓨터로 알려져 있는 <화면 3>의 애니악(ENIAC)과 근본적으로 달랐다. 애니악은 2차 세계 대전 중에 포탄의 방향을 예측하기 위한 목적으로 개발된 ‘하드웨어 계산기’이다. 범용성이 부족하여 다른 목적의 계산을 하려면 큰 불편이 따랐다.

애니악은 소프트웨어가 없이 새로운 계산을 수행할 때마다 사람들이 복잡한 전선들을 손으로 연결하여 계산을 위한 회로를 만들어야 했다. 즉 손으로 전선을 이어가는 그 행위가 프로그래밍이며 특정 계산을 위해 완성된 전선들의 구조가 바로 프로그램이었던 셈이다.

<표 2><화면 3> 애니악 DoD copyright


“앨런 튜링은 최초의 해커이다”
앨런 튜링은 프린스턴 대에서 박사 학위를 받은 후 영국 캠브리지 대학으로 돌아온다. 영국군은 독일군의 무적 암호 체계인 에니그마(Enigma)를 깨트리기 위해 자국의 유명 과학자들을 소집하였는데 튜링은 그 중의 한명이었다. 암호를 해킹하기 위한 수학적 해결책과 물리적인 장치를 개발하는데 공헌하였다. 1943년 12월, 튜링은 콜로서스(Colossus)라는 세계 최초의 전기로 동작하는 연산 컴퓨터를 만들어 내어 독일군의 암호를 해독해 낸다.

이것은 2천 4백 개의 진공관을 이용해 만들어졌으며 높이만 3m에 이르는 거대한 덩치를 지니고 있었다. 극도의 보안 정책 때문에 1970년대에 그 사실이 알려졌는데 콜로서스는 미국의 애니악보다 2년이나 빠른 것이었다. 하지만 엄격한 보안 때문에 후대의 컴퓨터 발전에 영향을 미치지는 못했다. 튜링의 결정적인 도움으로 독일군의 암호를 해독한 연합군은 2차 대전의 승기를 잡는다.

튜링 테스트, 기계와 지능의 서곡
기계는 인간과 같은 지능을 가질 수 있을까? 어떤 경우에 기계가 인간의 지능을 가졌다고 봐야 하는가? 이와 같은 질문과 답을 제시한 선구자가 앨런 튜링이다. 튜링은 말년인 1950년대, ‘컴퓨팅 기계와 지능(Computing machinery and intelligence)’이라는 논문을 발표하면서 인공지능의 판단 기준을 제시하는데 그것이 바로 튜링 테스트(Turing Test)이다(튜링 머신과 튜링 테스트는 다르다,참조페이지).

튜링 테스트에는 세 주체가 참여한다. 인간과 기계, 심판관이다. 심판관은 인간과 기계를 시각적으로 구별하지 못하도록 분리되어 있다. <그림 2>처럼 심판관은 키보드와 터미널만으로 인간과 기계와 채팅을 하면서 어떤 이가 인간인지, 기계인지 분별해야 한다.

<그림 2> 튜링 테스트(Copyright B.J. Copeland, May 2000 인용)

만약 심판관이 그 둘을 확실히 구별하지 못한다면 그 기계는 튜링 테스트를 통과한 것이다. 물론 인간과 기계는 최대한 인간인 것처럼 보이기 위해 노력해야 하며 대화는 소리가 아닌 텍스트 채팅만을 한다. 이렇게 튜링 테스트를 통과한 기계는 인간의 지능을 가졌다고 튜링은 주장하였다.

이 테스트는 인공지능에 대한 사회적, 학문적 관심을 유도하였으며, “우리가 원하는 것은 경험으로부터 배울 수 있는 기계이다. 그들은 자기 스스로 내재된 명령들을 변경하며 동작해야 한다”라는 인공지능(Artificial Intelligence) 학문의 출발점으로 발전하게 된다.

1991년도부터 뉴욕의 비즈니스맨인 허프 뢰브너는 매년 ‘뢰브너 상’을 수상한다. 튜링 테스트를 통과한 컴퓨터 프로그램 작성자에게 10만달러를 상금으로 시상하며, 해마다 경쟁에 참여한 인공지능 프로그램들 중 가장 인간에 가까운 프로그램을 골라 2000달러를 수여한다(참조페이지).

alice.pandorabots.com 사이트에 가면 동상을 수상했던 앨리스(A.L.I.C.E)란 프로그램과 <그림 5>처럼 대화를 나눌 수 있다(참조페이지). 독자들은 마치 튜링 테스트의 심판관이 된 느낌을 받을 것이다.

<화면 4> 앨리스와의 대화
 
하지만 지금까지 튜링 테스트를 통과한 프로그램은 유감스럽게 없다.

비극적인 죽음
튜링은 동성애자였다. 1952년, 자신의 동성애 파트너가 자신의 집에 도둑질 한 것을 경찰에 신고하면서 그가 동애자라는 사실이 외부에 알려지게 되었다. 동성애자를 혐오하는 사회적 분위기 속에서 경찰의 감시를 받게 되고 동성애성을 감소시킨다는 에스트로겐 호르몬을 강제로 투여 받는다. 약물 부작용으로 가슴이 여성처럼 부풀어 오르는 수모를 당하면서 2차 대전의 영웅이자 현대 컴퓨팅 모델의 창시자인 그는 결국 독이 든 사과를 베고 자살한다. 그때가 1954년이다.

그의 죽음 후 세계적인 컴퓨터 관련 학회인 ACM(Association For Computer Machinery)은 컴퓨팅 분야에 지대하게 공헌한 사람에게 컴퓨팅 분야의 노벨상인 튜링상을 시상한다.@

* 이 기사는 ZDNet Korea의 제휴매체인 마이크로소프트웨어에 게재된 내용입니다.

애플의 로고와 앨런 튜링의 독이 든 사과
많은 이들이 한 입 베어 먹은 사과 모양의 애플 로고를 보고 앨런 튜링이 자살했을 때 먹은 독이 든 사과를 흉내낸 것이라고 주장한다. 애플은 그 주장을 공식적으로 부인하였다. 진실 여부를 놓고 현재까지 논쟁 중에 있지만 진실의 추는 애플에 기운 것 같다(?).


필자소개
중앙대 대학원에 재학중인 박지훈씨는 소프트웨어 개발자들과 조직들이 인터넷을 적극적으로 이용해 효율적으로 능력을 향상시킬 수 있는 방법론과 수단에 대해 관심이 많다. 그리고 국제적인 소프트웨어 프로세스 심사 및 개선 표준들(SPICE, CMM)과 자연스럽게 연동하며 네트워크와 커뮤니티, 협동에 근거한 효과적인 소프트웨어 개발 모델과 방법론, 유연한 툴의 개발을 연구 목표로 삼고 있다.

출처 : http://www.zdnet.co.kr/news/column/hotissue/0,39024748,39134724,00.htm

댓글 없음:

댓글 쓰기