"言語設計者たちが考えること"の感想
本書は、オライリーの言語設計者たちのインタビューによる言語設計思想に関する内容になります。
コンピューター言語は、自然言語(エスペラント語を除いて)と違って自然発生的作られるわけではなく、人間がデザインします。このため、何をメインとかするか、何を切り捨てるかによってコンピューター言語のつくりが変わります。
私は始めて仕事についたときに先輩方が書いたソースを見て驚きました。私は大学ではFortranでプログラムを書いたため(物理系なので)、C言語のソースをそれほど(まったくかけなかったわけではない)読み込む能力があったわけではないのですが、人によって書き方がばらばらで途方にくれたことがあります。
そのときももっとコーディングが統一される言語ってないのかと思ったものです。このためか、私はコンピューター言語で最も統一された書き方がされるPythonに惹かれます。
Pythonの設計者の発言で"どの言語でもラインあたりのバグ数は同じ"だそうです。逆言えばライン数が少なく書ける言語ほどバグを少なくさせることができるそうです。ライン数を少なくさせるにはコーディング能力にも関係するかも知れませんが、誰でもライン数を少なくさせることができる言語ほど良いのかも知れません。また、チームの規模の二乗に比例してコミュニケーションのオーバーヘッドが増えるとも言われているそうで(知りませんでした)、規模を小さくできる言語ほど開発コスト(コミュニケーションコストとコーディング・デバッグコスト)を少なくできるようです。
このあたりは採用する開発言語によってトータルの開発費用が決まる時代が来ているのかも知れません。
また、現在の言語は少なからず既存の言語から影響を受けています。RubyはLisp(声優ユニットでないほう!)やSmallTalk等の影響を受けているようですし、Rubyは他の言語に影響を与えています。ほぼ全ての言語に良いところがあると言うことになります。
一時期流行った関数型言語(HaskellやErlang...私は触ったことがない)もある種の作業を行う上ではメリットは少なくありません。そのメリットを他の言語を取り入れられたりしているため、今後は言語の突出した特長の差がなくなるのかも知れません。
ただ、「東工大 青木教授に聞いたASUCAフルGPU化とGPUコンピューティング利用の現状」にCPUのマルチコアやGPUを活用することを前提としたプログラミングを必要になってくると思われます。
どちらもすごく簡単に書けるわけではなく、テクニックが必要です。私はOpenCLにチャレンジしてみようかと思ったのですが、あまりの面倒さに辟易しました。このあたりのハード進化の方向性(CPUのマルチコア化やGPU台頭)と共に言語の仕様も変わる必要があるのかもしれません。
【本】
・"ハーバードの「世界を動かす授業」"の感想
・"失敗の技術"の感想
・"巨象も踊る"の感想
・HTML5ガイドブックの感想
・"採用は2秒で決まる!"の感想