HN 日本語サマリー

← 一覧へ戻る
プログラミング

「自然言語プログラミング」の愚かさについて (1978年)

The foolishness of "natural language programming" (1978) (cs.utexas.edu)

343 pointsby xiaoyu2006231 コメント

要約

この記事は、プログラミングにおける自然言語の使用が、形式的な記号体系の使用よりも優れているという考え方を批判しています。著者は、自然言語は曖昧で誤解を招きやすく、数学や科学の歴史が形式的な記号体系の発展によって進歩してきたことを例に挙げ、プログラミングにおける正確性と明瞭さの重要性を強調しています。

全文翻訳

「自然言語プログラミング」の愚かさについて。

自動計算の初期から、プログラミングが形式的な記号の使用に特徴的な注意深さと正確さを必要とすることを欠点だと感じてきた人々がいました。彼らは、たとえ一瞬の考察で指示に明らかな誤りがあることがわかったとしても、その指示を厳密に実行する機械的な奴隷を非難しました。「しかし、一瞬は長い時間であり、思考は苦痛なプロセスである。」(A.E.Housman)。彼らは、些細な事務的ミスによって引き起こされた無意味な活動に乗り出すことを拒否する、より賢明な機械を熱心に希望し、待っていました。

ほとんどあらゆる形の冗長性を欠くマシンコードは、すぐに人間と機械の間の不必要に危険なインターフェースとして特定されました。この認識への対応として、いわゆる「高水準プログラミング言語」が開発され、時間が経つにつれて、私たちは愚かな間違いに対する保護をある程度強化する方法を学びました。多くの愚かな間違いが、誤った結果ではなくエラーメッセージにつながるようになったことは、大きな進歩でした。(そして、この進歩さえも普遍的に評価されたわけではありません。エラーメッセージを無視できないことを、誤った結果よりも迷惑だと感じる人もいました。プログラミング言語の相対的な利点を評価する際、一部の人々は依然として「プログラミングの容易さ」を、検知されない間違いを犯す容易さと同一視しているようです。)しかし、プログラミング言語に対応する(抽象的な)マシンは、忠実な奴隷であり続けました。つまり、無意味な指示を実行する能力を持つ、無意味な自動機械です。プログラミングは依然として形式的な記号の使用であり、その結果、以前に要求された注意深さと正確さが必要とされました。

機械を著しく使いやすくするために、(試みとして)私たちの母国語で機械に指示できるような機械を設計することが提案されてきました。これは確かに機械をより複雑にするでしょうが、機械がより大きな負担を担うことで、私たちの生活は楽になるだろうと主張されました。もしあなたが形式的な記号の使用義務を困難の原因だと非難するならば、これはもっともらしいように聞こえます。しかし、その議論は有効でしょうか?私は疑います。

インターフェースの選択は、単なる(固定量の)労働の分割ではないことを、私たちはすでに知っています。なぜなら、インターフェースを越えた協力とコミュニケーションに関わる作業は追加されなければならないからです。私たちは、厳しい経験から、インターフェースの変更が両側の作業量を(劇的にさえ)増やす可能性があることを、すでに知っています。それゆえ、「狭いインターフェース」と呼ばれるものへの選好が増しています。したがって、機械と人間の間のコミュニケーションを後者の母国語で行うように変更することは、機械の負担を大幅に増加させるでしょうが、それが人間の生活を単純化するという仮定に異議を唱えなければなりません。

数学の歴史を少し見れば、この異議がどれほど正当であるかがわかります。ギリシャ数学は、それが言語的、絵画的な活動に留まったために停滞しました。イスラムの「代数」は、記号体系の臆病な試みの後、レトリックなスタイルに戻ったときに死にました。そして、現代の文明世界は、良くも悪くも、ヴィエータ、デカルト、ライプニッツ、そして(後に)ブールのような人々のおかげで、私たちが負っている注意深く、あるいは少なくとも意識的に設計された形式的な記号体系によって、中世のスコラ学の束縛から解放されたときにのみ出現することができました。

形式的なテキストの美徳は、それらの操作が正当であるためには、ほんの数個の単純な規則を満たすだけでよいということです。それらは、よく考えてみると、私たちが母国語を使用するときに、ほとんど避けられないあらゆる種類のナンセンスを排除するための驚くほど効果的なツールです。

形式的な記号を使用する義務を負担と見なすのではなく、それらを使用する利便性を特権と見なすべきです。それらのおかげで、小学生はかつて天才にしか達成できなかったことを学ぶことができます。(これは明らかに、1977年に技術報告書の序文で「論理結合子に使用される標準記号さえ、明確さのために避けられている」と書いた著者によって理解されていませんでした。その文章の出現は、著者の誤解が彼だけに限定されていないことを示唆しています。)結局のところ、私たちが母国語を使用する際の「自然さ」は、そのナンセンスが明白でない声明を、それらを使用して容易に作成できることに尽きます。

もし、最初から私たちの母国語が情報処理装置への入力と出力の唯一の手段であったとしたら、何が起こったであろうかを想像してみることは有益かもしれません。私の熟考された推測では、歴史は、ある意味で繰り返され、コンピュータサイエンスは、十分に定義された形式システムにそこからブートストラップする方法の、確かに黒魔術が主になるでしょう。インターフェースを十分に狭くして使用可能にするために、私たちは世界のすべての知性を必要とするでしょう。そして、人類の歴史に鑑みると、その仕事を十分にうまく行うには、再び数千年かかるだろうと推測するのは、過度に悲観的ではないかもしれません。

注記。知的な規律からの教育的傾向の結果として、過去数十年間、西側世界では人々の母国語の習熟度が著しく低下しました。以前の世代の基準では知っているはずの多くの人々が、たとえそれがかなり適切である目的であっても、もはや母国語を効果的に使用できなくなっています。(科学論文、技術報告書、政府出版物などに、注意深く読むと無意味な言葉遣いが驚くほど多いことを見れば十分です。)この現象、「新しい非識字」として知られるものは、その失敗を予測するために必要な技術的な洞察を欠いている自然言語プログラミングの信奉者を落胆させるはずです。(注記終わり)。

私は一つの直感から多くの慰めを得ています。私は、オランダ語、英語、アメリカ英語、フランス語、ドイツ語、あるいはスワヒリ語であれ、私たちの母国語でプログラムされる機械は、それらを使用するのと同じくらい作るのが非常に難しいと推測しています。