프로그래밍의 근본적 결함과 선언적 패러다임 제안

Source

  • Evernote/Technote scraps/I want to fix programming jonbho.md

Summary

저자(jonbho)는 20 년 이상의 개발 경험을 바탕으로 현재 프로그래밍 방식이 근본적으로 결함되어 있다고 주장한다. 기존 명령형/객체지향/함수형 프로그래밍은 ‘어떻게(HOW)’ 수행할지 단계별 지시를 내려야 하므로, 상태 관리의 복잡성으로 인해 버그가 필연적으로 발생하며 테스트로 완전히 검증할 수 없다고 비판한다. 이에 저자는 ‘무엇을(WHAT)’ 원하는지 결과의 속성만 정의하고, 컴파일러가 수행 방법(HOW)을 추론하도록 하는 새로운 선언적 프로그래밍 패러다임을 제안한다. 정렬 알고리즘 예시를 통해 입력과 출력의 관계 및 출력의 순서 속성만 정의하는 의사코드를 제시하며, 이는 버그의 원인이 되는 구현 세부사항을 제거할 수 있음을 보여준다.

Key Points

  • 현재 프로그래밍은 단계별 지시 (HOW) 에 기반하여 상태 오류, 메모리 누수, 무한 루프 등 버그가 빈번히 발생하며, 이는 언어의 근본적 한계이다.
  • 100% 코드 커버리지 테스트도 모든 상태 조합을 검증할 수 없으며, 다중 스레딩은 문제를 더욱 악화시킨다.
  • 함수형 프로그래밍도 여전히 단계적 계산에 의존하므로 근본적인 해결책이 아니다.
  • 이상적인 코드는 ‘원하는 결과의 속성 (WHAT)’ 만 정의하고, 수행 방법을 컴파일러에 위임해야 한다.
  • 정렬 예시: 버블 정렬 등의 알고리즘 구현 대신, ‘입출력 요소의 일대일 대응’과 ‘출력 리스트의 단조증가 속성’만 정의하는 선언적 접근을 제안.