プログラムを作るプログラムを作れ – プログラムを自動生成せよ

2013/8/9 追記: 右脳左脳うそ説プラナリアの記憶の場所など興味深い話がある中で、右脳プログラミング環境だそうです。どうなっていくでしょう。


何の文脈も無く「プログラムを作るプログラムを作れ」と言われた場合、まずそれを言われた方のITスキルやバックグラウンドを知らないと延々と禅問答が続いてしまいそうです。プログラムとはコンピュータへの命令のことなので、それを作るプログラムとなるとコンピュータへの命令を作るコンピュータへの命令を作ることになりますね。最初から直接命令すればよいじゃん、となってしまいます。

各種言語のコンパイラはプログラムを出力するプログラムですし、古くからあるlexとyaccあたりで新しく構文を解釈してプログラムを出力するプログラムを作れば、lexとyaccはプログラムを作るプログラムを作るプログラムでしょうか。

program to create programなどのフレーズでいろいろ検索してみます。Visual Basicのようにコンポーネントをたくさん準備しておきそれらを配置、接続していくもの、イベントに対するアクションもあらかじめ複数準備し、視覚をベースにプログラミングするものがまず目に付きます。準備しなければいけないものは無数ですが、多くの作成者を満足できるレベルになれば便利です。あとは各種言語用のエディタも出てきます。確かにプログラムを組むため(ソースコードを書くため)のプログラムです。そして決められた形式の設計書に基づいて各種言語のソースコードを自動生成と称して出力するプログラムもたくさん登場してきます。UMLとJavaがその典型でしょうか。自動生成されたソースコードは設計書に書かれた枠だけができるため、実際に必要なロジック、つまりほとんどの部分は自力で追記していくことになります。

もしコンピュータへの命令の仕方を知らない方が言った言葉であるとすると、きっと自分で理解できる命令の仕方を作って欲しい、つまり自分にも使えるプログラミング言語、あるいはプログラミング言語までにも至らないプログラムする方式を作って欲しいということなのかと想像できます。自分で理解ができる命令の仕方という意味で考えてみると、最善はしゃべった言葉をそのまま理解して実行してくれるということになるでしょう。サイロン、ターミネーターがそんな感じだと思われます。

かつて自分が小学生であった頃、親に「マイコン」を買ってもらうための殺し文句に「英語の勉強になる」というものがありました。残念ながら自分の親は共にホストコンピュータを触っているような人達だったのでそれはまったく通じませんでしたが、知らない人にはコンピュータは英語で動作していると思われていたのかもしれません。そしてそのような古き良き時代、日本語を入出力できる日本語BASICならぬ、日本語で動作するBASICなるものがマイコン雑誌の広告に出ていたりしたものです。日本語であればプログラムができると思う層を取り込む試みだったと思われますが、1,2年もしないうちに見なくなったと記憶しています。

もし I < 100 ならば I = I + 1900

半べそです。そもそも知らない人にはIFやらTHENやらが日本語になったところで I = I + 1900 で、そんなアホな、です。実際には英語も含めて自然言語を完全に理解するプログラムはいまだにできていません。言語は進化することを考えると言語の進化も取り込めるようにする必要もあるでしょうし、自然言語は前後の文脈が無いと理解不可能な場合が頻繁にあります。受け身や敬語のように前後の文脈どころか発言者の立場までわかっていないといけない場合もあるでしょう。人間の脳は小さい頃からお勉強してそれらを学んできたのですね。

現在でも日本語でプログラムを書けるようなプログラミング言語は作られているようですが、みな教育用のようです。英語と日本語が大きな壁になる場合には有効な教育方法だと思われます。一方、実際のプログラミング言語で予約されている「英単語」は数十の場合が多いので数十単語覚える方が早いのかもしれません。利用したわけではないので時間があれば「パソコン」を買ってもらえた今、実際に日本語プログラミング言語を使って楽しみながら確認してみたいです。

日本語英語の壁を考えないとして、現在の自分で理解ができる命令の仕方となると、やはり何かしらのプログラミング言語、あるいはプログラミング言語のソースコードを作成するためのかなり限定的な枠組み、ということになるでしょうか。プログラムを作るプログラムがあってもプログラミングができる人間の脳は必要とされている状態で、ロボコップがそんな感じです。

ターミネーターはストーリーにはもう大分できていないといけないくらいの時期だったかと思いますが、スカイネット様への納期を死守するには越えなければいけない高い山が続々とあるようです。あれ、スカイネット様をまず納品しないといけないのでしたっけ。

以上は飲み屋でMetaMojiという会社の記事から始まってまだ世の中はロボコップかねぇという話になるまでを思い出しながら書いたもので、とりとめが無いです。お後がよろしゅう。

コメントを残す

メールアドレスが公開されることはありません。