私は現在銀行で働いており、Q(kdb+, K と呼ばれるものは何でも) を扱っています。私はこれが関数型言語であることを知っています。また、多くの組織が関数型言語を使用して大規模なデータ セットを処理していることも知っています。
なぜ関数型言語 (プログラミング) がビッグデータに適しているのだろうか? コードのコンパイル方法によるものか、それとも他の理由によるものか。
また、その考えが間違っている場合、その理由を説明できる人はいますか?
ps: 同様の質問がある場合は、ご容赦ください :P
私は現在銀行で働いており、Q(kdb+, K と呼ばれるものは何でも) を扱っています。私はこれが関数型言語であることを知っています。また、多くの組織が関数型言語を使用して大規模なデータ セットを処理していることも知っています。
なぜ関数型言語 (プログラミング) がビッグデータに適しているのだろうか? コードのコンパイル方法によるものか、それとも他の理由によるものか。
また、その考えが間違っている場合、その理由を説明できる人はいますか?
ps: 同様の質問がある場合は、ご容赦ください :P
その理由の 1 つは、不変の変数を使用すると、コードを並行して実行し、非常に簡単にスケーリングできることです。
Zdravko は、イミュータブルな状態によって同時実行が容易になり、競合状態スタイルのバグが発生しにくくなるという点については正しいです。ただし、これはマルチスレッドの同時実行にのみ役立ちます。ビッグ データについて話すときは、水平方向にスケーリングされたクラスター コンピューティングについて話していることになります。関数型プログラミング言語では、それはあまりサポートされていません。
FP には、ビッグデータの夢を持つ開発者の想像力をかき立てるものがあります。おそらく、データ ストリームの処理という観点から考えることができる FP のストリーム指向の高次関数と関係があります。FP を使用すると、ユニオン、インターセクション、ディファレンス、マップ、フラットマップ、リデュースなどの言語の問題を解決できます。
しかし、FP だけでは分散コンピューティング環境では機能しません。OSCON 2014 で、FP 言語を Hadoop と統合するいくつかのオープン ソース プロジェクトについて知りました。そのような 3 つのプロジェクトの比較評価については、Functional Programming と Big Dataを参照してください。Netflix Pig Pen、Cascalog、および Apache Spark。