参考書を用いて、Windows11でElixirを学習
以下にメモ
■Elixirを学習する利点
プログラミング言語Elixirは、関数プログラミング×並行処理ベース×モダンな文法の中にラップされたもの
Earlang VMについても理解を深めることができる
■関数型言語という新しいジャンル
【従来のオブジェクト指向言語について】
クラスは振る舞いを定義し、オブジェクトは状態を持つ。
入り組んだクラスの階級構造を考え出す。
オブジェクト指向のコードは、常に状態を考える。
メソッドの呼び出し、別のオブジェクトに値を渡す。そのたびに他のオブジェクトが更新されるetc...
オブジェクト指向の世界では、クラスは王様である。
クラス内でインスタンス定義→データの保持をコントロールする。目的はデータの隠蔽。
【コードを書く目的は『変換したい』ということ】
オブジェクト指向だろうと、空のファイルを文章の入ったファイルを作り出すことも、
あくまでもコンパイルされた結果のひとつ。これがコードを書く目的。
【関数は並行処理の動力源】
関数は並行に処理を走らせることができる。
Elixirは、それらの間でメッセージを受け渡すための、単純だがパワフルな機能を持つ。
イメージでは、1台のマシンに数百万の並行処理を走らせ、そのマシン数百台を相互運用することができる。
1台ごとに1,000,000処理 × マシン100台 = 10億処理できる的な。
あと、1つのコレクションと関数を受け取り、コレクションの各要素に関数を適用して、結果をリストとして返すこともでき、各要素の変換は別々のプロセスで実行できる。
数万単位の並行処理もコンパイル可能なのがElixirの強み。
【身近にある関数】
例えば、HTMLテンプレートシステムも関数。
プレースホルダを含むテンプレートと、名前付きの値のリストを受け取り、HTMLドキュメントを生成する。
三角関数sinのπ/4を受け取ると0.7071...を返す。
こういった「変換」が、関数型プログラミングの中心となる考え方になる。