d라이브러리









신기루처럼 보이는 컴퓨터를 어떻게 정복할 것인가? '갤러그'게임의 비밀, 로보트의 걸음마를 통해 컴퓨터의 작동원리를 살펴보자.

 

인간과 컴퓨터


'스타워즈'를 보면 귀여운 C-3 PO, R2-D2 등의 로보트가 사람들과 말을 주고 받으며 종종 걸음으로 제각기 맡은 일을 해낸다. 사람들은 이것을 보며 미래에는 인간과 로보트를 어떻게 구분할 수 있을까 의아해 한다. 그러나 '스타워즈'에 나오는 그러한 움직이며 지능을 지닌 컴퓨터는 아직 만들어지지 않았다. 실은 '스타워즈'의 로보트 속에는 실제 인간이 들어가 있었다는 이 사실이 알려지지 않기를 바랬다. 그것은 그 영화를 보며 초롱한 눈망울을 빛내던 꼬마들의 아름다운 꿈을 산산조각 깨어버리는 짓이 될지도 모르기 때문이다.
 

오랜 기간 동안 사람들은 컴퓨터를 '전자두뇌'라는 별명으로 불러왔다. 그러나 인간과 컴퓨터를 섣불리 비교한다는 것은 인간의 존엄성을 낮추는 무모한 일이 될 수도 있다. 어떤 사람은 "영리한 컴퓨터는 위험한 것이 아니고 인류 미래의 희망이다. 그러므로 컴퓨터에 지능을 부여하기를 원한다"고 주장한다. 다른 사람은 "컴퓨터에 지능을 갖게 한다는 것이 어디로, 어떻게 흘러갈지도 모르니까, 지능을 부여하려는 노력을 아예 그만두는 것이 낫다"고 경고한다. 이러한 딜레마를 해결하기 위해서는 인간과 컴퓨터의 차이와 컴퓨터의 가능성과 한계를 알아야 한다.
 

우선 인간과 컴퓨터의 차이가 무엇인가를 분명히 하여, 신기루처럼 보이는 컴퓨터를 알아보기로 하자. 컴퓨터는 교묘하게 제작되어 감미로운 선율이 울려나오는 바이올린에 비유할 수 있다. 아직 컴퓨터는 인간을 웃고, 울리며 가슴 가득히 감동을 주는 '파가니니'와 같은 연주자의 능력을 스스로 가질 수 없다. 바이올린이 훌륭한 악기라면 컴퓨터는 훌륭한 기계다. 그리고 컴퓨터는 기계이기에 그것에 힘을 불어 넣어 준 창조주인 인간들─컴퓨터를 만든 사람, 프로그래머, 운영자─에 의존하고 있다. 컴퓨터는 인간에게 많은 유용한 일을 할 수 있도록 프로그램되어 있으며, 보다 더 보람되고 즐거운 일을 도울 수 있도록 만들어져있다. 그러나 컴퓨터를 어떻게 다루는가를 모르면 그것이 우리와는 인연이 먼 기계이고, 때로는 우리에게 열등감만 안겨주는 밉살스러운 존재가 된다.
 

인간은 약 1백억 개의 뇌세포를 가지고 있으며, 기억의 총 용량은 ${10}^{8}$∼${10}^{15}$ bit (정보량의 최소 단위, binary digit의 약자, 8bit로 문자 하나를 표시함)이다. 인간은 오관을 통해 상황에 따라 변화하는 복잡한 자극의 형태를 식별한다. 또 다양한 경험을 토대로 스스로 결정을 하고, 한가지 방법이 실패할 경우에는 다른 방법을 선택하고 원칙을 적용하여 다양한 문제를 해결하며 주관적으로 사고하고 평가할 수 있다. 반면 컴퓨터는 초대형의 경우에도 2×${10}^{10}$ bit정도의 기억 용량을 초과하지 못하고 있다. 컴퓨터는 입력된 정보를 신속하게 대량으로 처리한다. 또 명시된 프로그램에 따라, 반복적인 작업을 신뢰성 있게 수행하며, 오랜 시간에 걸쳐서 작업을 수행할 수 있다.
 

컴퓨터가 입력을 알아내고 일을 할 때 그것은 마술도 아니며, 스스로 생각하여 어떤 일을 하는 것도 아니다. 그것은 단지 인간이 만든대로, 즉 프로그램에 따라 움직이고 있는 것이다. 그러므로 컴퓨터로 어떤 일을 하고자 할 때는 컴퓨터가 더 효율적으로 수행할 수 있는 일─대량의 자료처리, 반복적인 작업, 손으로 풀 수 없는 복잡한 계산 등─을 시켰을 때 더욱 큰 효과를 얻을 수 있다.

 

컴퓨터와의 대화
 

<;표1>; 소프트웨어 분류표


창세기에 "흙으로 사람을 빚고 생기를 그 코에 불어 넣으니 사람이 되었다"고 하듯이 인간이 컴퓨터를 만들고 거기에 소프트웨어(프로그램의 집합)를 집어 넣으니 그것은 훌륭한 기계가 되었다.

컴퓨터와 인간이 어떻게 대화할 수 있을까? 사람들은 서로 대화하기 위해서 언어를 사용한다. 마찬가지로 일의 내용을 컴퓨터가 알아 듣게 하려면 컴퓨터가 알아 듣는 언어를 사용해야 한다. 그래서 사람들은 컴퓨터에 기계어, 번역기, 컴퓨터언어와 운영체제 등의 소프트웨어를 넣어 인간과의 대화를 가능하게 하였다.(표 1)


컴퓨터가 직접 이해할 수 있는 언어는 기계어이다. 그러나 컴퓨터에 따라 각기 사용되는 기계어가 다르며, 기계어는 0과 1의 조합으로 된 언어이므로 인간이 사용하기에는 매우 불편하다. 그래서 이러한 불편을 덜기 위해 기계어 대신 영어, 숫자 등의 문자를 이용하여 기계어에 일대일 대응하는 어셈블리(Assembly) 언어가 만들어졌다. 그러나 컴퓨터는 기계어 밖에 모르므로 통역이 필요하게 되었고 이때 통역관 노릇을 하는 것이 곧 어셈블러(Assembler)이다.
 

그러나 어셈블리 언어도 전문가가 아닌 일반인이 사용하기에는 너무 어려웠다. 그래서 보통의 언어나 수학에서 사용되는 대수를 이용하여 사람들이 사용하기에 편리한 언어를 만든 것이 코볼(COBOL ; COmmon Business Oriented Language의 약자), 포트란(FORTRAN ; FORmular TRANslator의 약자), PASCAL, PL/I등의 고급어였다. 이때 고급어를 다시 기계가 알 수 있도록 기계어로 번역해 주는 프로그램을 컴파일러(Compiler)라고 한다.
 

퍼스널 컴퓨터에서 많이 이용되는 베이직(BASIC ; Beginner's All purpose Scientific Instruction Code의 약자) 언어는 초보자들을 위해서 쉽게 만들어졌고, 대화형식으로 프로그램을 수행할 수 있어 편리하며, 프로그램이 잘못되었을 때도 수정이 쉽다. 이때 베이직 언어를 번역과 동시에 작업을 수행해주는 것을 인터프리터(Interpreter)라고 한다.
 

그런데 컴퓨터 언어를 처음으로 배우려는 사람이 위에서 열거한 컴퓨터 언어를 모두 공부해야 할 필요는 없다. 컴퓨터 언어를 모두 공부해야 할 사람은 컴퓨터 언어를 전공하는 사람이나, 거기에 특별한 흥미가 있는 사람이어야 할 것이다. 세계 여러나라의 모든 언어를 다 알지 못해도 영어 하나만 좀 할 줄 알아도 세계 여행을 떠날 수 있다. 그러므로 이 모든 언어를 익힌 다음 컴퓨터와 비로소 대화를 시작하려는 사람은 어리석은 사람이다. 요즈음은 퍼스날 컴퓨터가 많이 보급되어 있어 가까이에서 접할 기회가 많으므로 평이하며 많이 쓰이는 베이직 언어로부터 시작해 보는 것이 쉽게 컴퓨터 언어를 배우는 하나의 길이 것이다.
 

눈,코,입,귀,손발이 없는 컴퓨터가 우리가 만든 프로그램(일의 내용을 컴퓨터가 알아 듣는 언어로 표현한 것)을 알 수 있을까? 컴퓨터에게 생명을 가지게 한 가장 중요한 프로그램들이 바로 운영체제(Operating Systems)이다. 이것은 입력장치를 가동시켜서 프로그램을 읽는 것 부터 시작하여, 입력된 프로그램을 기억장치에 옮기고 적당한 번역기를 불러 들이는 등 사용자 프로그램이 움직이는데 필요한 여러 가지 일을 해 주는 프로그램의 집단이다.
 

운영체제는 큰 프로그램이기 때문에 이것을 전부 컴퓨터에 적재하면 사용자가 쓸수 있는 부분이 적어지게 된다. 또 운영체제 내의 일부의 프로그램은 빈번히 사용되지 않기 때문에 이것을 전부 컴퓨터의 기억 장치에 넣어 두면 기억장치의 낭비가 된다. 따라서 운영체제 중에서 반드시 필요하고 많이 사용되는 부분 외에는 디스크(Disk) 속에 보관해 두었다가 필요하면 불러 쓰게 된다. 이러한 방식의 운영체제를 디스크 운영체제(DOS ; Disk Operating System).이라고 하며, 애플 컴퓨터나 IBM의 퍼스널 컴퓨터가 이러한 운영체제를 가지고 있는 것을 알 수 있을 것이다.
 

이제 우리가 컴퓨터와 대화를 할 모든 준비가 되었다. 컴퓨터를 움직이게 하기 위해서는 운영체제에서 사용되는 명령어와 컴퓨터 언어를 익히면 되는 것이다. 예를 들면 키보드를 통해 프로그램을 입력한 다음, 그것을 보관(예를 들면 'SAVE'라고 명령함)하고, 작업을 수행(예를 들면 'RUN'으로 명령함)하면 프로그램이 제대로 만들어져 있었다면 CRT(음극선관: Cathode Ray Tube의 약자)나 프린터 등으로 결과가 나올 것이다.

 

신기루의 정복을 위한 무기─컴퓨터 프로그래밍
 

 

(그림1) 로보트의 이동방향


길을 가다 보면 전자오락실에서 '갤러그'에 열중하여 버튼을 열심히 두들겨 대며 외계에서 날아온 비행기를 격파하기에 열중하는 사람들을 볼 수 있다. 누구나 한번 쯤 지나쳐 보며 저런 게임은 어떻게 만들어져 있을까 하고 의문을 가지게 된다. 해답은 간단하다. 전자오락 게임은 기계적인 조작이 아니라 인간이 만든 프로그램에 따라 움직인다는 것이다. 비행기가 날아오고 미사일이 발사되고 격파되는 이 모든 것이 동시에 일어나는 것처럼 보이는 게임을 만약 슬로우비디오로 아주 느리게 보면 비행기가 한칸 움직이고 그 다음에 버턴을 누르면 미사일이 한 칸 나아가고 다시 비행기가 한칸움직이고 미사일이 다시 한칸 나아가고, 이런식으로 비행기와 미사일이 움직인다. 결국 비행기와 미사일이 마주치면 비행기는 격파되며 폭발음이 '꽝'하고 나오며 그렇지 않으면 다시 미사일은 비행기를 비켜서 한칸씩 움직여 화면의 다른 곳으로 움직여 가버린다. 그런데 이런 게임 프로그램은 모두 기계어로 번역된 다음 간단한 컴퓨터의 일종인 전자오락기 속에 내장되어 굉장히 빠른 속도로 수행되므로 우리가 보기에는 모든 것이 동시에 일어나는 듯한 착각에 빠지게 되고 게임을 하는 아이는 전자오락의 황홀경 속으로 묻혀 버리는 것이다.
 

컴퓨터 프로그램을 어떻게 만드는가를 간단한 로보트의 동작을 예를 들어 알아보자. (그림 1)에서 보는 것처럼 로보트를 앞으로 나아가게 한 다음 벽 앞으로 오른 쪽으로 돌려 다시 앞으로 계속 나아가도록 한다. 그리고는 문 앞에 서게 하고 싶다. 이것을 어떻게 프로그램 할 수 있을까? 프로그램에 앞서 이것을 다시 정리하면 우리는 로보트로 하여금 다음과 같은 일을 시키고 싶은 것이다.


단계 1/벽으로 나아간다.

단계 2/벽에 닿았는가?

   아니면 단계 1을 계속한다.

   맞으면 단계 3으로 간다.

단계 3/90˚오른쪽으로 돈다.

단계 4/문쪽으로 간다.

단계 5/문인가?

   아니면 단계 4를 계속한다.

   맞으면 단계 6으로 간다.

단계 6/멈추어 선다.
 

이러한 처리 순서를 흐름도(Flow Chart)로 나타내면 (그림 2)와 같다. 이와 같이 단계나 흐름도로 정리할 수 있다면 프로그램은 이미 끝난 것과 다름 없다. 프로그램이란 위의 절차를 컴퓨터 언어로 옮겨 적은 것에 불과하다. 아직 컴퓨터 언어에 익숙하지 않은 사람을 위해 컴퓨터 언어와 비슷한 형태로 아래와 같이 적을 수 있다.
 

1  ADVANCE ONE STEP

2  IF  NOT WALL GO TO 1

  OTHERWISE GO TO 3

3  TURN RIGHT 90˚

4  ADVANCE ONE STEP

5  IF NOT DOOR GO TO 4

  OTHERWISE GO TO 6

6  STOP

 

이제 신비스럽게만 보이던 로보트의 동작도 컴퓨터의 프로그래밍도 조금은 이해할 수 있을 것이다. 누구라도 컴퓨터에게 명령할 수 있고, 일을 시킬 수 있다는 것을 깨달아야 한다. 새로운 시작은 항상 너무 늦은 것이 아니다.
 

(그림2) 흐름도


꿈과 바램


무엇을 해야 할 것인가? 컴퓨터를 다루는 일은 실천이 필요한 것이지 관망하는 것이 아니다. 전진하는 길은 뛰어드는 길이다. 밖에서 팔짱을 끼고 우두커니 바라보고 있다는 것은 상대적으로 뒤쳐지고 있다는 것이다. 컴퓨터 분야는 하루가 다르게 발전하고 있다. 이러한 변화를 멈추게 할 수는 없다. 우리가 할 수 있는 것은 어떻게 변화의 방향을 감지하고, 그것을 바른 방향으로 나아가게 할까 하는 것이다.
 

컴퓨터에 가장 빨리 익숙하게 되는 것은 직접 접해 보는 것이다. 컴퓨터가 있는 곳에서는 키보드를 한번 살짝 두들겨 본다. 그리고 컴퓨터가 어떻게 반응하는가를 보라. 혹시 사무실에 퍼스널 컴퓨터라도 있다면 워드프로세서(문서편집기)의 사용법 부터 배워서 문서도 작성해 보고 편지도 써 보며 컴퓨터와 친해져 보자. 그러면 컴퓨터는 저 멀리 있는 아름다운 신기루가 아닌 인간이 만든 가장 유용한 기계 중의 하나라는 것을 알 수 있을 것이다.
 

어떤 사람은 컴퓨터 앞에 앉아 겨우 게임이나 즐기고 있다. 다른 사람들은 훌륭한 프로그램을 만들어 다른 이들에게 많은 도움을 주고 있으며 자신도 그것을 통하여 자기성취를 이루어 나간다. 이제 우리 모두가 그런 사람이 되어야 한다.
 

한편 많은 사람들이 컴퓨터의 한계와 가능성을 알고 그것을 제대로 다룰 수 있을때 인간은 컴퓨터에 의해 조작되는 것이 아니라, 컴퓨터를 이용하여 세상을 바꾸며 새로운 가능성의 문을 활짝 열 수 있을 것이다. 그러나 예기치 않은 방향으로 컴퓨터가 발전할 가능성에 대해서도 항상 주의와 관심을 가져야 한다. 컴퓨터가 사람들의 프라이버시를 침해하거나 인간의 감시용으로 악용되는 그런 방향의 발전(이런 현상은 전제적인 국가에서 언제나 일어날 수 있다)을 사전에 막아야 할 것이다. 결국 컴퓨터가 모든 생활 속에서 함께 할 우리의 미래가 어떻게 전개될 것인가는 우리들의 꿈과 그 꿈을 실현하고자 하는 노력에 달린 것이며 우리가 어떠한 삶을 추구하며 그 삶을 위해 우리 자신을 어떻게 준비해가느냐에 달려있다고 하겠다.

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

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

1986년 03월 과학동아 정보

  • 김연민

🎓️ 진로 추천

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