関数型言語と手続き型言語の違いは勉強したからわかるけど、関数型言語はEmacs Lispをいじるときしか使わないので、使い勝手からの理由はわからない。
で、素朴に考えて、関数型言語が普及しない理由は、手続き型で最初にプログラミングを覚えた人が多いからだと思う。そして、手続き型でプログラミングを覚えた人が多い理由は、いろいろと理由があるとは思うけど、結局は機械語が手続き型だから。機械語が手続き型である理由は、計算機がフォン・ノイマン型だから。
もし、計算機の機械語が関数型言語で書いた方が自然であるならば、関数型言語が普及したと思う。オブジェクト間のデータのやりとり手段が通信だけであると考えるならば、手続き型で書くのと同じくらい関数型で書いた方が自然のような気もするので、並列計算やグリッドコンピューティングが当たり前になるならば、関数型言語が流行るように思う。
既に死にかけだけど、サービス・オリエンテッド・アーキテクチャ(SOA)の理想は、「何をするのか(したいのか)」を指定すると、「それをどうやるのか」は下の層でよきに計らってくれ、それを行うWebサービスが自動で生成されるというものだと理解している。Howは専門性が必要なので、クラウドコンピューティングが一層進めば、ユーザーはWhatだけを与えれば良いという方向にどんどんと進むものと予想される。そして、これは宣言型プログラミングパラダイムの世界にである。
関数型と宣言型はこれから、プログラミング対象の抽象度がどんどん高くなるにつれて普及してくる可能性がある。というのは、どっか偉い先生が言っていたように記憶している。一方で、フォン・ノイマン型の計算機を使う限りは手続き型はすたれないのは確実。