• 프로그래밍 패턴
  • 프로그램을 작성하는 33가지 방법

  • 크리스티나 로페즈 지음
  • 이상주 옮김

  • 프로그래밍 & 프랙티스 시리즈 _ 010
  • ISBN: 9791158390051
  • 25,000원 | 2015년 07월 21일 발행 | 312쪽



『프로그래밍 패턴』은 1940년대 프랑스 작가 레몽 크노가 쓴 '문체 연습'이라는 책의 형식을 빌려 다양한 방법으로 프로그램을 작성하는 방법을 알려주는 책이다.

이 책에서는 단어 빈도 세기라는 간단한 주제로 무려 33가지 서로 다른 형식의 프로그램을 만들어 낸다. 누구나 흔히 생각해 낼 수 있는 전통적 방법부터 최신 기법에 이르기까지 다양한 방식으로 변주하며 그 예를 보여 준다. 더구나 예에 그치지 않고 실제 시스템을 설계할 때 어떤 식으로 활용할 수 있을지를 고민할 뿐만 아니라, 해당 형식이 어떻게 탄생하게 됐는지 그 배경을 살짝 엿보는 즐거움을 덤으로 얻을 수 있다.

『프로그래밍 패턴: 프로그램을 작성하는 33가지 방법』은 간단한 계산 작업(단어 빈도)을 사용해 여러 프로그래밍 형식에 관한 예를 보여 주며, 독자가 프로그램을 작성하고 시스템을 설계하는 다양한 방법을 이해할 수 있게 돕는다. 이 책은 온라인 코드 저장소에 있는 코드와 함께 이용할 수 있도록 구성했으며, 프로그래밍 기법을 규칙적으로 연습하는 누구나 접근할 수 있도록 공개한 그 코드를 보완하고 설명한다. 또한 컴퓨터 과학과 소프트웨어 공학 과정에 관한 고급 프로그래밍 강좌에서도 활용할 수 있다.

이 책에는 단어 빈도 작업을 작성하는 33가지 형식이 있으며, 이를 전통적, 기본, 함수 합성, 객체와 객체 상호작용, 반영과 메타프로그래밍, 재난, 데이터 중심, 병행성, 쌍방향성이라는 9가지로 범주로 나눈다. 저자는 각 형식의 제약조건을 말로 표현하고 예제 프로그램을 설명한다. 각 장마다 먼저 해당 형식의 제약조건을 제시하고 예제 프로그램을 보여준 후 그 코드를 상세히 설명한다. 게다가 대부분의 장에는 시스템을 설계할 때 해당 형식을 사용하는 것에 초점을 맞추는 절뿐만 아니라 그 형식이 나타난 역사적 맥락을 설명하는 절도 있다.

 

추천평

"이 책은 지난 20년간 프로그래밍에 관한 가장 중요한 책이다."

-- 제임스 노블, 뉴질랜드 웰링턴 빅토리아 대학교

 

"『프로그래밍 패턴: 프로그램을 작성하는 33가지 방법』은 명작이다. 크노의 문체 연습에 담긴 정신을 이어받아 크리스티나는 서로 다른 제약조건으로 인해 모양이 제각각인, 여러 프로그래밍 형식의 렌즈를 통해 일반적인 프로그래밍 문제를 살펴본다. 흔히 훌륭한 작가는 글을 (쓰기만 하는 게 아니라) 읽는다고 하듯 훌륭한 프로그래머에 관해서도 그렇게 얘기할 수 있을 것이다. 즉 다른 이의 형식을 읽고 그로부터 배운다. 크리스티나의 책은 언어와 관용구로 이뤄진 풍경을 통해 가장 보람찬 여행을 제공하며 전문 프로그래머가 자신의 솜씨를 더 향상시키는 데 도움을 준다."

-- 그래디 부치, IBM 연구소 소프트웨어 공학 수석 과학자이자 IBM 펠로우

 

"실제로 보지 않고 프로그래밍 형식을 평가하는 건 어렵다. 그런데 크리스티나는 이 책을 통해 놀라운 일을 해냈다. 동일한 프로그램을 아주 많은 형식으로 보여준다. 프로그램 자체는 간단하다. 하지만 그 결과는 문제를 어떻게 생각하느냐에 따라 매우 다른 프로그램을 만들어 낼 수 있다는 점을 깊게 이해할 수 있게 했다. 이 책을 통해 생각할 만한 몇 가지 새로운 형식을 알게 된 것뿐만 아니라, 이미 잘 알고 있고 매일같이 쓰고 있는 형식에 관해서도 무언가를 배웠다. 레몽 크노가 자랑스러워할 것이다."

-- 유진 월링포드, 북아이오와 대학교 컴퓨터 과학과 부교수

크리스티나 로페즈(Cristina Videira Lopes)

크리스티나 로페즈는 캘리포니아 대학교 어바인 캠퍼스의 도널드 브렌 정보·컴퓨터 과학 대학원에서 정보과학과 교수로 재직 중이며, 대규모 정보 및 시스템을 위한 소프트웨어 공학에 관해 연구하고 있다. 경력 초기에는 제록스 PARC에서 관점 지향 프로그래밍과 AspectJ를 개발한 팀의 창립멤버였다. 자신의 연구 프로그램과 더불어 많은 것을 개발한 소프트웨어 개발자이기도 하다. 음향 소프트웨어 모뎀을 비롯해 가상 세계 서버인 OpenSimulator 등 오픈소스에도 기여하고 있으며, 초기 단계의 지속 가능한 도심 재개발 계획을 위한 온라인 가상 현실에 특화된 회사의 공동 설립자다. OpenSimulator 기반 가상 세계를 위한 검색 엔진을 개발했으며, 이를 관리하고 있다.

이상주

반도체 장비 프로그래머이며 인적 드문 블로그(http://surpreem.com)와 트위터(@spreem)에 어쩌다 한 번씩 글쓰기가 취미다. 과거 우연한 기회로 시작한 프로그래밍 서적 번역은 어느덧 네 번째에 이르렀으나 그 주기가 너무 길어 취미인 듯 취미 아닌 취미 같은 일이냐는 말을 들으며 스스로도 헷갈려 하고 있다. 최근엔 때늦게 파이썬 배우기에 열중하는 중이다.

  • ▣ [1부] 전동적 형식
    • 01장: 그리운 옛날
    • 02장: 포스로
    •  
  • ▣ [02부] 기본 형식
    • 03장: 일체식
    • 04장: 요리책
    • 05장: 파이프라인
    • 06장: 코드 골프
    •  
  • ▣ [03부] 함수 합성
    • 07장: 무한 거울
    • 08장: 앞으로 차기
    • 09장: 유일
    •  
  • ▣ [04부] 객체와 상호작용
    • 10장: 사물
    • 11장: 우편함
    • 12장: 닫힌 맵
    • 13장: 추상사물
    • 14장: 할리우드
    • 15장: 게시판
    •  
  • ▣ [05부] 반영과 메타프로그래밍
    • 16장: 자기관찰
    • 17장: 반영
    • 18장: 애스펙트
    • 19장: 플러그인
    •  
  • ▣ [06부] 재난
    • 20장: 구성주의
    • 21장: 발끈하기
    • 22장: 수동공격
    • 23장: 선언한 의도
    • 24장: 격리
    •  
  • ▣ [07부] 데이터 중심
    • 25장: 영속 데이터
    • 26장: 스프레드시트
    • 27장: 게으른 강
    •  
  • ▣ [08부] 병행성
    • 28장: 행위자
    • 29장: 데이터 공간
    • 30장: 맵리듀스
    • 31장: 이중 맵리듀스
    •  
  • ▣ [09부] 쌍방향성
    • 32장: 삼위일체
    • 33장: REST 방식

예제코드 관련 깃허브 페이지

관련 글