関数型言語を勉強するメリットmmj blog

エンジニア 伍
エンジニア 伍
2019年06月27日

関数型言語を勉強するメリット

Neal Ford氏の「Functional Thinking」を勉強して、色々面白い観点があったので、少しずつ書きます。

OO makes code understandable by encapsulating moving parts. FP makes code understandable by minimizing moving parts.
—- Michael Feathers
(オブジェクト指向が変化をカプセル化してコードの理解性を上げたのに対し、関数型は変化を最小化してコードの理解性を上げた。)

* OO: Object-Oriented, FP: Functional Programming

これは「レガシーコード改善ガイド」の作者Michael Feathers氏による、オブジェクト指向と関数型についての思想の理解です。

最近、関数型言語が人気になっています。
それに、色々有名な既存のオブジェクト指向言語も関数型言語の機能を導入しました。
例えば、java8、c++11もlambda式を導入しました。
オブジェクト指向型言語に対して、関数型言語は色々メリットがあるので、関数型言語のメリット部分を理解するほうがいいと思います。

関数型言語を利用したら、具体的なロジックではなく、もっと上のアブストラクトレベルから、問題の本質を認識します。それに対して、コマンド式のプログラムスタイルは、具体的なロジックのみを考え、問題の本質を無視しやすいです。

関数型言語を利用すると、ロジックは簡単になります。
オブジェクト指向言語には、内部状態がたくさんあります。
内部状態は、コードの理解とテストの際に、結構大きな問題になります。
関数型言語には、内部状態はほぼないです。
それゆえ、コードのロジックも理解しやすく、テストも簡単にできます。

オブジェクト指向言語は、オブジェクトレベルの再利用。
関数型言語は関数レベルの再利用。
コードの再利用の観点から見て、関数型言語は効率良いです。

2019年06月27日

エンジニア 伍 |

« »
このページのトップへ