2010년 9월 15일 수요일

01. The Big Picture

튜링의 모든 것



















최초의 지능 컴퓨터 설계자, 앨런 튜링




1. 그가 남긴 흔적








              1-1 애플과 튜링


 서구의 시각이지만 '인류문명의 3대 사과'라는 게 있다. 인간의 원죄를 표상하는 이브의 사과, 호머의 일리아스를 낳은 파리스의 사과, 만유인력을 발견한 뉴턴의 사과다. 이 반열에 오를 사과가 또 있다. '컴퓨터 과학의 아버지'로 불리는 천재 수학자 앨런 튜링의 '독사과'가 바로 그

것이다.
 1912년 런던에서 태어나 명문 킹스칼리지와 미국 프린스턴대 대학원에서 수학했다. 27세 때 현대 컴퓨터의 모델이라는 '튜링 머신'을 고안했고 1943년 연산컴퓨터 '콜로서스'를 만들었다. 이는 세계 최초의 컴퓨터라고 하는 미국의 '에니악'보다 2년 앞선 것이다. 2차 대전 중에는 영국 암호부대 브레츨리 파크에 들어가 독일 암호체계 '에니그마'를 해독, 연합국 승리에 숨은 공신으로 꼽히기도 한다. 독일의 최신예 전함 비스마르크호의 격침이나 노르망디 상륙작전에서 독일군의 교신을 연합국이 먼저 해독할 수 있었던 것도 그의 공로였다. 그러나 1952년 동성애 혐의로 체포돼 '화학적 거세'를 당한다. 이 치욕을 견디지 못한 그는 1954년 오늘 청산가리를 주입한 사과를 베어 무는 것으로 삶을 마감했다. 사과를 한입 베어 먹은 모양의 애플사 로고는 그에 대한 경의 표시라는 얘기가 있다.




1-2 그가 남긴 튜링 머신


 튜링은 1936년 발표한 논문에서 추상적인 기계(이론상의 계산기계)를 정의하였는데, 이 기계는 유한상태의 기계로서 테이프를 가지고 있고, 테이프에는 부호를 기록하여 이를 다시 읽을 수 있으며, 또 이 부호를 변경할 수도 있고, 테이프를 앞뒤로 움직일 수도 있는 간단한 기계이다. 따라서 다음의 입력은 다른 장소에 오게 된다. 그러므로 이 기계는 초보적인 외부기억장치와 각 상태에 따른 내부기억능력을 보유하고 있다.
이 기계가 할 수 있는 일은 지극히 제한되어 있으나, 상당히 복잡한 계산을 할 수 있다. 튜링기계의 종류는 다양하며, 이 중에 다른 어떤 기계의 조작도 흉내낼 수 있는 기계가 존재한다. 컴퓨터 자체가 유한의 기억장치를 가지고 있으며, 이러한 무한기계를 연구하는 이유는 우선 유한상태의 기계에서도 기억장치가 현실적으로 커지고 있다. 따라서 새로운 일을 하려면 점차적으로 이를 확장해야 한다.
그러므로 우선 튜링기계가 무한정의 테이프를 가지고 있다고 생각하지 않고, 유한하다고 생각한 후에 테이프가 모자라면 추가한다고 생각하면 실제의 경우와 부합하게 된다. 이러한 생각이 현재의 컴퓨터와 이론적인 기초를 생각한 것으로 평가되고 있으며, 그 이론은 컴퓨터나 로봇의 설계 등에 큰 도움을 주고 있다.





2. 그가 만든 튜링머신에 관하여 




2-1 튜링머신이란?


정의를 내려보면 아래와 같다.
튜링 기계 M은 다음과 같이 정의된다.
M = (Q, Σ, Γ, δ, q0, □, F)
여기서
Q 는 내부 상태들의 집합이다.
Σ 는 입력 알파벳이다.
Γ 는 테이프 알파벳이라 불리는 심볼들의 유한 집합이다.
δ 는 전이 함수이다.
□ ∈ Γ 는 공백 (blank) 이라 불리는 특별한 심볼이다.
q0 ∈ Q 는 초기 상태이다.
F ⊆ Q 는 종료 상태들의 집합이다.
튜링 기계의 정의에서, Σ ⊆ Γ - {□} 임을 가정한다. , 입력 알파벳은 공백 심볼을 포함하지 않는 테이프 알파벳의 부분집합이다. 앞으로 곧 명백해질 이유 때문에 공백 심볼들은 입력에서 제외한다. 전이 함수는 다음과 같이 정의된다.
δ : Q × Γ → Q × Γ × {L, R}
일반적으로, δ Q × Γ 에 대한 부분 함수 (partial function) 이다. 이에 대한 해석은 튜링 기계가 작동하는 원칙을 제시한다. δ 의 인수들은 제어 유닛의 현재 상태와 현재 읽혀지는 테이프 심볼이다. 그 결과는 제어 유닛의 새로운 상태, 전에 있던 심볼을 교체하는 새로운 테이프 심볼과 이동 심볼 (move symbol) L 또는 R 이다. 이동 심볼은 테이프에 새로운 심볼이 쓰여진 후 읽기-쓰기 헤드가 왼쪽 또는 오른쪽으로 이동하는지를 나타낸다.





2-2 튜링머신과 디지털 기기의 차이


  튜링머신과 디지털 컴퓨터의 공통점과 차이점을 알아보기 위해 튜닝머신과 디지털 컴퓨터의 정의에 대해 알아보았다.
튜링머신 이란 실제 기계가 아닌 추상적인 수학 개념의 오토마타이었다. 튜링기계는 임시 저장장소가 테이프인 오토마타이다. 이 테이프는 셀들로 나뉘어 있고, 각 셀은 한 개의 심볼을 저장할 수 있다. 이 테이프와 관련해서 읽기-쓰기 헤드가 있다. 이 읽기-쓰기 헤드는 테이프에서 왼쪽 또는 오른쪽으로 움직일 수 있고 각 이동마다 하나의 심볼을 읽고 쓸 수 있다.우리는 튜링 기계를 오히려 간단한 컴퓨터로 생각할 수 있다. 간단한 컴퓨터는 유한한 메모리를 갖는 처리 유닛을 가지고 있고, 테이프에, 무제한 양의 보조 저장장소를 가지고 있다. 그런 컴퓨터가 수행할 수 있는 명령어들은 극히 제한되어 있다. 이러한 작은 명령어들의 집합은 복잡한 일을 하기에 적절하지 않은 것처럼 보이나, 그러나 그렇지 않다. 튜링 기계는 원칙적으로 아주 강력하다. 
 디지털 컴퓨터란 디지털 데이터로 연산을 하거나 논리 수행을 하는 컴퓨터를 말한다. 불연속적인 자료를 처리할 수 있으며, 이용 범위가 매우 높다. 어떤 문제에 관련된 모든 양과 변수들을 표현하는데 이산형의 숫자를 사용하는 컴퓨터로서, 일시적인 전기의 흐름으로 숫자를 표시한다. 연속적인 자료를 처리하는 아날로그컴퓨터와는 달리 불연속적인 자료의 조합에 의해 정보를 처리하며, 직렬 동작에 의한 연산 기능뿐만 아니라 정보처리 기능을 가지므로 이용 범위가 매우 넓다. 이 컴퓨터에서는 다루는 수치의 자릿수를 증가시키면 시킬수록 그 정확도를 높일 수 있다.
 먼저 튜링머신과 디지털 컴퓨터의 명확한 차이점은 튜링 머신은 컴퓨터의 작동 방법을 수학적으로 고안했다는 데에 있다. 그렇다면 튜링 기계가, 어떤 의미로 전형적인 디지털 컴퓨터와 비슷한 점을 가질 수 있을까? 첫 번째로 기계가 읽을 수 있는 언어 라는 점이다. 튜링머신과 디지털 컴퓨터 모두 기계가 읽을 수 있는데 이러한 것은 프로그래밍 언어의 구조를 문맥 자유 언어로 제한함으로써 확보할 수 있다. 기계뿐만이 아니라 두 언어 모두 사람이 읽을 수 있는 언어를 가지고 있다. 또한 두 가지 모두 이산적인 형태의 자료를 취하여 계산하게 된다.






3. 튜링과 컴퓨터 과목의 연관성


   컴퓨터교육과인 우리과에서는 계산이론이라는 과목에서 튜링머신에 대하여 자세하게 다루게 된다고 한다. 처음 과제를 하며 튜링과 계산이론의 연관성을 찾게 되었고 그에 흥미를 가져 자세하게 알아 볼 수 있는 계기가 마련되었다. 그렇다면 계산이론 이란 무엇일까?
 계산이론이란 컴퓨터 과학의 한 갈래로, 어떤 문제를 컴퓨터로 풀 수 있는지, 또 얼마나 효율적으로 풀 수 있는지를 탐구한다. 특히 이 문제를 다룰 때 튜링머신을 쓰게 되는데, 이를 개발한 앨런튜링 덕에 컴퓨터로 가능한 계산을 좀더 효율적으로 다룰 수 있기 시작한 것이다. 이주고 있다. 이 튜링머신은 어떤 알고리즘도 이 기계로 실행 가능하다는 것을 보여주며, 이 기계는 내부 기억능력을 보유하고 있기 때문에 이 이론을 기초로 하여 알고리즘, 언어, 데이터베이스의 이론등을 포함하는 컴퓨터 과학이 탄생하게 된 시초를 만든 것이다. 또한 이를 기반으로 인공지능이 탄생하였다.



1번 출처 - 네이버
나머지 출처 -

컴퓨터과학개론

00. 컴퓨터과학개론의 각 단원과 컴퓨터교육과 수업 사이의 연관성 찾아보기

Chapter 1. Bic Picture

컴퓨터과학에 대해서 배우게 될 개요와도 같은 것이다. 컴퓨터와 관련된 기본적인 정보를 실음으로써 흥미를 부르고 컴퓨터에 대한 전반적인 내용과 앞으로 배우게 될 내용을 암시하는 도입부 인 것 같다. 전반적인 전공과 연관되어 있을 것이다.


Chapter 2. Binary Values and number systems

컴퓨터의 시스템은 기본적으로 2진법을 사용한다. 0과 1을 통해 신호를 주고 받는데, 이러한 컴퓨터의 가장 기본적인 의사소통법이라고도 할 수 있는 Binary system을 다룸으로써 컴퓨터는 어떻게 작동될까 하는 근본적인 질문에 대한 실마리가 될 수 있는 단원이 될 것이라 생각한다.
프로그래밍 언어를 다루는 전공과목이라면 모두 이 내용이 기본이 될 것이다.


Chapter 3. Data representation

Data를 표현하는 방법에 대하여 다룬다. 실생활에서도 Data를 표현할 수 있는 방법엔 여러가지가 있다. 일반 생활에서 정해놓은 Data의 구분과 정의를 컴퓨터 또한 어떻게 분류하는가 그리고 어떤 종류가 있는 가를 배울 것 같다.
이 또한 C나 JAVA와 같은 내용의 기본이 될 것이다.


Chapter 4. Gates and Circuits

Gate와 Circuits은 컴퓨터를 이루는 부품들에 관한 내용인 것 같다. 컴퓨터의 소프트웨어적인 측면이라기보다는 하드웨어적 측면에서 컴퓨터의 구성요소는 무엇이고 그것의 가장 기본이 되는 것은 어떤 것인지에 관한 정보를 얻을 수 있을 것이다.
컴퓨터 구조나 논리설계 과목에서 나올 것이다.

Chapter 5. Computing componets

말 그대로 계산하는 것에 관한 것이다. 컴퓨터는 기본적으로 연산을 수행함으로써 프로그램을 작동시킨다. 그때 그 연산에는 어떤 종류가 있고 어떻게 작동하는지 그리고 어떤 방법이 있는지에 관하여 대략적으로 언급할 것이다.
모든 전공과목의 바탕으로 알고 가는 내용일 것이다.

Chapter 6. Low-level programming languages and pseudocode

흔히 인간들의 언어를 고급언어라 칭하고 컴퓨터 언어를 저급 언어라 칭한다. 따라서 이 단원은 컴퓨터가 사용하는 저급언어 즉 컴퓨터의 언어를 배우는 것이라 생각한다. 또한 수도코드가 나와있는데 이는 컴퓨터 프로그래밍을 할때 그 단계를 간략히 알아보기 쉽게 적어 놓은 것으로 이단원에서는 컴퓨터 언어와 수도코드를 사용하는 프로그래밍의 가장 기초적인 방법을 배울 것이라 생각한다.
C나 JAVA 그리고 Data structures에서 컴퓨터 프로그램 작성에서 나올 것 이다.


Chapter 7. Problem solving and algorithms

6단원에서 컴퓨터프로그래밍을 하는 기본적인 방법을 배운 후에 더 심화된 프로그래밍을 하기 위해 그 문제를 풀고 구성하는 방법을 배우는 것이다. 어떤 한 문제를 프로그램할때의 문제를 푸는 절차와 그 문제를 풀기 위해 필요한 알고리즘을 작성하는 방법들을 배울 것이다.
C나 JAVA에서 컴퓨터 프로그램작성의 마지막 단계에서 응용 될 것 같다. 또한 알고리즘 수업에도 등장 할 것이다.


Chatper 8. Abstract data types and subprograms

컴퓨터 data를 더욱 효율적으로 사용하기 위해 더욱 고차원적으로 개발된 컴퓨터 Data의 단계이다. 체계적인 프로그램 작성을 가능하게하여 이러한 것을 이용함으로써 사람이 컴퓨터 프로그램을 더욱 알아보기 쉽고 다루기 쉽게 만드는데 필요할 것이다.
모든 전공 특히 컴퓨터 언어를 다루는 것에서 가장 저변이 되는 내용이다.


Chapter 9. Object-oriented design and high level programming languages

객체지향이란 크고 긴 컴퓨터프로그램을 더욱더 효율적으로 그리고 비소비적으로 만들기 위해
고안한 것이다. 중요한 부분들을 모아 코드의 낭비를 막을 수 있고 결국 이러한 디자인을 함으로써 고급언어에 점점 가까워지게 되는 것이다. 좀더 효율적인 컴퓨터 프로그램을 작성하는 것을 가능하게 한다.
이 또한 프로그래밍에 있어서 베이스가 되지만 특히 JAVA에서 객체지향을 많이 강조하여 그 과목과 연관이 있을 것이다.


Chapter 10. Operating systems

컴퓨터를 가동시키는 운영체제에 관해 배우는 것 같다. 컴퓨터가 작동하려면 기본적으로 기능을 수행할 수 있는 어떤 프로그램이 필요한데 그것이 바로 OS이다. 이것은 하드웨어와 소프트웨어를 제어하여 인간이 컴퓨터를 사용할 수 있게 하는 것이다. 따라서 기본적인 컴퓨터 사용에 있어서 가장 필요한 요소이다.
유닉스, 리눅스를 배우는 전공과목과 그리고 오퍼레이팅시스템과 관련되어 있다.


Chapter 11. File systems and directories

기본적으로 파일시스템이나 디렉토리는 운영체제에서 파일을 관리하기 위해 사용되는 것으로 이러한 것들은 운영체제인 리눅스에서 사용되는 개념으로 리눅스 시스템 프로그래밍이나 유닉스의 이해와 같은 전공 내용에서 등장할 것이다.


Chatpter 12. Information systems

데이터를 저장하는 방법과 관리하는 방법에 관한 내용이다.얼마나 효율적으로 정보를 처리할 수 있느냐에 관한 것으로  따라서 데이타 베이스와 관련된 내용을 다룰 것 같다.


Chapter 13. Artificial intelligence

사람이 프로그램하는 것이 아니라 컴퓨터 스스로 작동할 수 있는 인공지능에 관한 내용을 다룬다. 전공과목중 인공지능과 연관이 될 것이다.


Chapter 14. Simulation, graphics, gaming, and other applications

컴퓨터 프로그램 후에 그것을 시각적으로 볼 수 있는 방법이 필요하다. 그러한 방법과 컴퓨터로 할 수 있는 여러가지 응용프로그램에 관하여 알 수 있을 것이다. 컴퓨터 그래픽스, 게임프로그래밍 처럼  여러 응용 프로그램을 다룬 전공선택 과목과 연관이 깊을 것 같다.


Chapter 15. Networks
네트워크는 컴퓨터 한대 가 아니라 여러대의 교류를 가능하게 해주는 것으로 이를 통해 현재와 같은 발달이 가능해 졌다고도 할 수 있다. 특히 인터넷의 기반이 되는 네트워크 기술은 앞으로 컴퓨터 네트워크와 관련한 전공 과목에 기본 지식을 제공할 수 있을 것이다.


Chapter 16. The world wide web
www는 인터넷 관련 용어를 지칭하는 것이다. 그리고 컴퓨터 네트워크의 모습을 말하기도 하는데 이렇게 광범위한 웹의 모습을 현재 컴퓨터의 활용 범위와 모습을 나타내 주고있다. 이 또한 네트워크 관련 전공에 도움이 될 것이다.


Chapter 17. Limitations of computing

computer가 다룰 수 있는 문제는 무엇이고 다를 수 없는 무엇인지에 관하여 다룰 것이고 만약 다룰 수 없는 문제가 없다면 이를 위해 앞으로 어떻게 컴퓨터가 발전해야 하는 지에 대한 비전을 제시해 두었을 것이다. 결국 모든 컴퓨터과학의 최종 과제를 제시한 부분이 아닌가 싶다.