"자연어 프로그래밍"의 어리석음에 대하여 (EWD 667)

ko생성일: 2025. 9. 22.갱신일: 2025. 9. 22.

자연어로 컴퓨터를 프로그래밍하자는 발상의 문제점을 지적하며, 형식적 기호 체계의 장점과 역사적 교훈을 통해 자연어 인터페이스의 한계를 논한다.

"자연어 프로그래밍"의 어리석음에 대하여.

전자 계산의 초창기부터 우리는 프로그래밍이 어떤 형식적 기호를 사용할 때 요구되는 주의와 정확성을 요구한다는 사실을 결함으로 느끼는 사람들을 보아 왔다. 그들은 기계적 노예가 주어진 지시를 한 치의 어김도 없이 따르는 엄격함을 탓했는데, 잠깐만 생각해 보아도 그 지시들에 명백한 실수가 들어 있다는 것을 알아차릴 수 있었을 경우에도 그랬다. “하지만 한순간이라는 것도 긴 시간이고, 생각은 고통스러운 과정이다.”(A. E. 하우스먼) 그들은 그때 그때 사소한 사무상의 실수가 불러낸 터무니없는 활동에는 착수하기를 거부하는, 더 이성적인 기계를 열망하며 기다렸다.

거의 모든 형태의 중복성이 결여된 기계어는 곧 사람과 기계 사이의 불필요하게 위험한 인터페이스로 간주되었다. 이 인식에 대한 대응의 일부로 소위 “고급 프로그래밍 언어”가 개발되었고, 시간이 흐르면서 우스꽝스러운 실수로부터의 보호를 어느 정도 강화하는 법을 우리는 배웠다. 많은 우스운 실수가 잘못된 답을 내는 대신 오류 메시지를 발생시키게 된 것은 큰 개선이었다. (그리고 이 개선조차 보편적으로 환영받지는 못했다. 어떤 사람들은 무시할 수 없는 오류 메시지가 잘못된 결과보다 더 성가시다고 느꼈고, 프로그래밍 언어의 상대적 장단을 평가할 때 여전히 “프로그래밍의 용이성”을 미탐지된 실수를 저지르기 쉬운 정도와 동일시하는 이들도 있다.) 그러나 프로그래밍 언어에 대응하는 (추상) 기계는 여전히 충실한 노예로 남아 있었다. 즉, 비상식적인 지시를 완벽하게 수행할 수 있는 비상식적 자동장치였던 것이다. 프로그래밍은 형식적 기호를 사용하는 행위로 남았고, 그만큼 예전과 다름없이 주의와 정확성을 요구했다.

기계를 훨씬 더 사용하기 쉽게 만들기 위해, 우리의 모국어로 기계에 지시할 수 있는 기계를 설계하자는 제안이 있어 왔다. 이렇게 하면 기계가 훨씬 더 복잡해지기는 하겠지만, 기계가 더 많은 부담을 짊어지게 함으로써 우리 삶은 더 쉬워질 것이라고 주장되었다. 형식적 기호를 사용해야 하는 의무를 어려움의 근원으로 탓한다면 그 말은 그럴듯하게 들린다. 하지만 그 주장은 타당한가? 나는 의심스럽다.

우리는 이제 인터페이스의 선택이 단순히 (고정된 양의) 노동을 나누는 문제가 아니라는 것을 안다. 인터페이스를 넘어 협력하고 소통하는 데 드는 일이 추가되기 때문이다. 우리는—덧붙이자면, 각성케 하는 경험을 통해—인터페이스의 변경이 울타리의 양쪽 모두에서 해야 할 일의 양을 쉽게 (심지어 급격히) 늘릴 수 있음을 알게 되었다. 따라서 지금은 소위 “좁은 인터페이스”에 대한 선호가 커졌다. 그러므로 기계와 사람 사이의 소통을 사람의 모국어로 바꾸는 일이 기계의 부담을 크게 늘릴 것임은 분명하지만, 그것이 사람의 삶을 단순화하리라는 가정은 의심해 보아야 한다.

수학의 역사만 잠깐 들여다봐도 이 도전이 정당함을 알 수 있다. 그리스 수학은 언어적이고 도식적인 활동에 머물렀기 때문에 막다른 골목에 이르렀고, 이슬람권의 “대수학”은 형식 기호를 소심하게 시도한 뒤 수사적 문체로 회귀하면서 숨을 거두었다. 현대 문명 세계는—좋든 나쁘든—서유럽이 중세의 스콜라 철학—언어적 정밀함에 대한 헛된 시도!—의 족쇄에서 벗어날 수 있었을 때에야 비로소 등장할 수 있었다. 이는 비에타, 데카르트, 라이프니츠, 그리고(후대의) 불과 같은 이들에게 빚지고 있는, 세심하게—적어도 의식적으로—설계된 형식 기호 체계 덕분이었다.

형식적 텍스트의 미덕은, 그 조작이 정당성을 가지려면 몇 가지 간단한 규칙만을 만족하면 된다는 데 있다. 곰곰이 생각해 보면, 이러한 텍스트는 모국어를 사용할 때는 거의 피하기 어려운 온갖 허튼소리를 배제하는 데 놀라울 만큼 효과적인 도구다.

형식 기호를 써야 한다는 의무를 짐으로 여기기보다, 그것을 사용할 수 있는 편의를 특권으로 여겨야 한다. 그 덕분에 이제는 학생들이, 옛날이라면 오직 천재만이 성취할 수 있었던 일을 배울 수 있기 때문이다. (이는 1977년에 한 기술 보고서의 서문에서 “명료성을 위해 논리 연결사에 쓰이는 표준 기호조차 피했다”고 썼던 저자가 분명 이해하지 못한 바다. 그 문장이 존재한다는 사실은 그 저자의 오해가 그에게만 국한되지 않음을 시사한다.) 결국, 우리가 모국어를 “자연스럽게” 사용한다는 것은, 그 언어들로 그 허튼소리가 즉각 드러나지 않는 진술을 손쉽게 만들어낼 수 있다는 점으로 귀결된다.

처음부터 우리 모국어만이 정보처리 장치의 입력과 출력의 유일한 매개였다면 어떻게 되었을지를 상상해 보는 것은 유익할지 모른다. 숙고 끝에 내리는 나의 추측은, 역사—어떤 의미에서는—가 되풀이되었으리라는 것, 그리고 컴퓨터 과학이 주로 그 지점으로부터 충분히 잘 정의된 형식 시스템으로 부트스트랩하는 방법이라는, 실로 ‘흑마술’에 가까운 것들로 이루어졌으리라는 것이다. 우리는 인터페이스를 쓸 수 있을 만큼 충분히 좁게 만들기 위해 세상 모든 지성을 총동원해야 했을 것이고, 인류의 역사를 감안할 때 그 일을 제대로 해내려면 다시 몇천 년이 필요하다고 추정하는 것이 지나치게 비관적이지도 않을 것이다.

주: 지적 훈련에서 멀어지는 교육적 추세의 결과, 지난 수십 년 동안 서구 사회에서는 사람들이 자기 언어를 다루는 능력이 급격히 쇠퇴했다. 이전 세대의 기준으로 보면 더 잘 알았어야 할 많은 사람들이, 그 언어가 충분히 적합한 용도에서조차 더 이상 자신의 모국어를 효과적으로 사용하지 못한다. (과학 논문, 기술 보고서, 정부 간행물 등에서 자세히 읽어 보면 의미가 없는 군말이 실로 놀랄 만큼 많다는 사실만 보아도 충분하다.) “새로운 문맹”으로 알려진 이 현상은, 그 실패를 예견하는 데 필요한 기술적 통찰이 결여된 자연어 프로그래밍 신봉자들의 의욕을 꺾어야 한다. (주 끝.)

나에게 큰 위안을 주는 직감 하나가 있다. 우리 모국어—네덜란드어, 영어, 미국식 영어, 프랑스어, 독일어, 또는 스와힐리어—로 프로그래밍해야 하는 기계는, 사용하기 어려운 만큼이나 만들기도 지독히 어려울 것이라는 의심이다.