宣言型プログラミング
つまり、命令型プログラムでは目的を達成するための方法を「手続き」として示すのに対し、宣言型プログラムでは達成すべき目的(出力)を示して、それを実現する手続きはシステム(処理系・ランタイム・フレームワークなど)に任せるわけである。
欲しいものを宣言すれば、あとは内部で適当につくってくれる
(外でも使われている)変数に参照するだけで、今の値が手に入る
自分でつくらなくてもいい
frontendの場合、自分で状態処理を書かなくていい
backendの場合、自分で手を動かして設定を変えたりパーツを拡張したりしなくてもいい
何が嬉しい?
実装が(状態部分を丸々やらなくて良い分)本質的に楽
アルゴリズムを実装しなければならない場合はどうする?
普通に実装してください
ただし、そのアルゴリズムの実装に「状態管理」が必要な場合は、宣言的に書けて楽できると思います
sta.icon
frontendとbackendは、たぶん別々で考えた方がいい気がする
たとえば冪等性を担保できるはbackendの話だろう mapの例
二倍したい、ということだけ書けばいい
reactの例
dom操作を指定してない
hr.icon
inputに入れたテキストをリアルタイムに(すぐ下のpタグ内に)表示したいとして
普通にやると
イベントハンドラとか使ってpタグの中身を更新する処理を書く
Vue.jsでやると
inputタグとpタグを並べたテンプレートをつくる
テンプレート中に「ここでこの変数を使う」を指定する
その変数はinputもpも同じものを使う
これだけでいい
何が嬉しい?
更新処理を書かずに済む
Vue.jsが「inputでの変更」を追従して変数更新してくれる
Vue.jsが「更新された変数を使っている他のすべての箇所(ここではpタグ)」にも反映してくれる
AWSインスタンスが欲しい場合
インスタンスタイプとか、AMIとか、パラメーターを並べて「これつくれ」するだけでいい
従来はどうしてた?
自分でサーバーセットアップして
メモリやディスクやらセットして
OSインストールして
……
みたいなことを全部やらないといけなかった
何が嬉しい?
つくりたいものを宣言して任せるだけで、あとはよしなにやってくれる
例
backend
frontend
classオワコンだったのか、全然知らんかった
Go言語でもサポートされてなくて「なんでや」思ってた class は例外的な状態コンテナであるということ。
状態を class で表現する OOP はもう古くなっていて、宣言的リソースの時系列管理、そしてリソースの更新手順の分離という風にトレンドが移っており、コーディングのミクロのレベル、インフラのようなマクロのレベルでも状態というものが可能な限り廃するのがよい。
時系列に基づいた状態の宣言
これがわからん
"時系列" に基づいた宣言って何?