関数型と命令型の違い

関数型プログラミングと命令型プログラミングの違いについて気になったので、調べてみた。

この記事を読んでようやく納得できた。

つまり、

  • 関数型: 「ほしい結果」に注力したもの
  • 命令型: 「行いたい手順」に注力したいもの

だと理解した。

関数型では、SQL文のように「〇〇な条件に合うものが欲しいので探してきて。手段は任せるから。」という感じの実装になる。
一方で命令型の場合は、「〇〇を捜査してこの条件文にヒットしたものに対してこの処理を実行させて…」というように、処理そのものを記述する。

関数型の場合、どのように探してくるかはシステム側に任せることになるので、命令型と比較して記述が簡単になる傾向がある。
ただし、実際の動作内容はシステムに任せる分、細かいパフォーマンスチューニングがしにくかったり臨機応変な実装にはしにくい、という欠点も。

ただしこれは記述方法の問題なので、関数型プログラミングの思想を元に実装された言語だとしても、命令型のように書くこともできる点に注意。