[책과 길] 컴퓨터, 언어로 쌓아올린 ‘마음의 도구’ 기사의 사진
컴퓨터는 디지털 논리회로를 블록처럼 쌓아 올려 만든다. 컴퓨터의 모든 부품은 디지털 논리회로라는 것으로 구현 가능하다. 모든 디지털 논리회로는 ‘그리고(and)’, ‘또는(or)’, ‘아닌(not)’이라는 연산자로 조립된다. 이 연산자들은 모두 스위치로 구현 가능하다. 이렇게 만들어진 디지털 논리회로들이 부품이 되어 속 내용을 감추며 차곡차곡 쌓아 조립된 것이 최종적으로 컴퓨터가 되는 것이다. 일러스트 이승언
우리는 컴퓨터로 둘러싸인 세상을 살아간다. 컴퓨터는 개인의 삶은 물론 사회를 구성하는 핵심 기계라고 할 수 있다. 컴퓨터로 구성된 세계의 시민인 당신께 묻는다. 컴퓨터가 뭔가?

“컴퓨터는 ‘마음의 도구’이고 그 도구를 다루는 방법은 물리적인 근육이 아니라 언어다. 언어로 작성된 텍스트를 컴퓨터의 메모리에 실으면 컴퓨터는 그 텍스트가 표현한 할 일을 해간다.”

이런 설명은 어떤가? 쉽지만 너무 헐렁한 게 아니냐고 할 수 있겠다. 설명을 추가해보자.

“인류가 지식을 표현하는 방법은 도구에 맞춰 발전한다. 인류의 지식 표현 방법은 컴퓨터 이전까지는 크게 두 가지였다. 서술형이거나 방정식형이다. 문과식 혹은 이과식이다. 컴퓨터는 지식 표현 방법을 새롭게 하나 추가시켰다. 계산형 지식 표현 방식이다.”

한 가지 질문을 더 해보자. 소프트웨어는 뭔가?

“사람은 소프트웨어를 만들고, 컴퓨터는 소프트웨어를 실행한다. 컴퓨터라는 도구를 다루는 방법은 소프트웨어이고, 소프트웨어는 사람의 지혜를 통과하면서 짜여진다.”

그럼 소프트웨어는 어떻게 만드는가?

“일하는 방도는 알고리즘에 대한 탐구고, 표현하는 방식은 언어에 대한 탐구다. 어떤 알고리즘으로 소프트웨어가 일을 하도록 해야 좋은지, 어떤 언어로 소프트웨어를 표현하는 게 좋은지… 이 두 줄기에서 다듬어진 기둥이 소프트웨어 세계의 기초를 이룬다.”

‘컴퓨터과학이 여는 세계’는 컴퓨터과학이라는 이 시대 지배적인 과학을 대중의 언어로 번역해 소개한다. 저자는 이 분야에서 비전공자들이 이해할 수 있는 경계를 알고, 그 경계 안에서 컴퓨터과학을 펼쳐놓는다. 책은 모든 것을 다 설명하려고 하지 않는다. 컴퓨터과학을 구성하는 핵심 아이디어들에 집중한다. 이것을 통해 컴퓨터과학의 구조와 얼개를 보여준다.

어려운 문제를 풀 때, 알고리즘으로 통밥(맞을 듯한 직관)과 무작위, 불가능 등을 사용한다는 얘기는 컴퓨터과학이 결국은 인간의 논리에서 크게 벗어나지 않는다는 걸 알게 한다.

“컴퓨터로 불가능한 문제들은 당연히 있다… 몇 개가 아니라 무수히 많다… 그러나 좌절 말자. 컴퓨터로 불가능한 문제들도 통밥과 무작위로 희롱하면 적당한 답을 낼 수 있다. 불가능은 ‘모든 입력’에 대해 ‘정확한 답’을 내는 알고리즘을 고집했을 때다. 그런데 그 고집을 풀면 컴퓨터로 풀 수 있다. ‘모든 입력’을 ‘흔한 입력’으로, ‘정답’을 ‘적당한 답’으로 하고 알고리즘을 찾아 나선다면.”

암호기술의 아이러니를 설명한 대목도 흥미롭다. “암호기술은 모두 현재의 컴퓨터 한계에 기대고 있다. 디지털 암호기술은 모두 현재의 디지털 컴퓨터로 쉽게 풀 방도를 알 수 없는 계산 문제에 기대고 있다.” 이런 문제들을 찾아낸 건 수학자들이다. “수학자들은 풀리지 않는다는 사실에만 매혹되어 수백 년간 문제들에 매달렸다. 그런 문제를 풀면 당장 어디에 쓰일지는 안중에도 없이 소비했던 무수한 땀. 아무리 해도 풀리지 않았다는 역사만 만든 시간들. 그 ‘헛된’ 시간 덕분에 우리는 지금 그런 문제를 유용하게 사용할 수 있게 되었다.”

어려운 얘기를 쉽게 전달하는 것은 모든 저술가들의 목표이기도 한데, 이 책은 그 점에서 매우 성공적이다. 쉬운 단어를 골라 사용하고 간결한 문장으로 이어가면서도 우아함을 포기하지 않는다. 한국문학 작품들 속의 익숙한 문장들을 인용한 점도 친근함을 준다. 무엇보다 그동안 컴퓨터과학을 대중의 언어로 풀어쓴 시도 자체가 극히 희귀했던 게 사실이다.

저자인 이광근(50) 서울대 컴퓨터공학부 교수는 “서울대 비전공 학생들을 대상으로 한 교양과목 강의록을 바탕으로 책을 만들었다”면서 “컴퓨터 세계의 근본이 궁금할 때 누구나 펼쳐 볼 수 있는 과학 교양서적”이라고 소개했다.

이 교수는 독자들에게 시종일관 겁먹지 말라고 말하는 듯 하다. 컴퓨터과학을 구성하는 아이디어들이란 게 결국은 논리이며, 컴퓨터는 레고 블록 같은 것이고, 프로그램을 짠다는 것은 어떤 명제를 증명하는 과정과 같다고 설명한다.

그는 특히 “컴퓨터 분야는 이미 모든 게 이루어진 성숙한 분야가 아니다”며 “탄생 이후 이제 겨우 70여년”이라는 점을 환기시킨다. 이미 온 길보다 앞으로 가야 할 길이 훨씬 더 멀다는 것이다. 그러면서도 “확실한 것은 컴퓨터 분야의 성과를 통해서 인간의 지능, 본능, 현실은 나날이 확장될 것”이라고 본다. 여기서 그는 근본을 이해하는 일에 대해 말한다.

“미래에 나타날 많은 것을 손쉽게 커버하는 방법은 원리에 집중하는 것이다. 근본을 꿰뚫는 시각을 튼튼히 할수록 다양한 응용들의 한계와 가능성을 손쉽게 파악할 수 있고, 남들이 미처 보지 못하는 곳을 볼 수 있기 때문이다.”

왜 우리가 컴퓨터과학을 알아야 하느냐고 묻는 이들에게 주는 대답이다.

김남중 기자 njkim@kmib.co.kr

트위터페이스북구글플러스