gamg***
2022-04-25

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