プログラミングにおける命令型と宣言型の違いとは
#プログラミング
#「〜とは何か」とは
命令型プログラミングと宣言型プログラミングの対比
基本的な定義については各種ページへ委譲する
ここでは差分理解に努める
対立構造があるわけではないkoushisa.icon
関数型プログラミングと型システムのメンタルモデル
https://scrapbox.io/files/653ee84d3647c7001c4a5b84.png
命令型
Howを主として書く
ロジックと制御が密結合
処理順を変えると出力結果が変わる
時間的凝集
参照透過性や冪等性は持たない
オブジェクトの内部状態を書き換える命令を行うことで、状態を変化させる
宣言的
関数型の言葉を借りると
参照透過性が担保されている
副作用が隠蔽されている
合成容易性が高い
遷移前の状態は必ず引数に現れ、遷移後の状態は戻り値に現れる
Whatを主として書く
合成容易性、テスト容易性が高い
例: Redux#6417b82286603000002c1339
より数学的なアプローチに近い #関心事の分離
制御と状態と式の分離
リソースの宣言と更新手順の分離
「それがなにか」(What)と「どうするか」(How)の分離
RAII(Resource Acquisition Is Initialization)
機能的凝集にしやすい
外側に近いモジュールほど一方通行のストーリーを作る
宣言型、命令型、手続き型の違いを考える
読みやすい文章は、読みやすいコードの特徴と似ている
@nishio: 多くのプログラマーにとって手続型でないパラダイムに触れるのは正規表現なんじゃないかと思う。どういうパターンのものにマッチして欲しいかを記述して、具体的にどうするかは正規表現エンジンに任せる。LLMsがプログラムに組み込まれていく流れも似たものになる。
宣言的UIと命令型UI
React Docs > How declarative UI compares to imperative
宣言的UIと命令的UIとは?コードで見る違い
Reactは関数型プログラミングを必ず学習しなければいけないという誤解
Parse, don’t validate