宣言的と手続的とは、「目的の宣言」と「手段の命令」のこと
なので、これは目的
手続的(命令的)とは、どう実現するか(how)を書くこと
こっちは手段
目的の読み書きがしやすいのが大事
だから、目的と手段を分離すると良い
記事にもしといたmiyamonz.icon
https://gyazo.com/86c8b1f885838fa7e6982ade26886cef
https://gyazo.com/9a1cd6c8a64a16f20a5fcce4eee70a91
Array.prototype.mapという手段を用いて記述することで、「要素を2倍する」という目的が簡潔に書ける
手段の部分をmapの実装部分に任せている
宣言的UIとは、UIにおいて必要になってくる具体的な手続き、手段をライブラリ内に隠蔽している DOM操作
アプリケーションの特定の状態を画面に反映させたり、インタラクトするという目的を直接的に記述できる
mapのコードの色分けでの説明が示しているように、厳密には、宣言的なコードとは、「宣言的に書ける」これ自体だけではなく、
「目的の宣言」の記述箇所と、「手段の命令」の記述箇所が、疎結合であるという認識のほうが正確である。 その上で、前者部分の場所を宣言的と言っている
で、手段の部分がライブラリで提供される場合は、手段の記述がライブラリの実装の内側に移動するので、コードを書く人にとっては見えなくなる
そういえば、アプリケーションのコードを書く能力と、ライブラリを書く能力は違うよね、という話もあったが、ここの概念も近いところにあるだろうか
単に、OSSのように、contributeが開かれている環境下でのチームのorganizeがある種特殊技能である、というところもあるが
アプリケーションコードは目的の達成が主眼であり
ライブラリは、良い手段の提供(と、場合によっては、解決手段の提案)が主眼である
-----------
宣言的なものは、それを実際にどうさせるために、内部ななんかする
手続き的なものの上で実装される
reactのreconcilerとか
Want とHow toなので、これらは対立ではないが、離れた場所におかれる2つの概念である
基本的には、第3の概念は無い、と見ていい
宣言したい概念、タイプが2つ以上あって、それらをどう解決するか、というものはあるかもしれない
その場合はかなり複雑になりそう
パッと連想したのがkubernetes
触ったこと無いので分からんが
対立概念ではないとも思っていたが、そうでもない気もしてきた
whatは目的、howは手段と見れるので、目的と手段という軸で見れる 問題とそれに対する解決
目的とそれに対する手段
この様に捉えれば、宣言的と手続き的というのは、対立した軸をなす
LISPは宣言的に書けるので
どこに書いてあったっけ
「コーヒー頂戴」
オートマとマニュアル
マニュアルは、ギアチェンジという手段を明示的に操作する
オートマは、動作方向(進む、戻る、止まる)という目的の挙動だけを指定してる。