Misconceptions and Truths about Computer Science

  “ 컴퓨터과학은 컴퓨터를 연구하는 건가요?”얼 마 전 특강에서 받은 질문이다. 질문의 ‘ 컴퓨터’가 우리가 주변에서 보는 보통의 PC, 노트북 같은 기기라면, 내 대답은 “아니다”. 컴퓨터과학이 수학, 과학, 공학을 토대로 한 융합학문이기에 다시 한 번 이 질문을 곱씹어 봤지만, 아직까지 내 대답은 같다.

  네덜란드의 유명한 수학자이자 컴퓨터과학자인 다익스트라(Dijkstra)는“ 천문학이 망원경에 대한 학문이 아닌 것처럼 컴퓨터과학은 컴퓨터에 대한 학문이 아니다”1라고 말했다. 천체를 관찰하기 위해서는 망원경이 필요하다. 특히, 제대로 된 망원경이 없던 17세기 초, 갈릴레이가 별을 보기 위해 먼저 좋은 망원경을 만들고자 노력했던 시기에, 좋은 망원경의 확보 여부는 연구에 끼치는 영향이 더 컸었다. 그렇지만, 망원경은 천문학을 돕는 도구이지 연구대상은 아니다.

  이와 같은 이유로, 컴퓨터 역시 컴퓨터과학에서 도구이지 주된 연구 대상은 아니다. 아직 100년도 안 된 짧은 컴퓨터과학의 역사 때문에 최근까지도 컴퓨팅 도구의 영향력이 높은 것도 사실이지만, 컴퓨터과학의 주제는 컴퓨터기기(하드웨어)가 아닌 컴퓨테이션(Computation), 문제를 효율적으로 해결하기 위해 고안된 자동화된 계산 방식이다.

  사실, 컴퓨터과학에서 보는 컴퓨터와 일반적 컴퓨터는 다르다.2 일반적으로 우리가 말하는 컴퓨터는 [그림 1]에서 왼쪽과 같은 기기들이다. 위키피디아 정의에 따르면, 이 기계는 수식이나 논리적 언어로 표현된 계산을 수행하거나 작업을 통제하는 일을 하는 도구다.

  그 역사를 거슬러 올라가보면, 수학자 파스칼이 세무사인 아버지를 도와주기 위해 만들었다는 덧셈뺄셈 계산기, 좀더 복잡한 계산(다항함수/로그함수/삼각함수 등)이 가능했던 찰스 배비지의 차분기관, 에이다의 주석이 더 인상적이기도 한 해석기관3 등이 컴퓨터 역사에 그 이름을 올렸다.

  사실‘, Compute’라는 말 자체가‘ 수를 세다’,‘합하다’라는 라틴어 computatre에서 나왔기에, 계산기들이 컴퓨터4의 조상인 것은 자연스러운 일이다. 즉, 컴퓨터는 계산(Calculation)을 하는 도구로서 그 역사를 시작하였으니 최근까지 이어진 기술의 발달로 컴퓨터가 하는 일들이 다양해지면서 컴퓨트(compute)의 의미는 아직도 현재진행형으로 확대되고 있다.

[그림 1] (좌)일반인이 생각하는 컴퓨터 (우)컴퓨터과학에서의 컴퓨터(튜링머신)

  이에 반해, 컴퓨터과학에서의 컴퓨터는 ‘자동화된 계산과정(Computation)을 수행하는 시스템’이다. [그림 1]에서 오른쪽에 있는 그림은 컴퓨터과학의 아버지라 불리우는 영국의 수학자 앨런 튜링이 만들어낸 상상 속 기계인 튜링기계(Turing machine)이다.

  유한개의 방을 가진 테이프(저장공간)와 그 방안의 기호(그림의 a, b로 저장공간 안에 적힌 내용물), 저장공간의 현재 상황(그림의 q1)과 지금 헤더가 읽은 기호에 따라 헤더를 움직이는 규칙들 등 어찌 보면 단순해 보이는 이 설계도는 그동안 사람들이 머릿 속에서 생각해왔던 문제 풀이 과정(computation)을 기계라는 객관성있는 모형으로 형상화한 것이다.

  컴퓨터과학자들은 이 사고의 모형에서 풀 수 있는 문제를 찾아내고, 그 문제를 어떻게 효과적으로 풀 어낼 것인지 고민해왔다. 실 세계의 문 제를 효 과적으로 풀 기 위해서는 그 문제를 둘러싼 환경을 어떻게 바라보고 모형화할 것인지, 그 위에 해결방안의 각 단계들은 다음 단계로 어떻게 이동하는 것이 효율적인지 그리고 이 문제와 해결방안을 SW로 어떻게 나타낼 것인지(프로그래밍) 등을 포함하여 연구해 왔다.

  사람들은‘ 컴퓨테이션 이론’이라는 컴퓨터과학과 대학부 기본과목 이야기가 아닌가라고 생각하겠지만, 운영체제, 네트워크, 인공지능 등 컴퓨터과학 세부 분야 역시 이를 기반으로 다양한 분야·관점에서 고민하고 발전시켜왔다. 즉, 컴퓨터과학자에게 컴퓨터는 컴퓨터기계의 개념적 동작 원리(Computing)를 갖고 있는 모델이자 SW가 실행되는 또 하나의 환경이다.

  이를 위해, 컴퓨터과학자들은 수학적·물리적 기반을 토대로 논리와 사고를 적용하는 독특한 이론과 사고 기술을 발전시켜 왔다. 크고 복잡한 문제들을 핵심요소로 단순화하기 (추상화), 작은 독립형 문제들로 쪼개기(세부화, 모듈화), 효과적이고 정확한 단계적 문제 해결 방안 고안하기(알고리즘), 문제의 해결방안의 실행비용 구하기(복잡도), 특정 문제의 해결 방안을 다른 문제의 해결방안으로 확대·적용하기(일반화), 코딩으로 구체화하기(프로그래밍) 등이 그 사례이다.

  이것들을 우린 ‘ 컴퓨팅 사고력’이라 부르고, 컴퓨터과학자의 사고방식이라 정의한다. 이러한 컴퓨팅 사고력은 사실 그동안 인류가 쌓아왔던 지식이자 지혜이며, 컴퓨터과학자는 이 지식과 지혜를 컴퓨팅 도구에 효과적으로 적용시키기 위해, 학문적으로 연구, 발전시켜왔다. 인지와 사고가 없는 컴퓨터란 기계에게 적절하고 효율적인 명령을 내릴 수 있는 사람의 논리적·창의적 사고력, 즉‘ 컴퓨팅적 사고력’은 현명한 사람이 할 수 있는 ‘생각의 기술’(Art of Thinking)이다.

  컴퓨팅 사고력의 ‘일부’가 프로그래밍(코딩)이다. 사람의 생각을 컴퓨터가 이해하고 수행할 수 있도록 컴퓨터 프로그래밍 언어로 옮기는 일을 프로그래밍(programming)이라 하고, 좀더 쉽고 편한 말로 코딩(coding)이다. 코딩 기술은 SW 개발인력에게는 가장 핵심기술이고 컴퓨팅 사고력을 배양할 수 있는 좋은 훈련방식이기도 하다. 직접 SW를 만들어보고 돌려보는 경험만큼 그 원리를 이해하고 자신만의 지식으로 만들 수 있는 방법은 없기 때문이다.

  그렇지만, 코딩이 컴퓨터과학의 전부는 아니다. 좋은 SW를 만들어내는 핵심은 프로그램 명령어 뒤에 숨어있는 사람의 논리적 생각과 창의적 발상이다. 더욱이 이제는 이러한 SW를 만들어내는 사람의 사고가 더 중요한 시점이 되었다. 누구나 쉽게 프로그래밍할 수 있게 된 최근의 프로그래밍 환경과 개발 도구의 발전, 신문기사를 써내고 그림을 화풍에 맞춰 그릴 수 있는 최신 SW기술의 발전으로, 단순한 코딩은 로봇도 할 수 있을 것이라 전망된다.

  그렇다면, 사람이 할 수 있는 업무는 무엇인가. 창의적 아이디어로 풀어낼 문제를 찾고 어떻게 풀 것인지 설계하는 일이다. 따라서, 우리는 코딩 기반이 아닌 컴퓨팅사고력 기반의 SW교육을 우리 아이들에게 해야 한다.

  최근 학생, 선생님, 학부모 대상 특강을 해보면, 예전보다 SW교육에 대한 관심이 확실히 높아졌음을 느낀다. 제4차 산업혁명으로 기존의 일자리에 어떤 변화가 있을지 모른다는 불안감 속에, SW 분야는 앞으로 더 수요가 많다고 하니 부모들의 관심이 특히 높다.

  특강 중 에 많은 질문이 쏟 아지곤 하는데, 그 질문 속 을 들 여다보면 S W교육, 코 딩, Computational Thinking(컴퓨팅적 사고력), 정보, 컴퓨터과학 등 다양한 낯선 단어들에 대한 혼란스러움이 보이곤 한다. 이 모든 질문들의 근원에는 SW교육의 母학문인 컴퓨터과학에 대한 이해가 부족하기 때문이다. 사실, 천 년이 넘는 역사를 자랑하는 수학, 과학에 비하면, 거기서 파생되어 나온 컴퓨터과학의 역사는 오래되지 않았다. 그리고 그 짧은 기간 동안 이룩한 놀라운 성과만큼 앞만 보고 달리기도 바빠 분야를 널리 알리고 이해시킬 시간도 별로 없었다.

  SW분야의 중요성을 인지하고 SW산업을 활성화시키고자 미국 SW최고전문가 회의에서 2005년 발표했던 국가전략보고서 ‘Software 2015’를 보면, 학생들에게 대한 SW교육의 중요성과 컴퓨터과학 분야를 널리 알리는 캠페인을 인재양성 방안의 가장 서두에 두었다. 교육은 사회적 공감대를 기반으로 할 때, 현장 수행성과 지속성을 갖는다는 사실은 그때나 지금이나 변함없다. 우리 정부의 초·중등 대상 SW교육 확산 노력에 컴퓨터과학의 인식 확산에 대한 지원을 기대하는 이유이기도 하다.


1 Computer science is no more about computers than astronomy is about telescopes -Dijkstra
2 칼 럼 작성 후, 필자의 설명과 유사한 내용이 있는 글을 찾았기에, 해당 글의 링크를 올린다.
“컴퓨터과학에 대한 고찰 2”    http://philosophical.one/post/thoughts-about-computer-science-2/
3 해석기관은 프로그래밍이 가능한 기계로 알려져 있다.
4 1800년대에 컴퓨터라는 말은 “계산을 수행하는 여성”을 지칭하기도 하였다.

 

 

컴퓨터과학 월간SW중심사회2017년10월