2 ポイント 投稿者 GN⁺ 2025-04-04 | 1件のコメント | WhatsAppで共有

自然言語プログラミングの愚かさに対する批判

  • 自動計算機の黎明期から、形式的な記号体系を要求するプログラミング方式に不満を持つ人々が存在した
  • 機械は与えられた命令をそのまま実行する「忠実な奴隷」として、明白な誤りもそのまま実行する
  • 一部の人々は、機械が誤りを無視して実行する代わりに、より「理性的」なふるまいをすることを期待した

高級プログラミング言語の登場と発展

  • 機械語は誤り検出や冗長性がほとんどなく、危険なインターフェースとして認識された
  • これに伴って高級プログラミング言語が登場し、エラーメッセージによって誤った結果を防ぐ発展があった
  • しかしそれでも、プログラミングは形式記号を要求し、依然として細心の正確さが必要である

自然言語でプログラミングしようという主張とそれへの反論

  • 自然言語で機械を制御すれば利用者は楽になるという主張があった
  • これは機械がより複雑になるにつれて、利用者に役立つと考えられていた
  • しかしインターフェースの変化は仕事の分担を調整するのではなく、むしろ協力とコミュニケーションの作業量を追加で発生させる
  • 実際にはインターフェースが広がるほど双方の作業量が増え、かえって複雑になる場合が多かった

数学と記号体系の歴史的事例

  • 古代ギリシャ数学は言語的・図形中心の方法にとどまり、発展が停滞した
  • イスラム数学も記号体系を採用できず、中断した
  • ヨーロッパでは Vieta、Descartes、Leibniz、Boole らが形式記号体系を導入し、飛躍的な発展を遂げた

形式言語の利点と自然言語の限界

  • 形式言語は、いくつかの簡単な規則だけで多くの誤りを防ぐことができる
  • 形式記号は、かつては天才だけに可能だった論理的思考を学生にも可能にする
  • 自然言語は曖昧で無意味な言葉が混じりやすく、誤りのない論理的表現には適していない

自然言語が入力/出力の唯一の方式だったとしたら?

  • 初期から自然言語だけで機械を制御していたなら、私たちは結局ふたたび形式システムへ戻る「ブートストラップ」の過程を必要としていただろう
  • この過程には数千年かかったかもしれず、結局は形式言語へと帰着したはずである

教育的退行と「新たな文盲」現象

  • ここ数十年の知的訓練の弱体化によって、多くの人が自分の母語すら十分に扱えなくなっている
  • 科学論文、技術報告書、政府文書などで無意味な言葉があふれている現象が、そのことを証明している
  • このような現象は、自然言語プログラミングの失敗を予見させる

結論的な直感

  • 自然言語でプログラミング可能な機械を作ることは、それを使うことと同じくらい難しい

1件のコメント

 
GN⁺ 2025-04-04
Hacker Newsの意見
  • 人々がLLMs(大規模言語モデル)を擁護するのは格好いいという見方がある

    • 逆に、中程度の複雑さのプロジェクトをコードから自然言語に変換したらどうなるのか気になる
    • ソースコードの振る舞いと要件を十分に説明できるのか、自然言語の説明のほうが理解しやすいのか疑問である
    • 複雑さと精密さを管理しにくいため、主に簡単なアプリケーションが実演されている
    • 法律用語が平易な英語ではないのには理由がある
  • Hal Abelsonの古い引用を思い出す

    • コンピューターサイエンスは科学ではなく、コンピューターともあまり関係がない
    • コンピューター革命は、思考の仕方と表現の仕方の革命である
    • 数学は「何を」についての精密な概念を与え、計算は「どのように」についての精密な概念を与える
  • 自然言語には人間の精神的な限界に由来する制約がある

    • プログラマーとして、問題や不条理さはコードを実装して初めて明確になる
    • 自然言語で正確に説明するほうがより時間がかかる
  • 機械語は不必要に危険なインターフェースだと認識されている

    • 高級プログラミング言語が開発され、ミスを減らした
    • Rustはミスを明確に指摘するため、開発者にとって有利である
    • LLMsは半ば知的な推測ゲームのように感じられる
    • Rustのアプローチのほうが好ましい
  • 自然言語でコンピュータープログラムを生成する代わりに、自然言語を直接実行すべきである

    • グラフィックシステムと三目並べプログラムの例が示される
    • ファイルシステムとマルチタスクOSに対するプロンプトも必要になる
    • 来年4月初めにはこうした進展を期待している
  • 自然言語は規則や命令を伝えるのに適していない

    • 米国の法律解釈の問題が例として挙げられる
    • コンピューター言語の明確さと責任の所在がバランスを取っている
  • 特定のドメイン向けの言語は、自然言語では得られない精密さと明確さを提供する

    • 逆を試みると、より多くの作業が必要になる
  • Forth、PostScript、Assemblyは、コード実行環境によく適合した「自然な」プログラミング言語である

    • 「自然」とは、人間とコンピューターのどちらにとって自然なのかを問うことである
    • AIは人間の言語をコンピューターにとって自然なものにはしない
    • AIは自らの環境に合った言語を発明するだろう
  • 高度なプログラミング手法は、自然言語よりもプログラミング言語のように見え始めるだろう

    • プログラミングをしたくないのであれば、プログラミングを実行する知能に指示する方法が必要になる
    • 高度な指示方法は、自然言語よりも教育のように見えるだろう
  • ミスがエラーメッセージとして現れるのは大きな改善である

    • エラーメッセージを無視できないことを、むしろ煩わしいと感じる人もいる
    • プログラミング言語の利点を判断する際、「プログラミングのしやすさ」をミスのしやすさと同一視する人もいる