본문 바로가기
jisung's 책읽기/기술서

생각하는 프로그래밍 - Programming Pearls 2/E

by jisungStory 2019. 5. 5.
반응형

생각하는 프로그래밍

생각하는 프로그래밍

Programming Pearls 2/E

 저는 배움이 부족해서 그런지 무언가 배워야 한다는 강박에 가까운 감정을 매일 마주 하며 살고 있습니다. 공부를 그렇게 잘하지 못했고 좋은 학교를 다닌 것도 아니었지만 공부에 대한 열망이 왜 이렇게 까지 저를 괴롭히는지 저 스스로도 의문점이 많습니다. 그래도 스스로 나쁜 버릇이라고 생각지는 않아서 꾸준히 책을 읽고 공부를 하고 있습니다. 일년 이고 이년이고 계속해서 한주제를 공부 하다 보면 어느 정도의 성취는 이루기 마련이니까요. 

 제가 요즘들어 꾸준히 공부하고 있는 분야중에 하나가 컴퓨터 프로그래밍입니다. 아직 덕의 위치까지는 가지 못했지만 컴퓨터를 좋아 하는 사람으로서 프로그램정도는 만들 수 있어야 겠다고 생각했습니다. 물론 그것이 돈벌이 까지 되어 준다면 더할 나위 없겠지만 아직 저는 그정도 수준가지는 도달 하지 못한 것 같습니다. 그래도 꾸준히 하다 보면 언젠가 저도 쓸만한 프로그램 하나 정도는 만들 수 있지 않을까 한는 생각으로 일년 정도 꾸준히 공부하고 있습니다. 

 매일 아침 강의를 듣고 강의에 맞추어 예제 프로그램을 만들기를 반복하다 보면 문득 의심이 듭니다.

"이거 배워서 어디다 써먹지?"

 물론 이 훌륭한 강의를 만들어주신 강사님에게 죄송한 말이 될 수도 있지만 이렇게 이론 강의들을 계속해서 듣다 보면 이걸 정작 어디다가 써먹어야 할지 막막해질 때가 많습니다. 실용적인 지식이라고 할 수 있는 프로그램이 문법 강의만 주구장창 늘어 놓으면 현실과는 동떨어진 별나라 이야기가 될 수도 있기 때문입니다. 

 지금까지 제가 배워온 공부라는 것들은 대부분 그랬습니다. 영어도 그랬고 수학도 그랬고 도데체 어디다가 써먹어야 할지 모를 그런 지식들을 십여년 넘게 단지 시험을 치기 위해서 공부 했습니다. 그렇게 어린 학생은 배움에 대한 재미와 열정을 잃어 가는 것이겠지요. 그나마 저에게 다행이었던 것은 책읽기와 글쓰기를 좋아 한다는 것이었습니다. 이런 감정도 물론 부모님과 훌륭한 선생님을 만난 덕분에 얻을 수 있었던 것이라고 생각합니다. 다시 생각해보니 감사하네요. 

 다시 본론으로 돌아와서 프로그램을 배워서 어디서 써먹을 수 있을까? 현업에서는 이런 지식과 기술을 어떻게 활용하고 있나를 잘 보여준 책이 이 'Programming Pearls' 라고 생각합니다. 이 책은 문법적인 내용만 배열해 놓은 것이 아니라 저자가 경험하고 들은 업계의 경험들을 토대로 관련된 내용들을 설명해 놓았습니다.  최근에 알고리즘 공부를 하며 알게된 '이진탐색'이라든지 .... 같은 기술들이 막상 현실에서 어떻게 적용되는지 알 수 있는 좋은 사례집이라고 생각합니다.

물론 사례들을 모아 놓은 것 만으로 이 책을 평가하기는 부족한 부분이 있습니다. 각 챕터 뒤에는 생각해볼 문제들이 십여가지 정도 나와 있습니다. 프로그램을 처음 접한는 분들에게는 조금 어려울 수 있지만 그 질문들 하나 하나가 만약 프로그래머 라면 생각해볼 문제들이기에 충분히 가치가 있다고 생각합니다. 이런 책을 번역된 한글로 만날 수 있다는 것을 감사히 생각해야 겠네요. 

 잘 설명된 기술 서적을 읽으면 즐겁지만 다만 언어의 장벽이 그 즐거움에 몰입 되는데 방해가 되기도 합니다. 영어로 쓰여진 책을 한글로 번역하다 보니 어쩔 수 없이 거리감이 생깁니다. 특히 프로그래밍 분야의 언어들은 대부분 영어로 만들어 진 것이다 보니 한국어로 억지로 해석 하다 보면 그 직관적인 의미가 잘 와닿지 않게 되는데요. 언어의 장벽은 어쩔 수 없는 것 같습니다. 

 컴퓨터 언어를 배운 다는 것은 기계인 컴퓨터와 소통하기 위한 도구를 갖는 다는것과 같은 의미 라고 생각합니다. 영어를 배우는 것은 영어권 국가의 사람들과 소통하기 위해서 이고 과학을 배운 다는 것은 자연과 소통하기 위해서 이지요. 우리가 무언가를 배운다는 것은 그 어떤 것과 소통하며 좀 더 나은 세상으로 만들기 위함이 아닐까 합니다. 그래서 사람들 특히 저 같은 사람들은 배움에 항상 목말라 하고 있는지도 모르겠습니다. 저는 지식들을 좀더 효율적으로 배우길 원하고 배운 지식들이 좀 더 실용적이길 바랍니다. 

하지만 책 한권을 쓰면서 그 내용들이 독자에게 실용적인 지식이 될 수 있도록 꾸미는 것은 매우 어려운 일입니다. 주관과 객관 사이에서 어느 정도의 균형을 가져가야 하는지는 글을쓰면서 항상 부딛히는 문제이고 블로그 처럼 실수 할 것을 감안하고 매일매일 글을 쓰는 것과 달리 한번 출력되어 나온 글은 그때 부터 수정이 불가능하기 때문에 더욱더 심혈을 기울일 수 밖에 없습니다. 이 책을 아직은 모두 읽은 것은 아니지만 저자가 얼마나 고민하며 썼는지 충분히 느낄 수 있었습니다. 

짧게 해도 충분한 프로그램을 길게 작성하지 마라!
p.67

 

 프로그램을 만들다 보면 항상 부딛히는 실수 들이 간략하게 만들 수 있는 것을 장황하게 만드는 것들입니다.  코딩실력이 부족해서 이기도 하고 학습된 근면함이 깔끔한 코드를 망치기도 합니다.  결국 모든  프로그래머들이 추구 하는 것은 짧은 코드로 충분히 실행되는 아주 효율적인 프로그램을 만든는 것입니다. 물론 그 안에 제작자의 철학도 담겨 있다면 더할 나위 없겠지요. 

아직 공부를 계속 해나가야 하는 어쩌면 끊임없이 해나가야 하는 한명의 프로그래머로서 이 책은 생각해볼 문제들을 끊임없이 던져주고 있는 것 같습니다. 가볍게 읽어서는 그 너머의 진리에 도달 할 수 없을 것 같은 내공있는 책입니다.

 몇 번이고 다시 읽어봐야 할 책 "생가하는 프로그래밍" 이었습니다. 

반응형

댓글