POSTD PRODUCED BY NIJIBOX

POSTD PRODUCED BY NIJIBOX

ニジボックスが運営する
エンジニアに向けた
キュレーションメディア

POSTD PRODUCED BY NIJIBOX

POSTD PRODUCED BY NIJIBOX

ニジボックスが運営する
エンジニアに向けた
キュレーションメディア

FeedlyRSSTwitterFacebook
Edsger W.Dijkstra

本記事は、原著者の許諾のもとに翻訳・掲載しております。

自動計算機の初期の頃から、形式的記号体系を注意深く正確に使わなければならないというプログラミングを、その欠点と感じる人がいました。そういう人たちが問題にしたのは、命令を忠実に守る計算機の絶対的な服従性で、少し考えれば、命令に明らかな誤りが含まれているのが分かるような場合でも、機械がそれに従ってしまうという点です。機械にとっては「少しというのはとても長く、考えるのは苦痛を伴うプロセス」(A.E.Houseman)なのですが、それでもそういった人たちは、ちょっとした表記上のミスが引き起こす無意味な動作を拒否できるような、より聡明な機械の登場を熱望し心待ちにしました。

人間と機械の間に不要なリスクを生じさせるインターフェースとしてすぐに認識されるようになったのが、冗長性という形態がほとんどない機械語です。そして、この認識に一部、呼応する形で、いわゆる「高水準言語」が開発され、時間の経過と共に、私たちは取るに足らないミスへの対策を、ある程度まで強化する方法を身につけてきたのです。現在では、状況は飛躍的に改善し、馬鹿げたミスに対しては、誤った反応が返される代わりに、エラーメッセージが出るだけで済むようにもなりました(ただし、この改善も全ての人が歓迎しているわけではありませんでした。一部の人にとっては、無視できないエラーメッセージの方が間違った反応よりもイライラするようです。そういった人たちは、プログラミング言語の優劣を判断する際に、「プログラミングのしやすさ」ということと検出されないミスの犯しやすさ(検出されなければ問題なしという考え)を混同しているのかもしれません)。一方でプログラミング言語に対応する(抽象)機械は、いまだに誠実な服従者のままです。すなわち、無分別な指示を完全に実行できる無分別な自動機械というわけですね。また、プログラミング自体も形式的記号体系ということでは変わっておらず、その使用に入念さと正確さが求められる点についても、以前のままです。

機械を格段に使いやすくするために、母国語で命令できる機械を作ったらいいという声が以前から上がっていました。機械がより複雑化することで機械への負担は増えてしまいますが、その分、私たちの負担は減るという考えです。整然とした記号体系を使うのが困難、という観点に立てば、なるほどこの考えには一理あるように思えます。しかし、実現の可能性があるかというと、懐疑的にならざるを得ません。

現時点において私たちは、インターフェースの選択で、機械と人間の(固定)作業分担量が決まるわけではないということを知っています。なぜなら、インターフェースを共有することで生じるやり取りや付帯作業も考慮する必要があるからです。また、ごく現実的な経験則として、インターフェースの変更は、機械と人間の双方にとって、作業量を(時には劇的に)増加させ、ひいては「narrowインターフェース」への偏重につながる可能性もあるということを付け加えておかなければなりません。したがって、仮に機械と人間のコミュニケーションを母国語に変更した場合、機械の負担は確かに増えるでしょうが、それが人間の作業をシンプルにするか、ということについては異議を唱えなければならないでしょう。

数学の歴史を少し振り返ってみると、この異議がいかに正当であるかが分かります。ギリシャの数学者たちは、文字を用い視覚的な「代数学」に行き詰まっていました。ですが「代数学」は、おずおずとした記号体系への試みの後、修辞的なスタイルへと戻り衰退しました。そして、ビエト、デカルト、ライプニッツ、そして(後に)ブールらによって形式的記号体系が、入念に、少なくとも意識的に確立されたことによって、西欧が中世スコラ学の足かせから解放され、良くも悪くも文明化された世界が実現し、文字の精密さへの追求は無駄に終わりました。

形式的テキストの長所は、論理的であるためにデータ操作において、ほんの2、3のシンプルなルールを満たすだけでいいということです。考えてみると、それらのルールは私たちが母国語を使う時に避けることがほぼ不可能な、あらゆる無意味なことを除外するのに非常に効果的なツールであると言えます。

私たちは、形式的記号を使うことを義務や重荷ととらえるのではなく、便利なことであり、特権であるととらえるべきです。記号のおかげで学校に通う子どもたちは、昔は天才にしか成し得なかったことを学ぶことができています(1977年の技術報告書の序章で、「論理結合子に使用される標準的な記号でさえ、明確さのために避けられてきた」と書いた著者は、明らかにこのことを理解していませんでした。こうした文が生み出されるということは、この誤解がこの著者だけのものではないことを示唆しています)。つまるところ、母国語を「自然に」操れるということは、言語の無意味な部分が目立たないように容易に話すことができるということです。

もし初めから母国語が情報処理装置の唯一の入力・出力媒体だったらどうだろうと想像してみることは、私たちに新しい光を与えてくれるかもしれません。私はある意味で歴史は繰り返し、コンピュータサイエンスは、いかにして何もないところから十分によく定義された形式体系へと引き上げられるかという黒魔術で主に構成されているだろうと考えます。インターフェースを使用可能なほどに狭めるには世界中の知力が必要ですが、人類の歴史を振り返ると、そこに達するには数千年を要するという推測も、悲観的すぎる考えではないかもしれません。

注釈 知的学問から離れた教育傾向の結果、西欧諸国ではこの数十年間において言語習得能力が急激に落ちました。1つ前の世代の人々の基準であれば当然身に着けているべきことでも、もはや多くの人々が、母国語を使うことが非常に妥当な時でさえ、それを効果的に使うことができていません(科学記事や技術報告書、政府の広報物などを見てください。よく読むと無意味な言い回しが実に多いことに気がつきます)。「新イリテラシー」というこの現状は、失敗を予測するために必要な技術的洞察を欠いた自然言語プログラミングの価値を信じている人たちを思いとどまらせるものであるべきです。(注釈終わり)

大きな慰めを感じる直感:オランダ語であれイギリス英語であれアメリカ英語であれフランス語であれドイツ語であれ、はたまたスワヒリ語であれ、母国語でプログラミングされる機械を作るのは、それを使うのと同じくらい、とんでもなく難しいだろうと思います。

監修者
監修者_古川陽介
古川陽介
株式会社リクルート プロダクト統括本部 プロダクト開発統括室 グループマネジャー 株式会社ニジボックス デベロップメント室 室長 Node.js 日本ユーザーグループ代表
複合機メーカー、ゲーム会社を経て、2016年に株式会社リクルートテクノロジーズ(現リクルート)入社。 現在はAPソリューショングループのマネジャーとしてアプリ基盤の改善や運用、各種開発支援ツールの開発、またテックリードとしてエンジニアチームの支援や育成までを担う。 2019年より株式会社ニジボックスを兼務し、室長としてエンジニア育成基盤の設計、技術指南も遂行。 Node.js 日本ユーザーグループの代表を務め、Node学園祭などを主宰。