2P by GN⁺ 24시간전 | ★ favorite | 댓글 1개

자연어 프로그래밍의 어리석음에 대한 비판

  • 자동 계산기 초창기부터, 형식적인 기호 체계를 요구하는 프로그래밍 방식에 불만을 가진 사람들이 존재함
  • 기계는 주어진 명령을 그대로 수행하는 '충실한 노예'로서, 명백한 오류도 그대로 실행함
  • 일부 사람들은, 기계가 오류를 무시하고 실행하는 대신, 더 ‘이성적인’ 행동을 하길 기대함

고급 프로그래밍 언어의 등장과 발전

  • 기계어는 오류 검출이나 중복이 거의 없어 위험한 인터페이스로 인식됨
  • 이에 따라 고급 프로그래밍 언어가 등장하게 되었으며, 오류 메시지로 잘못된 결과를 방지하는 발전이 있었음
  • 그러나 여전히 프로그래밍은 형식 기호를 요구하며, 여전히 세심한 정확성이 필요함

자연어로 프로그래밍하자는 주장과 그에 대한 반론

  • 자연어로 기계를 제어하면 사용자는 편해질 것이라는 주장이 있었음
  • 이는 기계가 더 복잡해지면서, 사용자에게 도움이 될 수 있다고 보았음
  • 하지만 인터페이스의 변화는 일의 분담을 조절하는 것이 아니라, 오히려 협력과 소통의 작업량을 추가로 유발함
  • 실제로는 인터페이스가 넓어질수록 양측의 작업량이 증가하여 오히려 복잡해지는 경우가 많았음

수학과 기호 체계의 역사적 사례

  • 고대 그리스 수학은 언어적·그림 중심의 방식에 머물러 발전이 정체됨
  • 이슬람 수학도 기호 체계를 채택하지 못해 중단됨
  • 유럽은 Vieta, Descartes, Leibniz, Boole 등의 인물들이 형식 기호 체계를 도입하면서 비약적인 발전을 이루었음

형식 언어의 이점과 자연어의 한계

  • 형식 언어는 몇 가지 간단한 규칙만으로 많은 오류를 방지할 수 있음
  • 형식 기호는 과거에는 천재만이 가능했던 논리적 사고를 학생도 가능하게 함
  • 자연어는 애매하고 의미 없는 말이 섞이기 쉬워, 오류 없는 논리적 표현에 적합하지 않음

자연어가 주입/출력의 유일한 방식이었다면?

  • 초기부터 자연어만으로 기계를 제어했다면, 우리는 결국 다시 형식 시스템으로 돌아가는 ‘부트스트랩’ 과정이 필요했을 것임
  • 이 과정은 수천 년이 걸릴 수도 있었으며, 결국 형식 언어로 귀결되었을 것임

교육적 퇴보와 ‘신 문맹’ 현상

  • 최근 수십 년간 지적 훈련의 약화로, 많은 사람이 자신의 모국어조차 제대로 다루지 못함
  • 과학 논문, 기술 보고서, 정부 문서 등에서 무의미한 말이 넘쳐나는 현상이 이를 증명함
  • 이러한 현상은 자연어 프로그래밍의 실패를 예견하게 함

결론적 직감

  • 자연어로 프로그래밍 가능한 기계를 만드는 일은 그것을 사용하는 일만큼이나 어려울 것이
Hacker News 의견
  • 사람들이 LLMs(대형 언어 모델)을 옹호하는 것이 멋지다는 의견이 있음

    • 반대로, 중간 복잡도의 프로젝트를 코드에서 자연어로 변환하면 어떻게 될지 궁금함
    • 소스 코드의 행동과 요구사항을 충분히 설명할 수 있는지, 자연어 설명이 더 이해하기 쉬운지 의문임
    • 복잡성과 정밀성을 관리하기 어려운 이유로 간단한 애플리케이션이 주로 시연됨
    • 법률 용어가 평범한 영어가 아닌 이유가 있음
  • Hal Abelson의 오래된 인용문이 떠오름

    • 컴퓨터 과학은 과학이 아니며, 컴퓨터와 관련이 적음
    • 컴퓨터 혁명은 사고 방식과 표현 방식의 혁명임
    • 수학은 '무엇'에 대한 정밀한 개념을 제공하고, 계산은 '어떻게'에 대한 정밀한 개념을 제공함
  • 자연어에는 인간의 정신적 한계에서 비롯된 제한이 있음

    • 프로그래머로서, 문제나 부조리가 코드 구현 후에야 명확해짐
    • 자연어로 정확히 설명하는 데 시간이 더 걸림
  • 기계어는 불필요하게 위험한 인터페이스로 인식됨

    • 고급 프로그래밍 언어가 개발되어 실수를 줄임
    • Rust는 실수를 명확히 지적하여 개발자에게 유리함
    • LLMs는 반쯤 지능적인 추측 게임처럼 느껴짐
    • Rust의 접근 방식이 더 선호됨
  • 자연어로 컴퓨터 프로그램을 생성하는 대신 직접 실행해야 함

    • 그래픽 시스템과 틱택토 프로그램의 예시가 주어짐
    • 파일 시스템과 멀티태스킹 OS에 대한 프롬프트도 필요함
    • 내년 4월 초에 이러한 발전을 기대함
  • 자연어는 규칙과 명령을 전달하는 데 적합하지 않음

    • 미국의 법률 해석 문제를 예로 듦
    • 컴퓨터 언어의 명확성과 책임감이 균형을 이룸
  • 특정 도메인을 위한 언어는 자연어가 제공할 수 없는 정밀성과 명확성을 제공함

    • 반대로 시도하면 더 많은 작업이 필요함
  • Forth, PostScript, Assembly는 코드 실행 환경과 잘 맞는 '자연' 프로그래밍 언어임

    • '자연'이란 인간과 컴퓨터 중 누구에게 자연스러운지를 묻는 것임
    • AI는 인간 언어를 컴퓨터에 자연스럽게 만들지 않음
    • AI는 자체 환경에 맞는 언어를 발명할 것임
  • 고급 프로그래밍 방법은 자연어보다 프로그래밍 언어처럼 보이기 시작할 것임

    • 프로그래밍을 원하지 않는다면, 프로그래밍을 수행할 지능을 지시할 방법이 필요함
    • 고급 지시 방법은 자연어보다 교육처럼 보일 것임
  • 실수가 오류 메시지로 나타나는 것이 큰 개선임

    • 일부는 오류 메시지를 무시할 수 없는 것을 더 귀찮아함
    • 프로그래밍 언어의 장점을 판단할 때, '프로그래밍의 용이성'을 실수의 용이성과 동일시하는 사람도 있음