개발 관련 필독서에 항상 상위에 올라오는 책들이 있다. 하지만 그 책들을 온전히 받아들이고 흡수할 수 있느냐는 다른 얘기다. 이 책 “유연한 소프트웨어를 만드는 설계원칙”도 그런 책 중 하나라고 생각이 든다. 내가 처음부터 이런 말로 시작하는 이유는 책 내용이 그만큼 쉽지 않기 때문이다.
가산적 프로그래밍 Additive programming
저자들이 이 책을 통해 “요구사항이 변해도 작동 중인 프로그램을 뜯어고칠 필요 없이, 그냥 새로운 기능을 구현한 코드를 추가하거나 기존 함수를 새로운 요구사항에 맞게 조정할 수 있어야 한다” 라는 핵심 가치를 가산적 프로그래밍 이라고 부른다. 사실 이 책의 핵심 주제는 위의 저 문장안에 모두 들어있다고 보면된다. 그리고 책에서는 이를 추구하기 위한 기법들을 소개한다.
사실 이 주제가 특별한건 아니다. 이를 다루는 책들도 많으며, 지겹도록 듣는 “객체지향 프로그래밍의 특징과 원칙”, “디자인 패턴” 들의 태생도 별반 다르지 않기 때문이다. 다만, 이 책의 차별점이자 개인적으로 느끼는 단점으로는 저자들의 설명이 단순하지 않고, 어려운 비유를 들고 있다는 것이다.
생체계들은 견고성을 엄청나게 진화시켰다. 생체계의 한 가지 특징은 중복성이다. 간이나 콩팥 같은 장기는 중복성이 높다. …
유전 부호 자체가 충중적이다. 코돈에서 아미노산으로의 사상은 일대일 사상이 아니다. …
제 1장의 제목인 “자연과 설계의 유연성”에서도 알 수 있듯이 책 전반에 있어서 이런 내용을 기반으로 설명을 한다. 개인적으로는 이런 비유들은 한번 읽어서는 오히려 각 챕터별 주제를 이해하는데 방해가 되기도 했다. 즉, 나의 수준이 못 따라간다고 해야할 것 같다.
함수형 프로그래밍
책의 예제로 사용되는 언어인 ‘스킴’은 “함수형 프로그래밍과 절차적 프로그래밍을 지원하는 다중패러다임 프로그래밍 언어” 라고 정의하고 있는데, 책에서 설명하고 있는 많은 기법들을 읽다보면 함수형 프로그래밍을 떠올리게 되었다. 작은 단순한 함수들의 조합으로 더 크고 복잡한 시스템을 구축할 수 있는 강력함을 맛보게 해주는 것 같았다. 하지만 함수형 프로그래밍에 익숙하지 않은 나와 같은 사람에게는 다소 개념들이 어렵게 다가오고, 스킴이라는 언어 또한 그리 친절하진 않았다. 처음엔 수도코드 수준으로 읽어지겠지 싶었지만, 전혀 그렇지 못했다.
조금은 학술적인…
저자 중 한 분은 컴퓨터 프로그램의 구조와 해석 이 책의 저자이기도 한데, 이 책 또한 가벼운 책은 아니다. 이 처럼 읽는데 어려움을 느끼다보니, 내용에 있어서 실용적이기 보다는 학술적인 내용으로 읽혀질 수 밖에 없었다. 저자들의 지식을 온전히 흡수하기 위해서는 중급 이상의 내공을 필요로 한다고 본다.
“한빛미디어 <나는 리뷰어다=""> 활동을 위해서 책을 제공받아 작성된 서평입니다."나는>