수도쿠 사건: 소프트웨어 설계에 대한 두 가지 접근 방식
2025-02-05
이 글은 Ron Jeffries와 Peter Norvig이 수도쿠 솔버를 만든 경험에 대한 이야기입니다. Jeffries는 점진적인 설계 접근 방식을 사용하여 간단한 List[Option[Int]] 표현으로 시작하여 반복적으로 개선하여 최종적으로 솔버를 완성했습니다. 하지만 결과 코드는 장황하고 우아하지 못했습니다. 반면 Norvig는 탐색 알고리즘 전문 지식을 활용하여 Map[Coord, Set[Int]] 표현을 사용하여 간결하고 효율적인 코드를 작성하고 제약 전파를 보여주었습니다. 이 글에서는 이러한 설계 철학을 비교하고 도메인 지식이 코딩 스타일에 미치는 영향을 강조하며 소프트웨어 설계 방법론에 대해 숙고하도록 권장합니다.
개발
프로그래밍 철학