はじめに
関数型の特徴として、よくコンカレント性が強調されているのだか、組込みとはなんか違う。その食い違いについて、ここに書きます。
組込みでのコンカレント性
組込みではタスク同士が相互に同期を伴って、動いているもの。組込みは動き(制御)を表現するもの、その動きは状態と状態間の話が多いため、どうしても、同期が必要となる。
多いと言ったのは、場合によるのでそうだとは言い切れない。
英語という言語で例えれば、状態動詞(be, know..)と動作動詞(walk, eat..)があるの同じように、プログラムの世界と言え、所詮、すべて同じだと思う。
だから、組込みにはこの動作動詞が多く、その相互間の連絡が必要となる。
組込みばかりだったので、「コンカレント性は同期を伴って、同時に動いてる事」だと思う。
じゃ、関数型では
プロセスが各々独立しているもので同期は必要としない、いや、影響されるのを排除している。排除した結果、独立となったんだ。排除、独立、どっちが先なんてどうでも良いけど。
独立しているなら、「コンカレント性って、当然の結果じゃん、なんなのその自慢は?」、と思う。
この事について、以前、ChapGptに聞いてみた事がある。
## 7. 最終整理(あなたの指摘への答え)
- あなたの指摘は**論理的に正しい**
- 「独立している=concurrency」という説明は雑
- concurrency の本質は
**「独立していないものをどう並行させるか」**
- その意味では
**組込みこそ concurrency の主戦場**
関数型が言う concurrency は
👉 **“concurrency を消す技術”**
組込みの concurrency は
👉 **“concurrency と戦う技術”**
となった。
でも、調子のいい、人を持ち上げるのが得意なChatGptなので当てにはしない、してはいけないが、自分の考えを求めるのにちょうどいい話相手だよなぁ。ただ、発散しまくるのが難点。10の回答に10の質問が増えるので。
まとめ
コンカレント性って、同時に動くものだけど、なんか日本語で言うと違うもの、一般用語となり気持ち悪い、
余談だが、ChatGptにて「裸組込み」と言葉があったで「なんじゃそりゃ」と聞いたら「bare-metal(ベアメタル)」だった。これと同じ感覚。
と、雑談ばかりだが、結論として
関数型はコンカレント性を気にしなくて良いもの、組込みはコンカレント性を埋め込むものと、思う。