OOP(オブジェクト指向型プログラミング)の下位互換では無いぞと台頭するFP(関数型プログラミング)

OOP(Object Oriented Programming)とFP(Functional Programming)はそもそも別モノ

日本語でオブジェクト指向と呼ばれるOOPはFPの発展形ではありません。「現代的」という言葉に騙されるかもしれませんが、FPにはFPの設計思想があります。FPにしかできないこともあり、例えば機械に近い、マシンのリソースを全て使い尽くすようなプログラムを作るにはFPの理解が不可欠です。

Java8でラムダ式が導入された

ガチガチのオブジェクト指向言語との呼び声が高いJavaでラムダ式が導入され、関数型的なプログラムを出来るようになりました。OOPとFP両方の特徴も取り入れることで、より汎用的な言語を目指すための策だと考えられます。Javaエンジニアは喜ぶべきことです。Javaで出来ることが大幅に増え仕事が増えますね。

並行で処理、分散して処理、非同期で処理が注目されている

例えばnode.jsが話題になったのはノンブロッキングな非同期処理による高速さです。高速なシステムには並行、分散、非同期がテーマになっています。これはハードウエアに近いところの処理となるのでFPの特徴を持つ言語でしか実装できないです。Javaすらラムダ式を導入したので現代的な言語で関数型プログラミング的な特徴を持っていないものは無いのでは無いのでしょうか。

イメージを掴んでおこう

非同期処理や並列処理などはハードウエアへの深い理解が必要なので一朝一夕で理解できるものではありません。しかしザックリと知っておくことはIT系として必要だと思います。FPはより小さなツールを提供することができ、チューニングする際に都合が良いです。FPはOOPの下位互換では無く、大切なのは状況によって使い分けることです。より柔軟なチューニングが必要になる演算規模の大きいプログラムではFPが使われていて、演算規模が大きいプログラムへの需要が伸びFPが見直されています。殆どのプログラミング言語がどちらの形式もサポートする状況になりました。

Add a Comment

メールアドレスの入力は任意です。(公開されることはありません)