토요일, 7월 06, 2013

[독서광] 미래를 바꾼 아홉 가지 알고리즘

집에 있는 책꽂이를 보면 수학, 물리, 생명공학, 화학 등 여러 분야에 걸친 대중서가 보인다. 그런데 흥미롭게도 컴퓨터 관련 대중서는 손에 꼽을 정도다. 일부러 대중서를 구입하지 않았는지 아니면 대중서가 없어서 구입하지 못했는지는 모르겠지만, 온라인 서점에서 찾아보기 힘든 것도 사실이다. 오늘은 에이콘 출판사에서 일반인을 위한 컴퓨터 대중 서적을 표방한 '미래를 바꾼 아홉 가지 알고리즘'이라는 책을 소개하겠다.

이 책의 부제인 '컴퓨터 세상을 만든 기발한 아이디어들'은 이 책의 성격을 아주 잘 나타내고 있다. 저자는 컴퓨터 과학의 기발한 아이디어를 표현하는 알고리즘 중에서 1. 일반 컴퓨터 사용자가 날마다 사용하며 2. 구체적이고 실질적인 문제를 다뤄야 하며 3. 컴퓨터 하드웨어나 인프라가 아닌 컴퓨터 과학 이론에 초점을 맞추는 세 가지 특성이 있는 알고리즘을 뽑아내어 소개한다. 하지만 여느 알고리즘이나 자료 구조 책과는 달리 코드는 없으며 적절한 비유와 알기 쉬운 사례로 트릭(다른 방식으로는 어렵거나 불가능했을 목표를 달성하는 기발한 기법)을 설명하고 있다. 이 책에서 소개하는 알고리즘과 간단한 설명은 다음과 같다.

  • 검색 엔진 인덱싱: 검색 엔진이 빠르게 특정 단어나 문구를 받아 원하는 결과를 제공하는 방법이 무엇일까?
  • 페이지랭크: 결과 우선 순위를 어떻게 매길 것인가?
  • 공개 키 암호화: 남이 뻔히 보고 있는 상황에서 어떻게 비밀스럽게 키를 교환할까?
  • 오류 정정 코드: 네트워크로 통신하고 디스크에 저장할 때 발생하는 오류를 어떻게 스스로 고칠까?
  • 패턴 인식과 인공지능: 철자를 자동으로 교정하고, 얼굴을 인식하고 카메라에 찍힌 내용이나 스캔한 내용을 글자로 바꾸는 마법은?
  • 데이터 압축: 엄청나게 큰 동영상이나 자료를 손쉽게 교환하려면 무엇이 필요할까?
  • 데이터베이스: 관계형 데이터베이스에 대한 기본 이론
  • 디지털 서명: 전자 세상에서 인감이나 서명은 무엇을 의미할까?
  • 계산 가능성과 결정 불가능성: 튜링이여 영원하라!

딱 한 문장으로 예를 들자면... 여러분이 구글에서 내용을 검색한 다음(인덱싱, 페이지랭크, 공개키 암호화), 특정 사이트에 계정과 암호로 접속해(데이터베이스) 캡차로 여러분이 사람임을 증명한 다음(패턴 인식과 인공지능, 계산 가능성과 결정 불가능성) 큰 파일을 다운로드 받아(데이터 압축, 오류 정정 코드), 진위를 확인하기 위해 검사하는(디지털 서명) 과정에서 이 모든 마법이 동원된다. 여러분이 컴퓨터를 켜서 어떤 작업을 할 때 매일 위에서 설명하는 알고리즘 덕을 보는 셈이다.

책 내용 중에 가장 마음에 들었던 부분은 공개 키 암호화를 설명하면서 페인트 혼합 트릭을 예로 든 내용이다. 공개 키에 대한 개념을 설명한 내용 중에서 가장 이해하기 쉬우면서도 정확한 예가 아닐까 하는 생각이 들었다. 다음으로 디지털 서명을 설명하면서 서명 은행이라는 개념을 예로 든 내용도 마음에 들었다(한국에서는 인감 제도가 있기 때문에 특히 이해가 더 쉬웠을지도 모르겠다). 물리 키가 아닌 논리 키를 어떻게 관리하고 교환하고 인증하는지 아주 쉽게 이해할 수 있을 것이다. 마지막으로 계산 가능성과 결정 불가능성을 설명하면서 예를 든 '다른 프로그램에서 충돌이 일어날지 알 수 있는 프로그램'은 아주 유쾌했다. 조금 어렵긴 하지만 "사람과 컴퓨터가 다를까? 아니면 기저까지 내려가면 같을까?"를 놓고 철학적인 고민을 해보기 바란다.

보너스로 이 책을 읽다가 발견한 보물 하나를 소개하겠다. 이 책 추천사를 쓴 크리스 비숍이 2008년 영국 왕립 연구소에서 강연한 내용인 Roayl Institution Christmas Lecture는 컴퓨터 과학 지식이 없는 사람을 대상으로 멋진 볼거리를 제공한다(비디오에 나오는 청중을 보면 ... 호기심 많은 아이들이다). 한글 자막이 없어 조금 아쉽기는 하지만 어려운 영어가 아닌 쉬운 영어를 사용하며 실제 예를 많이 들기 때문에 컴퓨터에 대한 대중적인 이해도를 높이기 위한 훌륭한 출발점으로 보인다. 비숍이 쓴 추천사에서 일부를 가져온다.

게다가 '컴퓨팅' 또는 '정보통신기술'이라는 과목명으로 학교에서 가르치는 내용은 대개 소프트웨어 패키지 사용법을 훈련하는 기술 정도에 불과하다. 그다지 놀라울 것도 없이, 학생들은 따분해 하고, 컴퓨터과학에는 지적 깊이가 결여됐다고 느끼게 되면서, 놀이와 소통에 컴퓨터 기술을 활용하려는 열정도 금세 사그라진다. 지난 십여 년간 컴퓨터과학을 전공하는 대학생 수가 50%나 감소한 현상의 핵심은 이와 같은 문제에서 기인한다.

한국의 현실도 이와 다르지 않다는 생각이다. 이 책을 읽고나서 컴퓨터에 대한 관심이 생기는 분들이 많아지면 더할 나위 없겠다.

EOB

댓글 없음:

댓글 쓰기