d라이브러리









계산기에서 생각하고 느끼는 기계로

컴퓨터를 이해하려면 먼저 '컴퓨터는 만능'이라는 환상에서 깨어나야 한다.

마침내 컴퓨터의 활용예를 우리생활 가까이서 발견할 수 있는 시대가 되었다. 멀리는 미국의 챌린저호에서 가까이는 전기나 전화요금 청구서에서 컴퓨터의 힘을 직접 간접으로 느낄 수 있다. 오늘의 컴퓨터 발전과 그 응용추세로 볼 때 아마 21세기 초에는 일상생활 깊숙히 컴퓨터가 침투해들어와 컴퓨터 없는 인간생활이란 상상할 수도 없을 지경에까지 이를 것이다.

이에 대한 당연한 귀결로 "컴퓨터가 인간생활과 사고방식에 어떤 영향(어느 미래학자는 '충격'이라고 표현한다)을 주고 그 대처방안은 무엇인가?"라는 의문이 제기된다. '컴퓨터충격'을 개개인이 무난히 흡수하기 위한 컴퓨터관(view)은 무엇이겠는가?

가장 먼저 버려야할 컴퓨터에 대한 환상은 '컴퓨터는 만능이 아닐까?'라는 생각이다. 이런 느낌을 가지게 하는 예를 들어보면 학력고사 채점과 결과의 정리, 은행의 온라인 예금처리, 전화요금 계산서 등이다. 사람의 손을 빌어서 이런 작업을 처리한다면 짧게는 2~3일 길게는 몇달이 걸릴 일을 컴퓨터는 신속 정확하게 처리결과를 우리에게 제공하는 것이다. 만능이라는 환상을 갖게할 만큼.

앞서 예를 든 작업처리에 대한 특성을 살펴보자. '그 작업을 사람이 처리할수 있느냐?'는 질문을 한다면 물론 '그렇다'이다. 처리해야 할 자료의 양은 어떤가? 매우 많다. 문제에 따라서는 십만, 백만, 심지어는 1억을 넘는 경우도 있다. 그 처리과정의 특징은 어떤가? 처리해야 할 대상이 정해지면 자료내용과는 상관없이 처리과정은 모든 자료에 대해 동일하다. 따라서 같은 처리과정을 자료 갯수만큼 반복하면 된다.

이런 반복작업을 사람이 처리한다면 아무리 주의를 한다하더라도 결국 실수를 저지르게 되고 그래서 최종결과를 믿을 수가 없게 된다. 또한 결과를 빨리 얻기가 힘들다. 그러나 '사람의 명령을 기억할 수 있고 그것을 이해하여 그대로 실행해주는 전자식기계'가 있다면, 기계이기 때문에 실수할 염려도 없고 동일한 작업의 반복처리라는 것도 기계는 인식하지 못하므로 짜증으로 인한 실수도 없을 것이다. 또한 그 처리속도는 전자의 이동속도에 의해 결정되므로 사람보다 무척 빠른 것이다. 이러한 전자식기계가 바로 전자계산기 즉 컴퓨터이다.

능력의 차이가 아니라 특성의 차이

앞에서 들은 몇가지 처리작업의 예들은 사람이 할 수 있는 일을 효율적인 작업처리를 위해 컴퓨터라는 기계의 힘을 이용한 것에 불과하다는 것을 말해준다. 중요한 점은 컴퓨터와 사람의 능력차이 문제가 아니라 처리작업의 특성에 기인한 사람과 컴퓨터의 대조적인 면이라는 사실이다.

앞서 제기한 '컴퓨터는 만능이 아닐까?'라는 의문은 이제 '능력'이라는 개념이 부적당한 것을 알았으므로 그 질문은 다음과 같이 바꾸어야 한다. '컴퓨터는 사람이 할 수 없는 일을 할 수 있을까?' 여기에 대한 현재까지의 대답은 '그렇지 않다'이다. 미래에 가서는 어떻게 될지 모르지만 그 때의 답도 마찬가지일 것이라고 본다. 왜 그럴까?

자의적이거나 타의적이거나 또는 어떤 이유에 의해서나 사람에게 제기된 혹은 제기 가능한 모든 문제의 집합('문' 이라는 집합)과 사람이 풀 수 있는 문제의 집합('풀'이라는 집합)의 포함관계를 그림1과 같이 표시하도록 하자. 이 그림은 굉장히 과장된 것임을 주지해야 한다. 왜냐하면 사람의 지적능력으로 풀 수 있었고 풀 수 있는 그리고 풀릴 가능성이 있는 문제의 범위는 그림과 같이 그렇게 크지 않기 때문이다. 그렇다 하더라도 인간은 예나 지금이나 끊임없이 그 범위를 넓혀가고 있다. 그러한 노력의 결과가 컴퓨터의 출현이다.

사람이 풀 수 있는 문제란 문제의 해결방법(해법, 알고리즘, ALGORITHM)을 사람이 찾아낸 문제들을 말한다. 문제의 답은 해법을 실행하면 나온다. 사람이 풀수 없는 문제, 즉 그림1에서 '풀'집합에는 속하지 않고 '문'집합에 속하는 문제를 컴퓨터가 풀 수 있는가? 그 이유는 앞서 언급한 바 있는 '사람의 명령을 기억할 수 있고 그것을 이해하여 그대로 실행해주는 전자식기계'라는 부분을 음미해보면 자명해진다.

컴퓨터로 어떤 문제를 풀려고 하면 그 문제에 대한 해법을 명령형태로 바꾸어 표현하여 컴퓨터에게 지령해줘야 하는데 우리가 풀 수 없는 문제는 그러한 해법이 존재하지 않으므로 혹은 아직 발견되지 않았으므로 그렇게 명령을 내릴 수 없다. 따라서 컴퓨터는 그 문제를 풀 수 없다.

해법을 컴퓨터가 이해할 수 있는 인공언어를 사용하여 명령문형태로 바꾸어 놓은 것이 프로그램(PROGRAM)이다. 프로그램이 명령문이라는데 주의해야 한다. 기계어를 제외한 거의 모든 컴퓨터 인공언어가 명령문 문법규칙을 채용하고 있는데 이는 주인이 하인에게 어떤 일의 처리를 명령하듯이 사람이 컴퓨터를 사용하자는데 그 이유가 있다. 명령문에서는 주어를 생략하듯이 컴퓨터 인공언어에서도 주어를 생략한다. 생략된 주어는 '너'이고 '너'는 컴퓨터를 지칭한다.
 

<;그림 1>;사람에게 제기된 모든 문제들의 집합('문'집합)과 풀 수 있는 문제들의 집합('풀'집합)의 포함 관계
 

지루한 반복작업을 산뜻이
 

<;그림 2>;y=x²-2 그림표의 모양
 

컴퓨터란 인간이 풀 수 있는 문제 중에서 자료의 양이 엄청나고 그 자료 처리과정이 반복적인 작업에서 만이 사람의 능력을 초월할 수 있는 기계이다. 여기서에 보다 중요한 요소는 '처리과정의 반복'이라는 부분이다. 그래서 이제는 컴퓨터에게 우리가 제공하는 자료의 양은 소량이지만 최종적인 결과가 나올 때까지 반복적인 작업을 굉장히 많이 수행해야 하는 예를 들어보자.

이런 특성을 가진 대표적인 응용분야가 수치계산 분야이다. 중학교 정도의 수학지식이 있는 사람이면 y=x²-2의 그림표를 그림2와 같이 그릴 수 있다. 문제는 우리가 원하는 정확도를 가진 $\sqrt{2}$의 근사값을 구해보자는 것이다. 다시 말해 y=0일 때의 2개의 값 중에서 양의 근을 구하자는 것이다. 나머지 하나는 부호가 반대이므로 한개만 구하면 될 것이다.

그림2에서 x=$\sqrt{2}$근방을 확대하면 그림3과 같이 된다. 그림3을 보면 $\sqrt{2}$의 값은 0보다는 크고 3보다는 작다는 것이 나타난다. 이를 부등식으로 표현하면 0<$\sqrt{2}$<3이다. 원하는 정확도를 만족하는 $\sqrt{2}$의 근사값을 구하는 방식은$\sqrt{2}$를 둘러싸고 있는 x축의 포위망을 점차로 좁혀가는 것이다. 현재의 포위망은 0과 3으로 정해져 있다. 포위망을 좁혀서 a<$\sqrt{2}$<b가 되었다면 a와 b의 값 차이가 정수부분은 물론이고 소숫점 이하 1천번째 자리까지 같다면 $\sqrt{2}$의 값을 소숫점 이하 1천번째 자리까지 정확하게 알아낸 것이다.


문제의 촛점은 여하히 $\sqrt{2}$의 포위망을 좁혀가는가에 있다. 좁혀가는 방법에는 여러가지가 있지만 가장 이해하기 쉬운 해법은 다음과 같다.

그림3을 보면 x=3일 때의 값은 3²-2=7이다. 그리고 x=0일 때의 y값은 0²-2=-2이다. 이 곡선이 가지는 특성은 y값이 음수값을 가지는 영역에서 양수값을 가지는 영역에로 걸쳐있다는 데에 있다. 그래서 x=0일 때의 y값이 음수이고 x=3일때의 y값이 양수이면 0과 3사이에 근이 있다는 것을 안다. 왜냐하면 음의 영역에서 양의 영역에로 바뀔 때 y=0인 지점을 통과해야 하고 y=0인 지점이 바로 구하고자 하는 x값이다.


정리하면 그림3과 같은 그림표에서 주어진 구간 내에 근이 존재하는지에 대한 판단은 구간의 양끝에서 계산한 y값의 부호가 서로 다른가를 확인함으로써 성취한다는 말이다.
 

<;그림 3>;y=x²-2  그림표 중에서 x=$sqrt{2}$ 근방을 확대한 그림표
 

근의 존재 여부 판정은 할 수 있게 되었으니 이제 구간을 좁혀가는 방식을 생각해보자. 주어진 구간을 반으로 나누면 어떨까? 나뉜 2개의 구간 어느쪽에 근이 존재하는지는 앞에서 이야기한 근의 존재여부 판정방법에 의하면 되고 어느 부분에도 존재하지 않으면 2부분으로 나눈 그 점이 바로 근이다.

이러한 해법을 그림3에 적용하면 그림4와 같은 결과를 얻는다. 즉 1.5=(0+3)÷2이고 x=1.5일 때의 y값은 y=x²―2에 대입하여 0.25=1.5²―2이다. 그림을 보면 0과 1.5사이에 근이 있는 것을 알 수 있지만 이러한 사실은 x=1.5일 때의 y값 0.25와 x=0일 때의 y값―2가 서로 부호가 다르기에 확인될 수 있는 것이다.

이제 구간이 0<$\sqrt{2}$<3에서 0<$\sqrt{2}$<1.5로 포위망이 줄어들었다. 동일한 해법을 구간 0<$\sqrt{2}$<1.5에 대해 수행하면 얼마든지 우리가 원하는 $\sqrt{2}$의 근사값을 구해 낼 수 있다. 이 해법을 컴퓨터 명령어로 표현하여 컴퓨터에게 지령하면 컴퓨터는 우리가 원하는 정확도를 만족하는 $\sqrt{2}$의 근사값을 계산해낸다.
 

<;그림 4>; 그림3에서의 x구간을 반으로 나누었을 때의 상태


컴퓨터 연구는 인간연구

지금까지의 내용에서 컴퓨터가 가진 한계와 그 기본원리를 대강 알아보았으므로 이제부터는 화제를, 사람이 컴퓨터에 친숙해지려면 어떤 문제를 해결해야 하는지를 알아보자.

선결해야 할 문제중의 하나는 언어이다. 가장 이상적인 경우는 사람이 구사하는 자연언어를 컴퓨터가 이해하고 사람의 명령과 질문에 대한 답을 자연언어로 표현해주는 것이다. 이렇게 된다면 거의 모든 사람들이 별 어려움없이, 사람과 대화 하듯이, 컴퓨터를 이용할 수 있게 될 것이다. 이를 '자연어 처리'라고 한다.

컴퓨터에 명령을 내리기 위해 사용하는 지금까지의 언어를 '인공언어'라고 하는데 예를 들면 베이직, 포트란, 코볼, 파스칼 등이 있다. 인공언어가 사람이 구사하는 자연언어와 비슷한 점이 많지만 사람이 이런 언어를 구사하여 컴퓨터에 명령을 내리려고 한다면, 어떤 표현을 컴퓨터가 어떻게 이해하는 가를 정확히 알아야 한다는 점과 그 표현이 컴퓨터가 이해할 수 있도록 충분히 '초등적'이어야 한다는 점 때문에 아직까지 대부분의 사람들이 컴퓨터와 친숙해지지 못하고 있다. 초등적이어야 하는 이유는 대부분의 컴퓨터가 아직 지적인 능력이 없기 때문이다.

컴퓨터에 지적능력을 이식시키기 위한 연구의 일환으로 '자연어 처리'분야가 대두되게 되었고 이러한 모든 연구작업을 통칭 '인공지능'(AI, Artificial Intelligence)에 대한 연구라고 한다. 인공지능에 대한 연구가 활발히 진행되고 그 중간결과가 속속 발표되고 있으므로 컴퓨터가 장래에는 더욱 인간과 가까와질 것이라는 확신을 가질 수 있다. 그렇지만 인간과 같이 지적인 능력과 감성적인 능력 둘다 구비하고 있는 어떤 새로운 존재를 창조해 낼 수 있을까? 이에 답하기 위해서는 "사람이 자기자신이 가지고 있는 감성의 논리를 완전히 파악할 수 있는가?"에 먼저 답할 수 있어야 한다. 아마 '인공지능'보다 '인공감성'이 더욱 어려운 문제임이 분명하다.

보다 뚜렷해지는 사실은 컴퓨터를 1차 연구대상으로 하는 전산과학은 궁극적으로는 인간을 대상으로 하는 과학이며 인간을 탐구하는 과학이라는 것이다.

이 기사의 내용이 궁금하신가요?

기사 전문을 보시려면500(500원)이 필요합니다.

1986년 04월 과학동아 정보

  • 배재학

🎓️ 진로 추천

  • 컴퓨터공학
  • 소프트웨어공학
  • 정보·통신공학
이 기사를 읽은 분이 본
다른 인기기사는?