科学と家事とプログラミング (python を中心に)

python 温度計測 湿度計測 DS18B20 USB9097

超構造化(01) プログラミング雑感

プログラムは「計算手順の集まり」という捉え方は間違いではないけれど、それ はCPU側から見た捉え方なのだと思う。人がプログラムを読み書きする場面で は、まったく別の捉え方が許される。手順的なプログラムは、少しの工夫で宣言的なプログラムに変換できる場合も多い。それが可能であるなら、プログラムは 「問題記述(宣言)の集まり」ということになる。この文脈において、構造化プロ グラミングが提示する if/else という構文は、問題をスッキリと表現/記述する ための手法/道具と位置付けることができそうだ。

1960 年代に構造化プログラミ ングが提唱されて以来、ずいぶんと長い時間が経過しているが、構造化プログラ ミングに宣言的プログラミングの可能性を認める立場は、(少なくとも開発現場 においては)少数派に留まるように思う。適用できる場面が限定的なため、学術的な議論に乗りにくく、入門書で 取り上げられることも少ないからだろうか。 ブログの記事で、手続き型言語(C 言語や Java)の枠組みの中における、宣言的なプログラムの可能性をさぐってみたい。コーディングに関わるテーマが大半を占めるが、設計で 使うチャートや状態遷移も取り上げる。各テーマについて、構造化プログラミン グの考え方を一歩すすめて、宣言的/空間的な観点から論じる。

表題の「超構造化」は、「手順の集まり」から「宣言的プログラム」への移行を表現す るために選んだアイキャッチである。誇大広告の感は否めないが、そこは御容赦 願いたい。紹介する視点や手法は、それが正解というものではないが、開発期間の制約が厳しい場面で特に効果を発揮する。

f:id:sken20k:20180207224025p:plain