デイブ・トーマスとアンディ・ハントによる『達人プログラマー』という書籍がある。初版は20年ほど前に出版されたものだが、プログラマとして身につけておきたい考え方や方法論を説いたもので、日進月歩のコンピュータの世界にあって今も高い評価を受けている。
その中に「少なくとも一年に一つは新しいプログラミング言語を学ぶとよい」という記述がある。いわく「異なる言語は同じ問題を異なる方法で解決する。複数の異なるやりかたを学ぶことで、プログラマの思考の幅は広がり、型にはまってしまうことを防ぐことができる」とのことだ。
かくいう私も、一年に一つとまではいかないものの、これまでにいくつものプログラミング言語を学んできた。そのうち十分に使えるようになった言語にはBASIC、C、Java、Matlab、Python、R、Juliaなどがあるが、それぞれのプログラミング言語が得意としている場面や使っているときの印象は異なる。たとえば、Cを使っているとコンピュータの内部を直に触れているような感覚があり、MatlabやRではデータを練り上げていくかのように使える。記述性と実行速度とを両立させたJuliaは最近のお気に入りで、研究から趣味まで幅広い場面で使っている。
そして今年になって新しく学び始めたのはLispだ。1950年代後期に考案された、最古のプログラミング言語のひとつである。1950年代後期は、真空管やトランジスタやダイオードを組み合わせて作られた大型電子計算機が、研究所や大学に導入され始めた頃だ。その時代に作られた言語にも関わらず、現在でも学ぶところは多いと言われ、天才プログラマと呼ばれる人々は一度はLispを経験している。また、エリック・レイモンドによる「たとえ実地で使用することがなくとも、Lispを理解することで深い悟りの境地に達することができ、その経験は残りのプログラマ人生にプラスになるだろう」という冗談交じりの説明にも背中を押されたかたちだ。まだ学び始めて半年ほどなので、悟りなどははるか先の先の先だが、この言語ならどんな複雑な事でも出来てしまうのではないかと予感させてくれる。
ここ十数年のあいだに発表されすでに広く使われているプログラミング言語にはRust、Kotlin、TypeScript、Swiftなど様々なものがある。上記で名前をあげたJuliaもそのような新しい言語のひとつだ。いずれも、それ以前の言語を参考にして弱点を克服し、近年のソフトウェアに必要な要素を詰め込んで進化させたものだ。故きを温ねて新しきを知る。新しい言語をより効果的・効率的に使うために、古い言語を学ぶことも悪くない(けっきょく実地で使用することはないのかもしれないが)。
【プロフィール】
丸井淳史
東京藝術大学 音楽学部 音楽環境創造科 教授
ペンシルバニア州立大学M.Sc. (Computer Science and Engineering)。福島県立会津大学大学院博士(コンピュータ理工学)。マギル大学大学院音楽学部サウンドレコーディング領域博士後期課程単位取得満期退学。2006年9月に音楽環境創造科着任。専門は音楽音響のためのデジタル信号処理および音響心理学。