ソフトウェアには、3つの側面があると思う。 どういう切り口で3つの側面を取り出してもいいのだけど、とにかく3つの側面がある。 最近は、工学・理学・人文学の側面として考えるようになってきた。 たとえば、論理学などからプログラムの表現を考えていくようなプログラム意味論は理学だと思う。それから、プログラムの手続きのグラフ構造から最適化や計算可能性を考えるような、計算理論も理学になる。 なので、理学では意味論と計算論に分かれる。 この、理学だけでは実際に動くプログラムは組めないので、データベース論だとかユーザーインタフェースだとか、アプリケーションを組むためのことも考えないといけない。 理学をもとにアプリケーションを考えることになるので、これは工学になる。工学は多岐にわたる。 ただ、これをソフトウェア工学というと、別の分野になってしまう。 ソフトウェアを作成するとき、基本原理やアプリケーションの手