그것이 알고 싶다 - 전자계산학
그것이 알고 싶다 - 전자계산학
  • 박성우 / 컴공 교수
  • 승인 2009.05.20 11:31
  • 댓글 0
이 기사를 공유합니다

계산적 사고방식을 주무기로 하는 창조의 학문

 (이 글에서 ‘전산학’은 ‘전자계산학’의 약어이며, 그 범위에서 ‘컴퓨터공학’을 포함한다고 해석해도 됩니다.) 전산학이 무엇인가라는 질문을 받았을 때 ‘전산학=프로그래밍’이라는 등식을 떠올리는 독자들이 있을 것이다. 전산학을 전공하기 위해서는 프로그래밍에 능숙해야 하고, 프로그래밍에 소질이 없으면 전산학 전공은 잘못된 선택이라고 생각할 수도 있다. 사실 프로그래밍을 배우면서 흥미를 느껴 전산학 전공을 결심하는 학생들이 많고, 전산학을 전공하면 프로그래밍 과목을 먼저 이수하기 때문에 일반인의 관점에서 ‘전산학=프로그래밍’이라는 등식은 크게 잘못된 것이라고 볼 수도 없다.
전산학의 본질은 과연 프로그래밍일까? 전산학을 전공하는 사람들에게 물어보면 대부분 아니라고 말할 것이다. 이런 질문에 흔히 네덜란드의 전산학자 Dijkstra가 말한 “전산학에서 프로그래밍은 천문학에서 망원경과 같다”라는 문구를 인용한다. 천문학에서 망원경이 중요하지만 망원경 자체의 연구가 본질이 아니듯이, 전산학에서 프로그래밍이 중요하지만 프로그래밍 자체가 연구의 본질이 아니라는 뜻이다. 그러나 전산학을 전공하는 사람들도 ‘전산학=?’라는 등식에는 간결하고 명쾌한 답을 선뜻 제시하지 못할 수도 있다. 전산학의 본질이 프로그래밍이 아니라면 무엇이 전산학의 본질일까?
이 문제에 대한 필자의 의견을 제시하기 전에 우선 다른 학문의 본질은 어떻게 정의될 수 있는지를 자연과학과 공학을 예로써 살펴보자. 자연과학과 공학 제반 분야는 전공자가 아니면 이해하기 어려운 깊이가 있기 때문에 필자의 의견은 지극히 상식적인 수준에서 도출된 것임을 알린다.
자연과학에 대해서는 ‘자연과학=관찰’이라는 등식을 둘 수 있다. 물리학에서 만유인력의 법칙은 사과나무에서 사과가 땅으로 떨어지는 것을 관찰한 뉴턴이 이 관찰 결과를 설명하고자 노력하면서 찾아낸 법칙이다. 멘델은 완두콩의 잎 색깔이 특정 비율로 나타나는 것을 관찰한 뒤 이를 토대로 멘델의 법칙을 찾아냈다. 이렇게 자연과학은 관찰에서 시작한 뒤 이론을 정립하여 관찰 결과를 설명하고 검증하는 과정이 본질이라고 볼 수 있다. 관찰결과를 설명해내는 이론을 정립하고 재현을 통해 검증해냈을 때 연구의 결실이 이루어지는 것이다. 자연과학 분야의 학술지에는 아무도 설명하지 못하던 관찰 결과를 새로운 이론이나 가설로 설명해내는 논문이 환영받는다.
공학에 대해서는 ‘공학=최적화’라는 등식이 성립한다. 즉 정답이 없는 문제에 대해서 최적화된 답을 찾아내는 것이 공학의 본질이다. 예를 들어 공학의 결집체라고 하는 비행기는 하늘을 난다는 정답이 없는 문제에 대한 하나의 답일 뿐이다. 하늘을 날기 위해서 굳이 새처럼 날개 운동을 이용할 필요는 없으며, 양력을 이용한 비행기가 현실적인 최적의 해결책으로 인정받고 있다. 물론 비행기도 하나의 해결책일 뿐이며, 향후 공학기술이 발전하여 더 나은 수송 수단이 등장할 수도 있다. 기계공학건축공학전자공학컴퓨터공학생명공학금융공학 등 공학이라는 단어가 들어간 학문 분야는 예외 없이 정답이 없는 문제에 대해서 최적화된 해결책을 찾는 방법론을 다루고 있다. (최적화된 해결책은 상업적 경쟁력을 의미하기 때문에 공학은 필연적으로 상업화와 관련이 있다.) 공학 분야의 학술지에는 기존의 방법보다 효율이나 비용이 향상된 방법론을 제시한 논문이 환영받는다.

전산학의 발전은 이전에는 없는 것들을 창조해내며 세상을 변화시켜 왔다. 다음엔 무엇이 될 것인가?
그렇다면 전산학의 본질은 무엇일까? 필자는 ‘전산학=창조’라고 정의하고자 한다. 왜냐하면 컴퓨터와 관련된 새로운 문제를 창조하여 컴퓨터라는 도구를 이용해서 해결하는 과정이 전산학의 본질이라고 생각하기 때문이다. 여기서 중요한 점은 새로운 문제를 창조하는 부분이 핵심이며, 컴퓨터를 이용하여 해결하는 과정은 익히 알려진 프로그래밍이라는 과정으로서 부수적이라는 사실이다. 일반인에게는 이 부수적인 과정만이 보이기 때문에 단순히 ‘전산학=프로그래밍’이라는 등식을 세우게 된다. 그러나 학문적 또는 상업적으로 중요한 문제를 찾아내서 정립하는 것 자체가 전산학 연구의 꽃이며 고도의 창의성과 사고력을 요하는 과정이다. 전산학 분야의 학회에서는 종전에 알려져 있지 않던 새로운 문제를 제시하고 컴퓨터를 이용하여 해결한 논문이 환영받는다.
전산학에서 새로운 문제를 창조한다는 것은 완전히 무에서 유를 창조하는 것이다. 이렇게 문제를 창조한다는 것은 수학에서 진리를 증명하는 문제와는 매우 다른 개념이다. 예를 들어 수학에서 오랫동안 난제로 남아있던 페르마의 마지막 정리는 마침내 증명되었지만, 페르마의 마지막 정리 자체는 우주 탄생 시점부터 이미 성립하던 진리였다. 즉 수세기에 걸친 수학자들의 노력은 이미 존재하고 있던 그 불변의 진리를 확인하는 과정이었을 뿐이며, 누군가가 페르마의 마지막 정리라는 문제를 새로 만들어낸 것은 아니다. 그러나 전산학에서 문제를 창조하는 것은 글자 그대로 무에서 유의 형태로 창조하는 것이다. 전산학에서 문제 창조 개념의 설명을 돕기 위해서 심시티(SimCity)라는 컴퓨터 게임의 이야기를 소개하고자 한다. 심시티는 전문 프로그래머가 아니라 Wright라는 그래픽 디자이너가 만든 게임이다. Wright는 (비행기를 조종하는) 슈팅게임의 배경 화면 디자인을 담당했는데, 배경 화면 디자인이 슈팅게임 자체보다 훨씬 더 재미있다고 느꼈다. 이에 영감을 얻어서 배경 화면만을 디자인하는 게임을 만들었고, 여기서 심시티 게임이 만들어졌다. 심시티 게임이 만들어지기 전까지 배경 화면 디자인이 게임이 될 수 있다는 것을 아무도 생각하지 못했다. 그러나 Wright는 배경 화면 디자인에서 커다란 상업적 가능성을 보았고, 이 아이디어를 (컴퓨터를 이용하여) 구체화하여 새로운 게임 장르를 창시하게 된 것이다.
전산학에서 문제 창조의 예로서 인터넷 검색엔진을 들 수 있다. 인터넷 검색엔진이 나오기 전에는 주소를 아는 웹페이지만 방문할 수 있었다. 그러나 검색엔진을 개발한 사람들은 전세계의 웹페이지에서 입력 키워드와 관련된 페이지만을 찾아서 사용자에게 제시한다는 새로운 문제를 찾아냈고 이를 컴퓨터를 이용하여 해결하였다. 즉 검색엔진 개발이라는 문제는 기존에는 없던 문제이며 새롭게 창조된 문제인 것이다. 검색엔진은 이후 인터넷의 보급과 함께 상업적으로 성공을 거두어 야후나 구글 같은 회사를 탄생시키게 했다.
전산학에서 이렇게 창조된 문제는 계산적 사고방식(computational thinking)을 이용하여 해결한다. 계산적 사고방식은 전산학의 특징적 요소로서 컴퓨터를 이용하여 문제를 해결할 때 이용하는 사고 체계이다. 예를 들면 큰 문제를 여러 개의 부분 문제로 나누어서 해결한 뒤 부분 문제의 해답을 다시 결합하는 분할점령방식(divide-and-conquer)이 대표적인 계산적 사고방식이다. 계산적 사고방식으로 문제를 해결한 뒤 프로그래밍을 통해서 소프트웨어 시스템으로 구체화하게 되는데, 이때 다양한 공학적 접근 방법을 이용할 수 있다. 예를 들면 구글에서 이용하는 클러스터컴퓨팅 환경은 분할점령방식에 기초하여 설계되어 있지만 수 천대의 컴퓨터를 효율적으로 운영하기 위해서 수많은 공학적 접근 방법을 이용하였다. 참고로 우리대학의 전산입문 101 과목의 목표는 이러한 계산적 사고방식을 배우고 프로그래밍을 통해서 이를 구현하는 능력을 익히는 것이다.
전산학은 컴퓨터가 존재하지도 않던 20세기 초반 수학자와 논리학자에 의해서 시작된 학문이다. 전산학에서 가장 권위 있는 상은 초기 전산학 체계 수립에 큰 공헌을 한 수학자 Alan Turing의 업적을 기념하기 위해서 Turing 상으로 이름 붙여졌다. 그리고 오늘날 여전히 전산학 내의 여러 분야가 수학과 논리학과 밀접한 연관을 가지고 있다. 예를 들면 모든 지도를 4개의 색깔만으로 칠할 수 있는지를 증명하는 4색 문제는 수학에서 근 150년 간 난제로 남아 있었지만, 전산논리학 분야에서 개발된 자동정리증명기를 이용하여 2005년에 해결되었다. 또한 위에서 언급한 페르마의 마지막 정리의 증명도 전산논리학자들이 논리식으로 변환하여 그 증명에 오류가 없음을 컴퓨터를 이용하여 확인했다.
전산학 내에서는 알고리즘·데이터베이스·인공지능·로보틱스·소프트웨어공학 등의 다양한 연구 분야가 존재한다. 모든 전산학의 연구 분야는 나름대로의 고유한 색깔을 가지지만, 근본적으로는 문제 창조라는 핵심 원칙에 바탕을 두고 있고 프로그래밍은 문제 해결에서 이용하는 부수적인 역할만을 취한다. 전산학은 계산적 사고방식을 주무기로 하는 창조의 학문인 것이다.