← 메인으로

자연어 프로그래밍이라는 어리석음에 대하여

게시일: 2025년 12월 18일 | 원문 작성일: 1978년 7월 26일 | 저자: Edsger W. Dijkstra | 원문 보기

핵심 요약

다익스트라는 자연어로 컴퓨터를 프로그래밍하자는 제안에 반대해요. 형식적 기호 체계는 부담이 아니라 특권이라고 주장하죠.

  • 역사적 교훈 — 수학은 형식적 기호 체계를 도입한 후에야 발전했어요. 그리스 수학은 언어와 그림에 의존해서 정체됐고, 이슬람 대수학도 수사적 스타일로 돌아가면서 쇠퇴했어요.
  • 형식적 텍스트의 장점 — 형식적 텍스트를 조작하려면 몇 가지 단순한 규칙만 따르면 돼요. 자연어에서는 피하기 거의 불가능한 온갖 넌센스를 걸러내는 데 놀랍도록 효과적이에요.
  • 인터페이스의 양면성 — 인터페이스를 바꾸면 양쪽 모두의 부담이 줄어들 거라는 가정은 틀렸어요. 자연어로 바꾸면 기계의 부담도 늘고 사람의 부담도 늘 수 있어요.
  • 새로운 문맹 — 지적 훈련에서 멀어지면서 많은 사람들이 모국어조차 효과적으로 사용하지 못하게 됐어요. 학술 논문, 기술 보고서, 정부 문서에 의미 없는 말들이 넘쳐나요.
  • 결론 — 자연어 프로그래밍이 가능한 기계는 만들기도 어렵고, 만들어도 사용하기 어려울 거예요.

형식적 기호 체계를 싫어하는 사람들

자동 계산이 시작된 초기부터, 프로그래밍에 형식적 기호 체계의 정확성이 필요하다는 것을 단점으로 여기는 사람들이 있었어요. 그들은 기계가 주어진 명령을 엄격하게 따르는 것을 탓했죠. 잠깐만 생각하면 그 명령에 명백한 실수가 있다는 걸 알 수 있는데도 말이에요. “하지만 잠깐은 긴 시간이고, 생각은 고통스러운 과정이다.”1

그래서 그들은 더 현명한 기계가 나오길 열렬히 기다렸어요. 사소한 실수가 일으킨 터무니없는 동작을 거부할 정도로 똑똑한 기계 말이에요.

거의 아무런 중복성이 없는 기계어는 곧 인간과 기계 사이의 불필요하게 위험한 인터페이스로 인식됐어요. 이에 대한 대응으로 소위 “고급 프로그래밍 언어”가 개발됐고, 시간이 지나면서 어리석은 실수로부터 어느 정도 보호하는 방법을 배웠죠. 이제 많은 어리석은 실수가 잘못된 답 대신 오류 메시지를 내놓게 됐어요. 이건 의미 있는 개선이었죠.

(물론 이 개선조차 보편적으로 환영받지는 않았어요. 어떤 사람들은 무시할 수 없는 오류 메시지가 잘못된 결과보다 더 짜증스럽다고 느꼈거든요. 프로그래밍 언어의 장점을 평가할 때, 어떤 사람들은 여전히 “프로그래밍의 용이성”을 들키지 않는 실수를 얼마나 쉽게 만들 수 있느냐와 동일시하는 것 같아요.)

하지만 프로그래밍 언어에 해당하는 (추상적) 기계는 여전히 충실한 노예로 남았어요. 터무니없는 명령을 완벽하게 수행할 수 있는 무감각한 자동 장치 말이죠. 프로그래밍은 여전히 형식적 기호 체계의 사용이었고, 따라서 여전히 정확함이 필요했어요.

자연어 인터페이스라는 환상

기계를 훨씬 더 사용하기 쉽게 만들기 위해, 우리의 모국어로 명령할 수 있는 기계를 설계하자는 제안이 나왔어요. 물론 이렇게 하면 기계가 훨씬 더 복잡해지겠지만, 기계가 더 많은 부담을 지게 하면 우리의 삶은 더 쉬워질 거라고 주장했죠.

형식적 기호 체계를 사용해야 하는 의무를 어려움의 원천으로 본다면, 이 논리는 그럴듯하게 들려요. 하지만 이 논리가 타당할까요? 저는 의심스러워요.

우리는 이제 인터페이스의 선택이 단순히 (고정된 양의) 노동을 나누는 것이 아니라는 걸 알아요. 인터페이스를 넘어 협력하고 소통하는 데 드는 작업이 추가되거든요. 쓰라린 경험을 통해, 인터페이스를 바꾸면 양쪽 모두의 작업량이 급격하게 늘어날 수도 있다는 것을 배웠어요. 그래서 요즘은 “좁은 인터페이스”를 선호하게 됐죠.

따라서, 인간과 기계 사이의 소통을 인간의 모국어로 바꾸면 기계의 부담은 분명 크게 늘어나요. 하지만 그게 정말 인간의 삶을 단순화할까요? 의심해봐야 해요.

수학의 역사가 주는 교훈

수학의 역사를 간략히 보면 이 의문이 얼마나 정당한지 알 수 있어요. 그리스 수학은 언어적, 시각적 활동에 머물렀기 때문에 정체됐어요. 이슬람의 “대수학”은 기호화를 시도했다가 수사적 스타일로 돌아가면서 쇠퇴했어요. 현대 문명 세계가 등장할 수 있었던 건 — 좋든 나쁘든 — 서유럽이 중세 스콜라 철학의 족쇄에서 벗어날 수 있었기 때문이에요. 언어적 정밀성에 대한 헛된 시도였던 스콜라 철학 말이에요. 이 해방은 비에타, 데카르트, 라이프니츠, 그리고 (나중에) 조지 불 같은 사람들이 신중하게 설계한 형식적 기호 체계 덕분에 가능했어요.

형식적 텍스트의 장점은 그것을 조작할 때 몇 가지 단순한 규칙만 따르면 유효한 결과가 보장된다는 거예요. 생각해보면, 형식적 텍스트는 우리가 모국어를 사용할 때 거의 피할 수 없는 온갖 종류의 넌센스를 걸러내는 데 놀랍도록 효과적인 도구예요.

형식적 기호는 특권이다

형식적 기호를 사용해야 하는 의무를 부담으로 여기지 말고, 그것을 사용할 수 있는 편리함을 특권으로 여겨야 해요. 형식적 기호 덕분에 학교 아이들도 예전에는 천재만이 할 수 있었던 일을 배울 수 있게 됐어요.

(1977년에 어떤 기술 보고서 서문에 “명확성을 위해 논리적 연결사에 대한 표준 기호조차 피했다”라고 쓴 저자가 있었어요. 이 점을 분명히 이해하지 못한 거죠. 그리고 이런 문장이 버젓이 등장했다는 건 이 오해가 그 사람만의 것이 아니라는 걸 보여줘요.)

결국, 우리가 모국어를 “자연스럽게” 사용한다는 건 뭘까요? 그건 겉으로는 말이 되는 것 같지만 실제로는 넌센스인 문장을 쉽게 만들 수 있다는 거예요.

역사가 반복된다면

처음부터 모국어가 정보 처리 장비의 유일한 입출력 수단이었다면 어떻게 됐을까요? 제 추측으로는, 역사가 반복됐을 거예요. 컴퓨터 과학은 그 혼돈에서 어떻게든 잘 정의된 형식 체계로 끌어올리는 방법을 찾는 고도의 기술로 구성됐겠죠.

인터페이스를 사용할 만큼 충분히 좁게 만들려면 세상의 모든 지성이 필요할 거예요. 인류의 역사를 고려하면, 그 일을 제대로 하는 데 또다시 수천 년이 걸릴 거라고 해도 지나친 비관은 아닐 거예요.

참고: 새로운 문맹

지적 훈련에서 멀어지는 교육 경향의 결과로, 지난 수십 년간 서구 세계에서 사람들의 모국어 숙달 능력이 급격히 쇠퇴했어요. 이전 세대의 기준으로는 더 잘 알아야 할 많은 사람들이 더 이상 자신의 모국어를 효과적으로 사용하지 못해요. 자연어가 잘 맞을 것 같은 일에도 말이죠.

(학술 논문, 기술 보고서, 정부 문서 등에서 자세히 읽으면 의미 없는 말들이 실로 놀라울 정도로 많다는 것만 봐도 알 수 있어요.)

”새로운 문맹”이라고 알려진 이 현상을 보면, 자연어 프로그래밍을 믿는 사람들도 다시 생각해봐야 해요. 특히 그 실패를 기술적으로 예측할 통찰이 부족한 분들은요.

결론

한 가지 직감에서 많은 위안을 얻어요. 우리의 모국어 — 네덜란드어든, 영어든, 미국 영어든, 프랑스어든, 독일어든, 스와힐리어든 — 로 프로그래밍할 수 있는 기계는 만들기도 지독하게 어려울 것이고, 사용하기도 지독하게 어려울 거라고 생각해요.

역자 주

  1. A.E. 하우스만(A.E. Housman, 1859-1936): 영국의 고전문헌학자이자 시인. 다익스트라가 인용한 이 문장은 하우스만의 저서 The Name and Nature of Poetry(1933)에서 가져온 것으로, 원문은 “But a moment is a long time, and thought is a painful process.”예요.

저자: Edsger W. Dijkstra (1930-2002). 튜링상 수상자이자 컴퓨터 과학의 거장. 구조적 프로그래밍, 세마포어, 최단 경로 알고리즘(다익스트라 알고리즘) 등을 개발했어요. 이 글은 Burroughs Research Fellow로 재직하던 시절 네덜란드 누에넌에서 작성됐어요.

원문: EWD 667: On the foolishness of “natural language programming”

생성: Claude (Anthropic)

총괄: (디노이저denoiser)