---
title: 퇴화성
tags: [concept, SDF]
sources: [SDF-ch1-flexibility, SDF-ch7-propagation]
updated: 2026-04-30
---

# 퇴화성

## 한 줄 정의

동일한 목적을 달성하는 *서로 다른* 복수의 메커니즘을 보유함으로써, 하나가 실패해도 다른 방법이 작동하고, 여러 메커니즘의 부분 정보를 결합하면 단일 메커니즘보다 더 정확한 결과를 얻는 설계 원칙.

## 핵심 내용

### 퇴화성 vs 중복성

이 두 개념의 구분이 SDF의 핵심 통찰 중 하나다:

- **중복성(redundancy)**: *동일한* 기능의 여분 용량. 신장이 두 개인 것처럼. 하나가 고장 나면 다른 하나가 같은 일을 한다.
- **퇴화성(degeneracy)**: *서로 다른* 메커니즘이 동일한 목적을 달성. 면역 시스템의 여러 항체 유형처럼.

퇴화성이 중복성보다 강력한 이유:

1. **서로 다른 버그**: 동일한 코드를 복사한 중복은 같은 버그를 공유한다. 서로 다른 메커니즘은 서로 다른 약점을 가지므로, 하나의 장애가 전체 실패로 이어지지 않는다.
2. **정보 결합**: 서로 다른 방법으로 얻은 부분 정보를 결합하면 어느 단일 방법보다 더 정확한 결과를 낼 수 있다. 중복은 이 이점을 제공하지 못한다.
3. **진화적 유연성**: 서로 다른 메커니즘은 서로 다른 맥락에서 다른 방식으로 발전할 수 있다. 중복은 항상 함께 움직여야 한다.

### 생물학적 유추

SDF의 퇴화성 개념은 생물학에서 직접 차용된다. 면역계, 유전자 조절 네트워크, 신경계는 모두 퇴화적 구조를 가진다. 인간의 위치 인식은 GPS, 관성 항법, 시각 단서, 기압계를 동시에 활용하고 일관된 위치 추정을 위해 결합한다.

항법 시스템 예시:
- 여러 독립적 센서가 동일한 위치를 다른 방법으로 추정
- 각 추정은 오차 구간을 가진 부분 정보
- 구간의 교집합이 더 정확한 위치 추정

### 소프트웨어 시스템에서의 퇴화성

퇴화성을 소프트웨어에서 구현하는 방법들:

**다중 핸들러 (Ch3)**: 동일한 제네릭 프로시저에 여러 타입에 대한 핸들러를 등록하는 것은 퇴화적이다. 각 핸들러는 독립적인 구현이며, 특정 타입에 대해 어떤 핸들러가 "더 특수한" 처리를 하는지 결정될 수 있다.

**다중 전파기 (Ch7)**: 여러 전파기가 동일한 셀에 값을 제공할 수 있다. 셀은 이 값들을 병합하여 더 정확한 결과를 얻는다. 새 추정 방법은 새 전파기로 추가되며, 기존 구성을 바꾸지 않는다.

```scheme
;; Vega까지의 거리를 두 독립 방법으로 추정
(tell! Vega-parallax-distance interval-1 'FGWvonStruve1837)
(tell! Vega-parallax-distance interval-2 'HipparcosSatellite)
;; 시스템이 자동으로 두 구간의 교집합을 계산
```

**레이어링 (Ch6)**: 동일한 계산에 기본 레이어, 단위 레이어, 의존성 레이어가 병렬로 실행되는 것도 퇴화적이다. 기본 계층만 실패해도 메타데이터 레이어는 독립적으로 작동한다.

**대안 구현 제안 (Ch6, 레이어링의 확장)**: SDF는 레이어에 "대안 구현 제안"을 담을 수 있다고 언급한다. 이는 퇴화적 구현을 시스템 내에 명시적으로 등록하는 방법이다.

### 탐색적 행동(Exploratory Behavior)과의 연결

Ch1에서 소개되는 생성-검증(generate-and-test) 메커니즘은 퇴화성의 절차적 형태다. 생성기는 여러 후보를 만들고, 검증기는 하나씩 검사한다. 여러 후보 전략이 독립적으로 발전할 수 있다.

백트래킹 탐색(Ch4, Ch5의 amb, Ch7의 의존성 지향 백트래킹)은 이 패턴의 계산적 구현이다. 각 선택지가 독립적인 "메커니즘"이고, 실패한 선택지는 건너뛰고 다른 선택지를 시도한다.

### 가산성과의 관계

퇴화성은 가산적 프로그래밍의 자연스러운 결과이기도 하다. 새 메커니즘을 추가하는 것만으로(기존 메커니즘을 수정하지 않고) 퇴화성을 강화할 수 있다.

전파 모델(Ch7)에서:

> "The structure is additive: new ways to contribute information can be included just by adding new parts to a network."

새 추정 방법 = 새 전파기 = 기존 구조에 가산적 추가 = 퇴화성 강화.

## SDF에서의 등장

- [[SDF-ch1-flexibility]]: 개념의 철학적 기반. 중복성과 퇴화성의 구분, 항법 시스템 예시, 생물학적 적응성에서의 영감
- [[SDF-ch7-propagation]]: 계산적 구현의 완성형. "퇴화성과 다중 소스" 섹션(7절)에서 명시적으로 등장. 여러 독립 전파기가 동일 셀에 값을 제공하고 병합

## 실천 시 주의점

**퇴화성 vs 불일치**: 여러 메커니즘이 같은 목적을 달성하되 서로 *일관성 있는* 결과를 내야 한다. 메커니즘들이 상충하는 결과를 낸다면 이는 모순이지 퇴화성이 아니다. 병합 정책과 모순 처리 전략이 필요하다.

**퇴화성의 관리 비용**: 여러 메커니즘을 유지하는 것은 비용이다. 각 메커니즘은 독립적으로 구현되고 테스트되어야 한다. 퇴화성이 가져다주는 견고성이 이 비용을 정당화하는지 판단이 필요하다.

**단순 중복과 혼동**: "혹시 몰라서 같은 로직을 두 번 작성"하는 것은 퇴화성이 아니라 중복이다. 퇴화성은 독립적으로 다른 방법으로 구현해야 가치가 있다.

**의도적 퇴화성 설계**: 퇴화성은 우연히 생기지 않는다. 시스템이 여러 정보 소스를 수용하고 병합하는 구조를 처음부터 설계해야 한다. 단일 "정답 경로"를 가정한 설계에 나중에 퇴화성을 추가하기는 어렵다.

## 관련 개념

- [[partial-information]] — 여러 메커니즘이 제공하는 부분 정보들을 병합하는 기반
- [[propagation]] — 퇴화적 추정을 자연스럽게 지원하는 계산 모델
- [[additive-programming]] — 새 메커니즘을 추가하는 가산적 방식으로 퇴화성 강화
- [[layered-data]] — 레이어가 퇴화적 메타데이터 처리를 지원
