4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Elixirを学習する利点と従来のオブジェクト指向型プログラムとの違いについて

Posted at

参考書を用いて、Windows11でElixirを学習
以下にメモ

■Elixirを学習する利点
プログラミング言語Elixirは、関数プログラミング×並行処理ベース×モダンな文法の中にラップされたもの
Earlang VMについても理解を深めることができる

■関数型言語という新しいジャンル
【従来のオブジェクト指向言語について】
クラスは振る舞いを定義し、オブジェクトは状態を持つ。
入り組んだクラスの階級構造を考え出す。
オブジェクト指向のコードは、常に状態を考える。
メソッドの呼び出し、別のオブジェクトに値を渡す。そのたびに他のオブジェクトが更新されるetc...
オブジェクト指向の世界では、クラスは王様である。
クラス内でインスタンス定義→データの保持をコントロールする。目的はデータの隠蔽。

【コードを書く目的は『変換したい』ということ】
オブジェクト指向だろうと、空のファイルを文章の入ったファイルを作り出すことも、
あくまでもコンパイルされた結果のひとつ。これがコードを書く目的。

【関数は並行処理の動力源】
関数は並行に処理を走らせることができる。
Elixirは、それらの間でメッセージを受け渡すための、単純だがパワフルな機能を持つ。
イメージでは、1台のマシンに数百万の並行処理を走らせ、そのマシン数百台を相互運用することができる。
1台ごとに1,000,000処理 × マシン100台 = 10億処理できる的な。

あと、1つのコレクションと関数を受け取り、コレクションの各要素に関数を適用して、結果をリストとして返すこともでき、各要素の変換は別々のプロセスで実行できる。

数万単位の並行処理もコンパイル可能なのがElixirの強み。

【身近にある関数】
例えば、HTMLテンプレートシステムも関数。
プレースホルダを含むテンプレートと、名前付きの値のリストを受け取り、HTMLドキュメントを生成する。
三角関数sinのπ/4を受け取ると0.7071...を返す。
こういった「変換」が、関数型プログラミングの中心となる考え方になる。

4
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?