はじめに




 Mindは日本語で記述するプログラム言語である。
 日本語によるプログラム言語というと、既存の言語の予約語などを日本語名に変え、ユーザ定義語などで漢字を通すようにしたものを想像されるかも知れないが、Mindはそういったレベルの言語ではなく、百パーセント日本語のプログラム言語である。
 使用する言葉が日本語であるだけでなく、句読点や丸の使い方、そしていわゆる言い回しを含めた文法がほとんど日本語になっている。一見、とてもプログラムとは思えないような記述も出現する。
 日本語によるプログラム記述は、おそらく今後、一般の人(日本人)がプログラムを組めるようになるための必須の条件であろう。また、職業プログラマにとっても、プログラムの本質(アルゴリズムの記述)にエネルギーを集中でき、プログラム開発効率が上がるという大きなメリットを生む。
 一般人のプログラミングに対しては否定的な意見が見受けられる。「プログラムというのは難しいから素人が手を出すものではない」とか「いくらやさしく書けるといったって、しょせんはプログラムだからアルゴリズムが分からなくてはダメだ」といったものである。しかし、例えば画面をクリアする時に、
画面クリアする
 という表現をするのは難しいだろうか?。また、
雨降り? ならば 傘を差す
 というアルゴリズムは難しいだろうか?。
 確かにプロと同じレベルのプログラムをアマチュアが組むのは無理だが、避けて通るほどのものでもない。素人がプロの歌手のように唄うことはできないが、誰でも口笛を吹いたり、好きな歌を口ずさむぐらいはできる。その程度にプログラムを組むこともできるはずである。いままでのプログラム言語では、たまたまその段取りが非常に複雑になっていただけのことである。
 プログラムという概念を、今よりもっと広く捉えてみたらどうだろうか。
 人間がコンピュータに向かって文字(言葉)による指示を出す時、そのすべての指示はプログラムであると考えるのである。
 プログラムを組まないパソコンユーザであっても、MS−DOSのDIRとかCOPYとかのコマンドぐらいは操作できたり、表計算ソフトのマクロコマンドぐらいは使えるユーザは多い。コンピュータに対する文字による指示という意味では、これらはすべてプログラムである。このようにプログラムを無意識のうちに使っているのだとしたら、それほど構える必要もないだろう。
 もう一つ、プロの世界を眺めてみよう。ドキュメント性の向上、メンテナンスの容易さなど、多くのメリットがあることは理解されるが、日本語で記述するということから、直観的に次のような印象を持たれるようだ。
  • オモチャに違いない
  • 面白そうだが、私の仕事に関係ない(今日の仕事に使えるとは思えない)
  • 重い言語ではないか(遅くて図体が大きいのでは)
といった誤解がある。もちろん全部ハズレである。
 Mindはプリプロセッサのようなものですらなく、直接に機械語を生成する能率の良いコンパイラである。C言語で記述しているような分野はほとんどMindでも記述できると思っていいだろう。
 日本語プログラム言語はMindが最初ではない。過去、いろいろな試みが行われてきたが、アプローチの面で大きな落とし穴があった。
 大上段に構え、構文解釈や意味解釈といったドロ沼に入り込んでしまったり、複雑な機構を組み入れて実用性を失ってしまうことが多かった。最終的にアプリケーションを開発するための手段であったはずの日本語プログラミングなのだが、いつのまにかそのような言語を開発すること自体が目的となってしまったのである。
 Mindでは「スタック」という単純な仕掛けを導入することにより、構文解析・意味解釈といった手法を使わずに日本語表現のプログラムを解釈・実行する方法をとった。スタックがコンピュータのハードウェアとして本来備わっている機構であることに注目して欲しい。これが日本語プログラミングに実用性を与える重要なキーワードである。
 実は、スタックを初めて明示的なプログラム表記に取り入れたのはアメリカ生まれのFORTHという言語である。しかし、たいへん不思議なことだが、この手法は日本語記述に最も向いており、英語圏の言語としては、どちらかというと不向きなものであったようだ。
 このスタック指向の言語FORTHは、計測・制御・グラフィック処理などで多く使われていいることからわかるように、実用性・実行速度の面ですぐれたアーキテクチャとして知られている。Mindもこの系統の言語の一つであると思っていただければ、「重い言語ではないか」という心配は解消されるだろう。確かに見掛けは日本語を使ってはいるが、内部的には実に単純な機構で動作している。
 次にお見せするのは、ユーザーの加野島氏が作った連珠(五目並べ)のプログラムのメイン部分である。普通の人間相手であれば、かなりいい勝負をする。
連珠開始処理して ここから     一回勝負して 勝敗を表示し 両者の勝ち回数を表示して     連珠再挑戦?         でなければ 打ち切り         つぎに 繰り返して 連珠終了処理する
 一見、アルゴリズム(処理手順)を書いたものと見られた方も多いだろう。
 当たり前のことだが、「変数がどうした」とか、「引き数がどうした」とか、「関数がどうした」とか、そういったものは一切、アルゴリズムには登場しないはずである。上のプログラムもその通りになっており、単に処理手順(つまりアルゴリズム)を書いてあるように見えるが、これはプログラムである。アルゴリズムとプログラムの一致…これがMindの最大の利点である。
 アルゴリズムも、結局はその実体は言語なのである。
 例えば、あなたが、なにかのアルゴリズムを考えるとする。考えるのは自分の頭であり、その時考える手段は言葉であるはずである。また、でき上がったアルゴリズムを他人に伝えようとしたら、やはり言葉・言語として表現することになる。先の連珠のプログラムのように。
 PascalやCといった他の言語では、結局は、我々が頭の中でせっかく考えたアルゴリズムを、いったん、それらのプログラム言語に(人間が自分で!)翻訳し、それをコーディングしているわけである。もちろん、デバッグしたり、ソースコードを読む時には、それをまた逆翻訳して、ソースコードの意図をさぐるという、大変に非効率的なことをやっていることになる。
 「プログラム言語なんて何をつかっても同じさ」という意見は、一見、正論に聞こえるが、それは違う。誇張して言えば、Mindのプログラマは「Mind言語」でプログラムを書いているのではない。生まれた時から使っている「日本語」という言語で書いているのである。当然のことだが、頭の中の思考とソースコードは完全に一致することになる。
 コンピュータに対する文字による指示というものを言語として捉えた時、プログラム言語、そしてOSのコマンド、アプリケーションコマンドやマクロ命令など、さまざまな言語が無秩序に使われているという事実は驚異である。しかも、日本人から見た時、そのいずれも自国語から遠い姿をしているという状況は大変残念なことだ。
 Mindは今のところ単なるプログラム言語として位置付けられているが、将来にはこれを発展させたものが、日本人とコンピュータとの統合的なコミュニケーション手段として使われるようになるのではないかという予感を筆者は持っている。
 マウスとマルチウィンドの組み合わせが今、ユーザインターフェースの理想と考えられているようだが、そのようなユーザインターフェースにも限界が来る時があるだろう。それを解決するのは、今想像もつかない新技術などではなく、おそらくは「言葉」という、人間にとって極めて素朴で合理的なインター フェースであろう。

 最後に、この企画を提案し、進めて頂いた中野パーマロイ(株)の橋本社長、翔泳社の長廻氏、西上原氏にこの欄を借りて感謝する。
 そしてまだ一面識もないが、FORTH言語を開発したチャールズ・ムーア(Charles H. Moore)氏にここを借りて敬意を表したい。


昭和63年8月 片桐 明


 本書は、書籍『日本語プログラミング言語Mind』(片桐明著、翔泳社刊、1988年)の内容を、2016年12月にMindの最新版に合わせて加筆・訂正したものである。(本節「はじめに」についてはあえて当時のままとした)