「처음 떠나는 컴퓨터과학 산책」
이 책의 온전한 제목은 「처음 떠나는 컴퓨터과학 산책」이다. “하버드대 학생들은 왜 컴퓨터과학을 배울까?”라는 카피를 달고 있다. 이 책은 저자가 기존에 집필했던 책과 자료를 바탕으로 청소년부터 성인까지 누구나 볼 수 있도록 수준과 관점에 맞게 재구성하여 집필했다.
차례는 1장, 생각을 어떻게 표현할까? 2장, 컴퓨터란 무엇일까. 3장, 컴퓨터가 사용하는 코드. 4장, 코드로 표현하기. 5장, 정보와 문제를 구조화하기. 6장, 일의 순서 정하기, 알고리즘. 7장, 알고리즘과 데이터 구조. 8장, 기본 알고리즘, 정렬. 9장, 기본 알고리즘, 탐색. 10장, 함수에 대해 알아보기. 11장 문제 해결을 위한 다양한 전략. 12장, 기계가 학습한다면? 13장, 컴퓨터와 인류의 미래로 되어있다.
컴퓨터는 주어진 데이터와 정보를 반복적으로 자동 처리할 수 있지만, 데이터 자체를 만들어 내거나 의미를 부여한 정보를 만들고 표현하지 못한다. 따라서 데이터와 정보를 어떻게 처리해야 하는지 처리 절차를 만들어 놓은 것을 ‘알고리즘’이라고 한다. 일반적으로 알고리즘이라고 하면 ‘일을 처리하는 순서’라는 뜻이다. 컴퓨터는 그 알고리즘에 따라 데이터와 정보를 처리하여 결과를 보여 주게 된다. 이런 과정을 ‘컴퓨팅’이라고 한다.
컴퓨터 소프트웨어는 사람의 두뇌 작업, 문제 해결 과정을 대신해 주는 역할을 하는 것이며 사람과 같은 비슷한 정보 처리 절차를 거친다. ‘입력-처리-출력’이다. 컴퓨팅 모델에서 입력되는 정보를 분해하여 정보 단위로 만들고 디지털화하는 과정을 통틀어서 정보의 ‘코딩’이라고 한다.
키워드 인코딩은 문서에서 자주 사용되는 단어에 상대적으로 짧은 코드를 부여하여 전체 크기를 줄이는 방법이다.
컴퓨터로 문제를 처리하려면 다음과 같은 조건을 만족하는 명확한 형태로 표현해야 한다.
명확성(비 모호성)
완전성(빠진 것이 없어야 한다)
간략성(복잡하게 표현하지 말자)
가독성(빠르고 쉽게 이해할 수 있는 형태) 이다.
문제는 자연어로 표현하는 것은 표현의 명확성도 떨어지고 빠진 것이 있을 수 있고, 모순되는 경우도 발생한다.
일반적으로 표나 그래프 등이 방법을 사용하면 정보를 명시적으로 표현할 수 있다. 대표적인 것이 표, 다이어그램, 그래프와 같은 것이다. 컴퓨터는 표, 트리, 그래프 구조를 쉽게 처리할 수 있다.
컴퓨터과학에서는 어떤 작업을 수행하기 위해 컴퓨터에 내리는 명령을 순서대로 나열한 것을 알고리즘이라고 한다. 예를 들면, 라면 끓이기 조리법, 도서 대출 순서, 화재 발생 대피 요령 등 도 알고리즘이라고 할 수 있다.
일반적으로 가장 많이 사용하는 아스키코드는 각 기호에 대하여 1바이트, 즉 8비트를 사용한다. 8비트는 8자리의 비트이므로 256가지의 정보를 표현할 수 있다. 아스키코드에서는 8비트 중 인쪽 첫 번째 비트는 오류 체크를 위한 비트로 사용되고, 나머지 7비트를 사용하여 128가지의 정보를 표현한다.
영어는 128개의 코드로 모두 펴현할 수 있지만, 한글은 자음과 모음의 조합으로 이루어져 있기 때문에 초성 19개, 중성 21개 종성 28개의 조합으로 만들어지는 글자는 19×21×28 = 11,172개가 되므로, 128개의 코드로 표현할 수 없다. 그래서 개발된 것이 ‘유니코드’이다.
유니코드는 한글을 포함하여 전 세계 모든 문자를 하나의 문자 집합에 포함할 수 있다. 유니코드는 2바이트, 즉 16비트를 사용하므로 2¹⁶ = 65,536 가지의 문자를 표현할 수 있다.
절차적인 알고리즘 외에 대안적 접근방법이 나오기 시작했다.
지능 모델 : 인간의 두뇌가 정보를 처리하는 방식을 모델로 만들어 그것을 문제 해결에 사용한다.
-지식 기반 방법 : 사용할 수 있는 ‘지식’이라는 형태가 있다고 가정하고 그 지식을 어떻게 끄집어내고 조합하고 연결하여 현재의 문제 해결에 답을 주게 할 것인가에 대한 모델.
-데이터 중심 방법 : 관찰된 많은 양의 도메인 데이터들로부터 일정한 패턴과 일반화된 모델을 스스로 찾아내어 그 도메인에서의 문제 해결에 적응하고자 하는 방법. 기계학습과 데이터 마이닝, 딥러닝 등이 있다.
인공생명 : 생명체의 상호 활동을 시스템적으로 연구하여 복잡한 정보처리 시스템으로 이해하고 그러한 시뮬레이션 모델을 우리가 직면한 문제 해결에 활용하는 방법.
진화 또는 유전자 알고리즘 : 생명체가 진화해 나가는 시스템을 정보처리 모델로 만들어 최적화 문제와 같은 문제 해결에 활용하고자 하는 방법.
뇌 기반 방법, 신경망 알고리즘 : 인간 뇌의 수많은 뉴런과 시냅스들이 정보를 처리하는 모델을 정의하고 그것을 우리의 문제 해결에 활용하는 방법.
바이오닉스 : 인간의 신체와 기계를 합쳐서 상호 정보 상호 작용하게 하여 문제를 해결하는 방식.
집단지성과 휴먼 컴퓨팅 : 인터넷과 같은 네트워크상에 연결된 사람들이 직접 어떠한 일을 수행하고 컴퓨터와 네트워크는 그것을 조합하고 연결하고 통합하여 문제를 해결하는 방법. 예, 위키백과, 구글의 고문서 복원 프로젝트인 ‘프로젝트 구텐베르크’ 등.
코딩 부분은 어려워서 생략했다. 컴퓨터가 생활의 필수품이 되어버린 세상에서 살아남기 위해서는 이 책 같은 컴퓨터 기초지식부터 읽어야 한다.
책 소개
『컴퓨터과학 산책』 김현철, 김수환 지음. 2020.10.29. (주)생능출판사. 239쪽. 18,000원.
김현철. 고려대 교수. 플로리다대학교에서 전산정보학 박사 학위 취득, 미국 GTE, 삼성 SDS에서 근무, 플로리다대학교, 훗카이도대학교, 애리조나주립대학교에서 방문 특임 교수역임. 연구 분야, 기계 학습과 인간 학습 그리고 그들의 상호작용.
김수환. 컴퓨터교육 박사. 총신대학교에서 교수로 재직 중. 경인교육대학교에서 컴퓨터교육 석사, 고려대학교에서 컴퓨터교육 박사 취득. 초등교사, 인천정보영재중학교 교사, 경인교육대학교 미래인재연구소 겸임교수. 한국컴퓨터교육학회 부회장.