IT

[북리뷰] 유연한 소프트웨어를 만드는 설계 원칙 (한빛미디어)

BoBooBoo 2022. 4. 24. 22:29
반응형

 

 

 

작성일: 2022. 4. 24. 일요일

내용: IT 개발 도서 리뷰

제목: 북리뷰 『유연한 소프트웨어를 만드는 설계 원칙』 - 막다른 골목 없이 진화하는 시스템 개발하기  (한빛미디어)

저자: 크리스 핸슨 , 제럴드 제이 서스먼 지음

옮김: 류광

분야: IT, 프로그래밍, 소프트웨어 설계

출간일 : 2022년 03월 30일 출간

 

 

 

유연한 소프트웨어를 만드는 설계 원칙 - 교보문고

막다른 골목 없이 진화하는 시스템 개발하기 | 크리스 핸슨과 제럴드 제이 서스먼이 설명하는 유연성을 위한 가산적 프로그래밍 마스터 클래스 소프트웨어 개발자들은 주로 특정한 작업을 아주

www.kyobobook.co.kr

 

SICP 의 저자, 제럴드 서스먼의 책 "설계 원칙"

  컴퓨터 프로그래밍의 예술 "The Art of Computer Programming" 과 UNIX 고급 프로그래밍 (Advanced Programming in UNIX Environment) 등 정말 좋은 책들이자 내가 몇번을 시도하고 완독하지는 못한 책들을 번역하신 류광님이 옮긴 설계와 관련된 새 번역책이 나왔다. 무려 SICP, Structure and Interpretation of COmputer Programsa 의 저자인 제럴드 서스먼이 공저자인 프로그래밍 설계와 관련된 책이다. 학교를 나온 이후로 설계와 관련해서 책을 하나 잡고 꾸준히 본게 얼마만인가 싶다. 책을 읽다보니 내용이나 난이도를 떠나서 오랜만에 초심으로 돌아가보고 싶은 생각이 들었다.

 

 

유연한 소프트웨어를 만드는 설계 원칙 (한빛미디어)

 

MIT 의 강의 자료로부터 만들어진 책

  "유연한 소프트웨어를 만드는 설계 원칙" 은 MIT 의 컴퓨터 프로그래밍 수업을 진행하면서 작성된 책이라고 한다. 학부생 고학년과 대학원생을 대상으로 하다보니 책의 난이도가 일반적인 IT 책 중에서도 상당히 높은 편에 속하는 것 같다. 개인적으로 어느 정도의 프로그램이 경험이 있어야, 혹은 작더라도 프로젝트를 진행한 경험이 있어야만 책의 내용이나 의도를 이해할 수 있을 것 같다. 특히 설계는 원칙이란게 있지않다보니 적당히 골라내서 보기도 해야하는데, 아마 저학년 수준에서는 힘들지 않을까싶다.

 

MIT 에서 수업을 진행하기 위해 만들어진 책으로 학부 고학년과 대학원생을 대상으로 한다.

 

책의 코드는 Scheme 으로 작성되었다.

  책의 코드는 스킴으로 작성되었다. 책의 저자 중 한명인 크리스 핸슨이 MIT/GNU Scheme system 의 주 저자 중 한명이다보니 그런 것 같다. Lisp 의 일종이라는데, 10여년 전 한번 어쩌다 한번 보고 그 이후로 들어본 적도 없던 언어를 새 책에서 만나니 반갑기도 하면서도 도대체 모르겠다.

 

이 책의 코드는 스킴 Scheme 으로 작성되었다.

 

Scheme 을 먼저 공부하거나, 예제를 자신의 주 언어로 바꿔 구현해보자.

  책의 첫 부분에는 대부분의 독자들에게는 생소한 프로그래밍 언어인 스킴을 사용하다보니 코드를 파악하는데 어려움이 있을 수 있다는 것을 확실하게 명시하고 있다. 과감하게 책을 덮고 스킴 공부를 먼저 하길 추천한다고 한다. 더불어 이 책의 예제들을 자신의 주 언어를 이용해서 구현해보면서 공부하는 방법도 추천하고 있다. 물론 훨씬 많은 시간을 투자해야될 것 같지만 개인적으로 정말 좋은 방법이라고 생각한다.

 

 

핵심은 "유연성"

  이 책의 핵심은 프로그래밍과 설계의 관점에서의 유연성이다. 1장에서 저자들이 생각하는 유연성에 대한 철학을 설명하면서 다양한 기법들을 소개하고 있다. 저자들은 효율성과 정확성만큼이나 유연성이 중요한 문제라고 주장하면서 많은 예제들과 연습문제를 이용해서 설명하고 있다. 2장은 DSL, Domain Specific Language (영역 특화 언어) 로 시스템을 구축하는 방법을 배우고 3장 이후에는 유연성 기법 중 하나인 generic procedure 과 pattern matching, unification 등 이름만 들어서는 무슨 소리인지 전혀 모를 듯한 기법들을 배우면서 유연성을 가지는 시스템을 구축하는 방법들을 배운다.

 

 

  책의 서문에서도 명확하게 밝히고 있는데, 이 책은 개괄서나 튜토리얼 수준이 아니다 마스터 클래스의 하나로 두 명의 저자가 작정하고 만든 책이다. 나 역시 가벼운 마음으로 읽기 시작했지만 내용도 어렵고 여전히 이걸 내가 읽을 이유가 있을까 생각이 든다. 어려우니까 온갖 핑계를 대기 시작하는 걸수도 있다.  정체기를 맞은 것 같은 요즘 새로운 분야를 공부하는 기분으로 차분하게 보고 있으니 은근 재밌기도 하지만 여전히 초심자에게, 혹은 다른 개발자들에게도 이 책을 굳이 보라고 권하기는 쉽지 않은 것 같다. 그래도 같이 보는 사람이 있으면 더 재밌게 읽을 수 있지 않을까.

 

 

끝.

 

 

 

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

반응형