機能と言語とシステム

言語融合の時代
http://www.nishiohirokazu.org/blog/2007/01/post_244.html


西尾さんの言語融合の時代という文章を読んだ。このブログによると第一世代は高級言語の時代、第二世代は充実したライブラリやツールの時代、第三世代は言語融合の時代ということで、これからはまさに第三世代に突入しようというところ。


.NETを考えてみると、エンドユーザはライブラリは共通でどの言語からでも呼び出せる、またデベロッパーはライブラリやコンポーネントを作成すれば言語間で共有できる。つまりシステム上その仕組みが用意されていると言える。例えば、C#で作ったライブラリをVB.NETで使用するという点で言語の融合が実現できる。ところで、自分でそういった事を実現するには、グルー言語(のり付け言語)であるC言語でライブラリを作成しておき、各言語の拡張でそれを呼び出す形となると思う。


ブログの正規表現の例にもあるように、言語融合の発想の根底は、ライブラリやコンポーネントなどの再利用できる機能を言語に依存せずに利用できるということにある気がする。また、言語に得て不得手があるというのはその通りで、「読みやすいけど遅い言語」と「読みにくいけど早い言語」の問題や、単なる経験による慣れの問題や、既存の資産との結合のし易さやなど色々あるが、私自身はとにかく、面倒くさい言語や必要以上に難しい言語が嫌いである。なぜなら私のニーズは、パフォーマンスや環境的なところで自分で隅々までコントロールしたい訳ではなく、とにかくメンテナンスし易いモノで短時間で多くの機能を実現したいことが多いからだ。


言語が融合しやすいとしたら、言語単体で提供されているモノではなく、.NETの言語のようにシステム(フレームワーク)側と一体になっている言語であると思う。そういう意味では、メモリ管理、自己記述的なアセンブリ(dllやexe)など言語自体ではなく、システムに機能を委譲している場合、言語間での融合もしやすい気もする。そういう意味で、言語間の融合というのは少し弱くて、システムと複数言語の融合という方が.NETの発想だと思うので、言語のみに焦点を当てて考えなければ、次の世代はまさしく、言語間のみではなくシステムも含めた融合がむしろ重要になってくる気がする。