昨日の夜,スナックネルというネット上の対談番組?でScratchの阿部さんがゲストで出演されていまして.内容はとても面白かったのですが,その中で一つ僕が注目したのは,アラン・ケイさんは「プログラミング言語を作る能力がなければプログラミングをやったとは言えない」ということをおっしゃっているそうで.
僕も本当にそう思っていて.今のコンピュータを支える2大発明は何かと聞かれたら,一つは集積回路という発明で,ものすごい数のトランジスタの回路をとても小さく作れるようになったこと.もう一つがプログラミング言語という発明で,コンピュータと人間をつなぐ記述方法なんだろうなと,思ってます.まあ,それくらいプログラミング言語というアイデアはすごいのです.
別の言い方をすると,ハードウェアの発展が集積回路の性能の向上だとすると,ソフトウェアの発展は新しいプログラミング言語の発明ということになるのでしょうね.
プログラミング言語という考え方がなければ,コンピュータがいくら高性能になってもそれを使いこなすソフトウェアは作れません.
複雑化するソフトウェアを本質的ではないありきたりで面倒な部分はコンピュータに自動化させ,人間の判断を仰ぎたいところだけを外側に見せる.ここにツールに対する美的センスを加味して,エイやっとデザインすると新しいプログラミング言語ができます.
僕はASCIIとかI/Oといった雑誌で育ちましたが,新しいプログラミング言語の話題がしょっちゅう出てきてました.8ビットのマイコンが16ビットくらいになってくると,LISP, Smalltalk, Prologといったとても変ですごい言語に触れられるようになります.僕自身も大学時代に変な言語を作ってASCIIに投稿したりしてました.
その後,コンピュータが文字中心からビットマップに変わってきて,いよいよ文字を超えたもっとすごいプログラミング言語が登場するんだろう,とワクワクしていましたが.その後,現在に至るまで,もちろん,ときどき絵だけの言語は出てくるのですが,文字の言語の強力さの前にほとんど消え去ったように思います.
Rubyのようにモダンな言語では,その言語の上でプログラムの書き方をガラッと変えられるような仕組みを備えたものがあります.とても同じ言語とは思えないくらい多彩な表現ができます.文字の言語のレベルアップ度合いは尋常じゃないです.
一方で,次のScratchはブロックのインタフェースの部分を切り離して,様々なプログラミング言語をブロック形式で作れるようになるらしいです.プログラミング言語を新しく作る練習としての意味はあるのかもしれません.僕が作ったドーナッツという3Dモデル用の言語とか,構文的にはScratchのブロックで十分ですからね.
しかし,ビスケットのような2次元情報が重要な構造の言語を排除してしまいます.それに,これからはVRだし3Dの時代ですから,言語だってunityの方向に進んでもいいのです.
いまくらい,新しいプログラミング言語を作るのが面白い時代は無いのに,どうしてみんな作らないのでしょうね.
ビジュアルプログラミング言語の作り方って,文字の言語の深い研究と比べて,ほとんど整理されていないのではないでしょうか(最近,学会をちゃんとチェックしていないので厳密にそんな状況かはわかりません.すみません).
なんかちゃんと体系立てる必要があるかもしれませんね.