プログラミング言語とソフトウェアアーキテクチャ
実装言語はソフトウェアアーキテクチャにどのくらい影響があるものだろうか?
実装言語を選択する基準としていくつか考えられる。
言語仕様による部分もあるが、
ライブラリやフレームワークが充実していること
は重要な条件だと思う。今、AI・ディープラーニングを学ぶとき python を使うのは、ライブラリやフレームワークが充実しているから。
処理速度が速いこと、省メモリで動くこと
これも重要。ハードウェア制御系・モバイルなど組込みシステムでは性能が要求される。
スケーラビリティがあること
Web系システム、大規模なものではとても重要。アーキテクチャがスケーラビリティを考慮していないと、ユーザ数が増えたとたんにシステムダウンしたり、むちゃくちゃ遅くなったりする。
今ではクラウドプラットフォーム(AWSとか Azure とか Google Platform とか)がスケーラビリティを実現するための様々なサービスを提供しているので、
それらを利用すればかなりのことができるはず。
関数型プログラミング言語とその特徴
関数型プログラミング言語の特徴
- 参照透過性
- パターンマッチング
- 高階関数
- 関数を引数にできる
- 関数を戻り値にできる
- クロージャー
- 遅延評価
- 部分適応
- カリー化
特徴それぞれについて、具体的に理解したい。
What それはなにか?
概要。書式。
Why なぜそれを使うのか?何がうれしいのか?
使用目的を明らかにする。
When, Where いつ、どんな状況で使うのか?
適用範囲を明確にする。
また、「使うべきでないとき」を明確にする。
How どうやって使うのか?
書式とともに、具体例をいくつか。