えちょ記

語らないブログ

静的単一代入がキモ

erlangなどの関数型言語ですが、結局のところ特に大事な要素は変数の静的単一代入を採用しているかどうか、だと悟りました。うん、きっとそうだ。

関数型言語の文法設計には静的単一代入に帰着するものが数多くあります。末尾再帰によるループの構成、参照カウンタだけで構成できるガベージコレクタ、並行処理の導入の容易さなど。

一般的な関数型言語では、これに加えて「高階関数」と、「リスト処理拡張があるパターンマッチ」が文法の構成要素として含まれます。どちらも関数型言語ならではの工数削減に直結する、重要な要素です。

この3つの特徴を揃えていない言語は関数型としては中途半端であるため、学校や新人教育などで関数型言語の学習用として選択する場合は外したほうがいいと思います。「関数型言語の面白さが伝えきれない」と言ったほうがいいかな。もちろん仕事上の必要に応じた学習であるならその限りではありません。現実だいじ、とっても大事。

ただ、理想を知っているとどこで妥協しているのか、ここは譲らない方が良いとか、そーいう判断ができるようになります。私はもうソフトウェア職人みたいな技術職状態なんですが、そーいった方面(お客さんの交渉とかの営業SEではなく、上級プログラマ・ソフトウェアアーキテクト職)を望むのなら、このあたりの知識は重要です。余暇を1ヶ月も費やせば何となくわかるくらいまでにはいけるので勉強しておいて損はないかも−。