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

자동 계산의 초기부터 프로그래밍에는 형식 기호를 사용할 때 필요한 세심함과 정확성이 요구된다는 점을 단점으로 여기는 사람들이 있었다. 그들은 기계라는 노예가 주어진 지시를 엄격하게 따르는 탓에, 잠시 생각만 해도 명백한 실수가 드러날 지시조차 그대로 실행한다고 비난했다. “하지만 잠깐은 긴 시간이고, 생각은 고통스러운 과정이다.”(A.E. 하우스먼(A.E.Housman)) 그들은 사소한 사무상의 실수가 불러일으킨 당시의 터무니없는 작업을 거부할 더 분별 있는 기계를 간절히 기대하며 기다렸다.

거의 어떤 중복성도 없는 기계어는 곧 사람과 기계 사이의 불필요하게 위험한 인터페이스로 지목됐다. 부분적으로는 이런 인식에 대응해 이른바 ‘고급 프로그래밍 언어’가 개발됐고, 시간이 흐르면서 어리석은 실수를 막는 보호 장치를 어느 정도 강화하는 방법도 배웠다. 어리석은 실수 가운데 많은 경우가 잘못된 답 대신 오류 메시지를 내게 된 것은 상당한 개선이었다. (이 개선조차 모두가 반긴 것은 아니었다. 어떤 사람들은 무시할 수 없는 오류 메시지가 잘못된 결과보다 더 성가시다고 여겼다. 프로그래밍 언어의 상대적 장점을 판단할 때 ‘프로그래밍의 쉬움’을 들키지 않는 실수를 저지르기 쉬운 정도와 같은 뜻으로 보는 사람도 여전히 있는 듯하다.) 그러나 프로그래밍 언어에 대응하는 (추상적인) 기계는 여전히 충실한 노예, 즉 터무니없는 지시도 완벽하게 실행할 수 있는 분별 없는 자동기계였다. 프로그래밍은 계속 형식 기호를 사용하는 일이었으며, 따라서 예전과 마찬가지로 세심함과 정확성을 요구했다.

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

이제 우리는 인터페이스를 선택하는 일이 단순히 (고정된 양의) 노동을 나누는 문제가 아니라는 사실을 안다. 인터페이스를 사이에 두고 협력하고 소통하는 데 드는 일도 더해야 하기 때문이다. 이제 우리는, 덧붙이자면 뼈아픈 경험을 통해, 인터페이스를 바꾸면 양쪽 모두 해야 할 일이 쉽게 늘어날 수 있다는 사실을 안다. 때로는 그 증가 폭이 매우 크다. 이 때문에 오늘날 ‘좁은 인터페이스’라고 부르는 방식에 대한 선호가 커졌다. 따라서 사람과 기계가 사람의 모국어로 소통하도록 바꾸면 기계의 부담은 크게 늘겠지만, 그것이 사람의 삶을 단순하게 만들 것이라는 가정에는 의문을 제기해야 한다.

수학의 역사를 간단히 살펴봐도 이런 의문이 정당함을 알 수 있다. 그리스 수학은 말과 그림에 의존하는 활동에 머물러 정체됐고, 상징화를 조심스럽게 시도했던 이슬람권의 ‘대수학’은 수사적 문체로 돌아가면서 쇠퇴했다. 서유럽이 비에타(François Viète), 데카르트(René Descartes), 라이프니츠(Gottfried Wilhelm Leibniz), 그리고 뒤이어 불(George Boole) 같은 이들이 만든 신중하게, 아니 적어도 의식적으로 설계된 형식 기호 덕분에 중세 스콜라 철학의 족쇄, 즉 언어로 정확성을 이루려는 헛된 시도에서 벗어난 뒤에야 근대 문명이 등장할 수 있었다. 그 결과가 좋았는지 나빴는지는 별개의 문제다.

형식 텍스트의 장점은 그 조작이 정당하려면 몇 가지 간단한 규칙만 따르면 된다는 것이다. 곰곰이 생각해 보면 형식 텍스트는 모국어를 사용할 때 거의 피할 수 없는 온갖 터무니없는 내용을 걸러 내는 놀라울 만큼 효과적인 도구다.

형식 기호를 써야 한다는 의무를 부담으로 여기기보다, 기호를 편리하게 사용할 수 있다는 점을 특권으로 여겨야 한다. 기호 덕분에 학생들은 예전에는 천재만 할 수 있었던 일을 배울 수 있다. (1977년 기술 보고서 서문에서 “명확성을 위해 논리 연산자에 쓰이는 표준 기호조차 사용하지 않았다”고 쓴 사람은 이 점을 분명히 이해하지 못했다. 그런 문장이 등장했다는 사실은 그 오해가 그 사람에게만 국한되지 않음을 시사한다.) 결국 우리가 모국어를 ‘자연스럽게’ 사용한다는 것은, 그 말로 터무니없음이 쉽게 드러나지 않는 문장을 만들기 쉽다는 뜻에 지나지 않는다.

처음부터 정보 처리 장치에 입력하고 그 장치에서 출력하는 유일한 수단이 모국어였다면 무슨 일이 일어났을지 상상해 보면 도움이 될 수 있다. 내 판단으로는 역사가 어떤 의미에서 되풀이됐을 것이고, 컴퓨터 과학은 그 출발점에서 충분히 명확하게 정의된 형식 체계로 나아가는, 실로 비밀스러운 기술을 주된 내용으로 삼았을 것이다. 인터페이스를 쓸 수 있을 만큼 좁히려면 온 세상의 지성이 필요했을 것이다. 인류의 역사를 보면 그 일을 충분히 잘 해내는 데 또다시 수천 년이 걸릴 것이라고 짐작해도 지나치게 비관적이지는 않을 것이다.

덧붙임. 지적 훈련을 멀리하는 교육 경향의 결과로, 지난 수십 년 동안 서구 세계에서는 사람들이 자신의 언어를 구사하는 능력이 급격히 떨어졌다. 이전 세대의 기준으로는 더 잘 알아야 할 사람들 가운데도 모국어를 효과적으로 쓰지 못하는 이가 많다. 모국어가 꽤 적합한 목적에조차 그렇다. (과학 논문, 기술 보고서, 정부 간행물 등에서 자세히 읽어야만 의미가 드러나는, 실로 놀라울 만큼 많은 무의미한 장황한 문구를 살펴보면 된다.) ‘새로운 문맹(The New Illiteracy)’이라고 알려진 이 현상은 자연어 프로그래밍을 믿으면서도 그것이 실패할 것이라고 예측하는 데 필요한 기술적 통찰력이 부족한 사람들을 단념시켜야 한다. (덧붙임 끝.)

한 가지 직감에서 위안을 얻는다. 네덜란드어든 영어든 미국 영어든 프랑스어든 독일어든 스와힐리어든, 모국어로 프로그래밍하는 기계는 사용하기만큼이나 만들기도 지독히 어려울 것이라고 나는 생각한다.