문제해결력을 높이고 개념을 잡아주는 프로그래밍 정석

사용자 삽입 이미지
개념을 잡아주는 프로그래밍 정석
기초 연산부터 고급 문제해결 능력까지 파이썬을 활용한 효율적인 프로그래밍 학습
제니퍼 캠벨, 폴 그리스, 제이슨 몬토조, 그렉 윌슨 지음 | 이대엽 옮김 |
484쪽 | 2010년 5월 4일 출간예정 | 25,000원
YES24, 교보문고, 강컴, 인터파크, 알라딘

▶ Hello, World!

빌 게이츠가 지난 1월 트위터에 첫발을 내디디며 남겼던 한 마디입니다. 프로그래머들에게 Hello World란 프로그래밍과 컴퓨터, 네트워크 세상에 대한 인사와 다름 아닙니다. 그래서 수많은 프로그래밍 언어 책과 프로그래밍 개론서들에서는 화면에 Hello World를 찍는, 프린트하는 구문으로 시작합니다.

자바로 헬로월드를 한번 찍어볼까요? 뭐, 초급자가 배우는 내용이니 어렵지 않겠죠.

public class HelloWorld {
   public static void main(String[] args) {
      System.out.println("Hello, World");
   }
}

자, 이번에는 C로 해볼까요?
# include <stdio.h>

void main()
{
  printf("Hello, World");
}

일단 public이니 static이니 void니 이런 건 지금은 알 필요 없다지요. 일단 Hello World가 잘 찍혔는지만 확인하고 넘어가면 된다고 용기 백배 주시는 말씀을 하시지만, 영 마음 한 구석 찜찜한 마음은 덜지 못합니다. 심지어 어떤 책에선 박스로 둘러친 내용으로 "지금 세세한 내용을 이해하지 못한다고 해서 용기를 잃거나 기죽을 필요는 없다. 책을 다 읽고 나면 이해할 날이 올 것이다"라는 노트가 들어있는 경우도 있다고 합니다.

물론 무엇이든 단박에 내용을 이해하고 넘어가기란 쉽지 않습니다. 공부를 하다 보면 일정 시간이 지나고 나면 모르던 내용을 알게되기도 하고 더 깊이 이해할 수 있는 힘이 키워지게 되는 거니까요.

▶ 닭이 먼저냐 달걀이 먼저냐

프로그래밍 개론을 익히고 큰 그림을 그리고 싶은데 프로그래밍 언어를 먼저 배워야 가능하다? 그래서 프로그래밍 언어를 먼저 배우자니 기초가 부족하여 도대체 뭔 소린지 이해하기 어렵거나?

『개념을 잡아주는 프로그래밍 정석』은 개론이 먼저냐 언어 습득이 먼저냐라는 문제를 뛰어넘어, 직관적이면서도 비교적 장벽이 없는 파이썬을 활용해, 언어를 배우는 수고를 최대한 건너뛰고 바로 프로그래밍 과정에서 일어나는 문제 해결에 집중하도록 도와 주는 책입니다.

잠시 동영상을 하나 보실까요?



이 동영상은 2008년 가을학기 MIT공과대학에서 Intorduction to Computer Science and Programming이라는 제목으로 에릭 그림슨(Eric Grimson)교수님이 직강을 하시는 내용을 동영상으로 찍어 유튜브에 올려놓은 강의 중 제2강입니다. MIT에서 직접 운영하는 유튜브 동영상에서는 관련 강의를 24강까지 자유롭게 볼 수 있습니다. 크리에이티브 커먼즈 cc BY-NC-SA (저작권자 표시, 비영리, 동일조건변경허락) 조건으로 배포를 허용하고 있습니다.

동영상을 보시면 아시겠지만 MIT공과대학에서도 파이썬으로 프로그래밍 개론 강의를 진행합니다. 그밖의 대학에서도 프로그래밍을 가르칠 때 파이썬을 채택한 사례는 어렵지 않게 찾아볼 수 있습니다. 그런데 유독 우리나라에서는 파이썬이 빛을 보지 못하는 이유는 무엇일까요? SI 기업위주로 돌아가는 우리 나라의 IT환경이나 대학교 전산과학과나 컴퓨터공학과의 파이썬 교육이 미비한 탓도 있겠으나, 이에 대해서는 여러 분의 의견이 분분할 테므로 살짝 생략하고 넘어가겠습니다.

그렇다면 거꾸로 다시 한번 짚어보죠. 이 책도 그렇고, 각 외국대학에서 수많은 언어 중에 굳이 파이썬을 채택한 이유는 무엇일까요?

▶ 직관적이고 간결하며 가독성 높은 언어, 파이썬으로 배우는 프로그래밍 개론

이에 대해 역자 이대엽님이 잘 정리해주신 이유를 들어보죠.

본문의 예제 코드를 보면 알겠지만 파이썬 코드는 자체가 알고리즘에 가깝다. 언어 자체의 간결함과 높은 가독성은 파이썬을 배우고 쓰기 쉽게 해준다. 따라서 목적하는 개념 이해와 문제 해결에만 오롯이 집중할 수 있다. 더불어 풍부한 라이브러리와 짧은 개발 주기, 다른 프로그래밍 언어와의 손쉬운 통합은 오늘날 기업의 지상 과제인 적기출시(Time to Market)를 실현하는 데도 도움이 될 것이다.

하지만 무엇보다도 파이썬 언어가 주는 매력은 바로 프로그래밍의 재미다. 여기서 재미란, 프로그래밍 언어로 내가 하고 싶은 일에만 집중할 수 있을 때 성립하는 요소다. 특히 프로그래밍을 처음 접하거나 익숙지 않은 전산 전공자의 경우에는 이런 요소가 더 중요하리라 생각한다. 언어적 세부 사항에 압도돼 프로그래밍이 주는 즐거움을 느끼기 힘들었다는 사람이라면 더더욱 그렇다.

이런 점을 감안한다면 저자가 파이썬을 선택한 이유는 자명하다. 사실 이 책에서 저자가 전하고자 하는 바는 언어적 세부 사항에 있지 않기 때문이다.  - 옮긴이 이대엽
위에서 살펴본 자바나 C의 출력문 코드를 파이썬으로 하면 print "Hello, World!"하면 끝입니다.  

대부분 C로 시작하는 프로그래밍 개론서를 읽다 보면 처음에는 별 문제 없이 넘어가지만, 배열, 문자열, 포인터가 나오기 시작하면 이제 개론이고 뭐고 언어의 장벽에 턱 막혀 넉다운되고 맙니다. 그야말로 주객이 전도되는 안타까운 상황이 아닐 수 없습니다.

언어를 배우는 수고를 최대한 줄이고 프로그래밍 전반의 기초부터 고급 문제해결 능력을 높이는 데 최대한 집중할 수 있는 책이 바로 이 『개념을 잡아주는 프로그래밍 정석』입니다. 기존에 출간된 프로그래밍 개론서라 하더라도 컴퓨터 구조, 알고리즘 등에서 멈추거나 기초적인 내용을 겉핥기식으로 다루고 맙니다. 그 또한 언어를 배워야 하는 장벽에 부딪혀 개념잡기에 실패하는 경우가 수두룩하죠.

▶ 개념을 잡아주는 프로그래밍 정석!

이 책에서는 기초 연산 등의 기본적인 프로그래밍 요소은 물론이고 알고리즘, 디버깅, 객체지향 프로그래밍, 테스팅(TDD), GUI 제작, 데이터베이스 활용법까지  전산학 전공 학생은 물론, 초보 프로그래머, 혹은 소프트웨어 업계에 종사하지만 기본기가 부족하다고 생각하는 이들이 확실히 실력을 다질 수 있는 프로그래밍 개론 필독서입니다. 물론 파이썬을 배우고 싶은 프로그래머들이 손쉽게 파이썬을 익힐 수 있는 책이기도 합니다.

디버깅을 다룬 절은 정말 훌륭하다. 내가 알고 있는 현직 프로그래머 가운데 다수는 이 책의 모든 내용을 공부해 보라고 하면 당연히 기분 나빠하겠지만 때론 이 절(그리고 다른 여러 절)의 내용을 진정으로 연마할 필요가 있다.
- 알렉스 마틸리 / 『Python in a Nutshell』의 저자

이 책은 두 가지 방식에서 모두 성공적이다. 이 책은 과학에 초점을 맞춘 컴퓨터 과학 전공 교재이면서 파이썬 참고서를 목표로 삼는다. 심지어 학생들에게 계산적 통찰력을 함양하면서도 학생들이 새로 습득한 프로그래밍 기술을 곧장 연구나 프로젝트에 응용할 수 있게 도와주기도 한다.
- 자카리 도드 / 하비 머드 대학 컴퓨터 과학과 부교수
 
지난 몇 개월간 이 책을 번역하시고 편집 마무리 과정까지 최선을 다해 노력해주신 옮긴이 이대엽님께도 감사 말씀 전합니다. "예전에 프로그래밍을 처음 배울 때 이 책으로 시작했다면 어땠을까"라는 옮긴이 이대엽님의 말처럼 지금이라도 기초를 탄탄히 하고 고급 문제 해결 능력까지 놓치지 않는 훌륭한 프로그래머로 거듭날 수 있는 기회를 잡으시기 바랍니다. 파이썬에 대한 두려움이나 편견 따위 훨훨 날려버리시구요.

『개념을 잡아주는 프로그래밍 정석』은 계절의 여왕 5월을 여는 에이콘의 첫 책으로 5월 4일에 출간됩니다. 5월에는 정말 봄이 오겠죠? ㅠㅠ 이 책은 지금 YES24, 교보문고, 강컴, 인터파크, 알라딘에서 예약 판매 중입니다.

CC

크리에이티브 커먼즈 라이센스 에이콘출판사에 의해 창작된 이 저작물크리에이티브 커먼즈 코리아 저작자표시 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.


  • daybreaker| Apr 29, 2010

    KAIST에서 올해 봄학기부터 Python으로 CS101 프로그래밍 기초 수업을 진행하고 있습니다. 제가 조교로 참여하고 있기도 하구요.

    학교 내에서도 학생들이나 교수님들 사이에 C나 Java 대신 Python을 사용하는 것에 대해 많은 논란이 있었는데, 결국 과 교수님들의 선택은 '학습 noise가 적은 것이 좋다'로 기운 듯합니다.

    이 책도 다른 조교님들이나 교수님한테 한번 추천해서 같이 봐야겠군요~ :)

  • 에이콘| Apr 29, 2010

    daybreaker님 정보 주셔서 감사합니다. ^^

    카이스트, 역시 앞서가는 대학이로군요.

    좋은 결과 있으시길 바라고, 저희 책이 조금이나마 도움이 된다면 기쁘겠습니다. 감사합니다.

  • 레몬에이드| May 03, 2010

    저 같이 개념없는 사람이 꼭 봐야하는 책이군요...
    ㅠㅠ

    이대엽님 번역하시느라 고생하셨습니다
    이번주 내로 구매해야겠습니다 ㅋ

    참... 에이콘 지기님
    봄이여...
    안와여...
    여름 왔어여...
    ^ㅁ^ 히힛!

  • 에이콘| May 03, 2010

    레몬에이드님은 개념은 없진 않으시겠지만, 충분히 도움은 되시리라 생각합니다. ^^ 미리 감사드려요.

    그리고 ... 오늘은 다시 겨울이에요. (추워요) ㅠㅠ

  • okgosu| May 04, 2010

    출간 축하합니다...(출산으로 쓸뻔..)
    요새 책제목에 정석이 유행인것 같군요...ㅋ