언어와 설계의 분리 (Language ≠ Design)
별칭: 언어와 설계의 분리 · Language Design Separation
언어와 설계의 분리 (Language ≠ Design)
프로그래밍 언어는 집행 매체. 설계는 사고 행위. 둘은 본질이 다르다.
1. 한 줄 정의
언어와 설계의 분리 = 프로그래밍 언어는 컴파일러·AI 가 이해하는 매체이지만, 설계는 사람이 문제를 분해하는 사고 행위. 두 영역은 70 년간 항상 별도의 도구를 가졌다.
2. 분리의 증거 — 시대별 짝 기록
| 시대 | 언어 (집행 매체) | 설계 (사고 도구) |
|---|---|---|
| 1950s | FORTRAN | 플로차트 + 의사결정표 |
| 1970s | C | HIPO + DFD |
| 1990s | Java | UML |
| 2010s | Python | Scrum + 사용자 스토리 |
| 2020s | Python (AI) | CLAUDE.md + Spec-driven |
→ 모든 시대에 두 영역이 동시에 존재. 한 영역이 다른 영역을 대체한 적 없음.
3. 분리가 무너지는 듯 보였던 순간 (반례 분석)
3.1. 코드 자체가 설계다 운동 (1990s 애자일)
- 주장: "훌륭한 코드는 자기 자신이 설계 문서다"
- 결과: 일정 부분 사실. 그러나 팀 협업 + 장기 유지보수에서는 별도 설계 도구 필수
- 결론: 분리 무너지지 않음
3.2. Self-Documenting Code (2000s)
- 주장: 변수명·함수명을 잘 지으면 주석 불필요
- 결과: 코드 내부 구조에는 적용. 시스템 아키텍처에는 적용 ❌
- 결론: 분리 유지
3.3. AI 시대 (2024~)
- 주장: "자연어로 AI 한테 시키면 그게 코드"
- 결과: 자연어 = 언어가 아니라 새로운 설계 매체. 즉 언어와 설계가 다시 분리되어 언어 = AI 가 만든 Python·Rust, 설계 = 자연어 (CLAUDE.md, Spec).
- 결론: 분리 재확인
4. AI 시대의 통찰 (★ 강의 결론)
자연어가 마지막 추상화 계단. 그러나 자연어 자체는 언어가 아니라 설계 매체. AI 가 자연어 → Python·Rust 로 번역하는 시대에:
- 언어 = AI 출력 (Python, Rust, etc.)
- 설계 = AI 입력 (CLAUDE.md, Spec, Plan-First)
→ 본 분리가 70 년 만에 가장 명확해짐.
→ entity/natural-language-prompt · entity/claude-md-agents-md · entity/spec-driven-development
5. 강의 활용
이 concept 은 강의 본론 진입의 전환점:
"여러분이 자연어로 AI 에게 시키는 그 순간, 여러분은 언어를 작성하는 게 아닙니다. 설계를 작성하는 겁니다. 그래서 강의 표어가 설계 없이는 코딩이 안된다 입니다."
→ lesson/vch-intro-master-design-永 · concept/no-design-no-code
6. 출처
- entity/algol-60 (1958 BNF — 언어를 설계하기 전에 종이에 형식 기록)
- entity/lisp (1958 람다 계산법 — 수학이 30 년 앞서 종이에 기록됨)
- entity/apl (1979 튜링상 Notation as a Tool of Thought)
- entity/eiffel (1986 Design by Contract — 설계가 코드와 분리)
- entity/spec-driven-development (2024 Spec Kit — 언어와 설계 분리의 산업적 증명)