유연한 소프트웨어를 만드는 설계 원칙 (막다른 골목 없이 진화하는 시스템 개발하기)

유연한 소프트웨어를 만드는 설계 원칙 (막다른 골목 없이 진화하는 시스템 개발하기)

$35.00
Description
누가 코드를 이렇게 짜놨어?
프로그래머들은 시간에 쫓기는 나머지, 어쩔 수 없이 제한된 용도로만 사용 가능한, 성장의 여지가 거의 없는 코드를 작성한다. 그로 인해 과거의 자신이 쌓은 벽에 가로막혀 코드를 새로 수정해야 하는 상황이 벌어지기도 한다. 하지만 최고의 시스템은 진화할 수 있는 유연성을 갖췄다. 기존 코드를 수정하는 대신 새 코드를 추가해 새로운 상황에 적응하는 가산적 프로그래밍을 활용한다. 이 책은 제럴드 제이 서스먼과 크리스 핸슨이 도합 100년이 넘는 프로그래밍 경험에서 발견한, 프로그래머가 막다른 골목을 피하는 데 도움이 되는 기법들을 담았다. 이 책은 동적으로 확장 가능한 일반적 프로시저처럼 극도로 강력하지만 잠재적으로 위험한 기법들도 소개한다. 각 장에는 연습문제와 리스프의 방언인 스킴으로 만들어진 예제 코드를 실었다. 천문 거리 계산에서 자동 미분, 어드벤처 게임에 이르기까지 다양한 예제를 살펴본다.
선정 및 수상내역
2023 대한민국학술원 우수학술도서 선정도서
저자

크리스핸슨

ChrisHanson
크리스핸슨은데이테라의기술직원이다.여러해동안MIT에서지내면서MIT/GNU스킴시스템의주저자로일했다.구글에서도10년간일했다.

목차

제1장자연과설계의유연성
1.1계산과건축
1.2유연성을위한똑똑한부품
1.3중복성과축중성
1.4탐색행동
1.5유연성의비용

제2장영역특화언어(DSL)
2.1조합자
2.2정규표현식
2.3래퍼
2.4문제영역의추상화
2.5요약

제3장산술주제의변형들
3.1산술연산의조합
3.2확장성있는일반적프로시저
3.3예제:자동미분
3.4효율적인일반적프로시저
3.5효율적인사용자정의형식
3.6요약

제4장패턴부합
4.1패턴
4.2항재작성
4.3부합기의설계
4.4통합부합
4.5그래프상의패턴부합
4.6요약

제5장평가
5.1일반적eval/apply해석기
5.2비엄격인수를가진프로시저
5.3실행프로시저로의컴파일
5.4탐색행동
5.5바탕후속프로시저들의노출
5.6큰힘과큰책임

제6장계층화
6.1계층활용
6.2계층화구현
6.3계층적산술
6.4값의의존성주해추가
6.5계층화의약속

제7장전파
7.1예제:별과의거리
7.2전파메커니즘
7.3다중대안세계관
7.4값들의병합
7.5가능한세계검색
7.6전파는축중성을가능하게한다

제8장맺음말

부록A지원소프트웨어
부록B스킴

출판사 서평

크리스핸슨과제럴드제이서스먼이설명하는
유연성을위한가산적프로그래밍마스터클래스

소프트웨어개발자들은주로특정한작업을아주잘수행하는소프트웨어를설계해왔다.이는과거의공학적실천의확장으로개별소프트웨어를좁은범위의작업만을수행하도록설계했다.이경우,풀고자하는문제가변하면소프트웨어도변해야한다.그런데,문제가조금만바뀌어도소프트웨어는크게바꾸어야할때가많다.유연성에초점을두고설계를진행하면환경변화에적응하는시스템을구축할수있다.작동중인프로그램을뜯어고칠필요없이,그냥새로운기능을구현한코드를추가하거나기존함수를새로운요구사항에맞게조정하는가산적프로그래밍을활용해진화하는시스템을만들어보자.

대상독자
● 유연성에집중한프로그램설계방식을알고싶은프로그래머
● 복잡한시스템을구축해야하는아키텍트

배우는내용
● 표준인터페이스를따르는짜맞춤방식으로작은함수부터산술패키지전체까지다양한구성요소를조립하는시스템구성법
● 측정단위나자료출처같은정보를담은독립적인주해를사용한데이터증강
● 통합이나전파를이용한독립적인부분정보조각조합
● 영역모형,규칙시스템,패턴부합,전파,의존성지향적역추적을이용한제어구조와문제영역분리
● 동적으로확장가능한평가자를이용한프로그래밍언어확장