ソフトウェア工学、ソフトウェア理学、ソフトウェア人文学

ソフトウェアには、3つの側面があると思う。
どういう切り口で3つの側面を取り出してもいいのだけど、とにかく3つの側面がある。
最近は、工学・理学・人文学の側面として考えるようになってきた。


たとえば、論理学などからプログラムの表現を考えていくようなプログラム意味論は理学だと思う。それから、プログラムの手続きのグラフ構造から最適化や計算可能性を考えるような、計算理論も理学になる。
なので、理学では意味論と計算論に分かれる。


この、理学だけでは実際に動くプログラムは組めないので、データベース論だとかユーザーインタフェースだとか、アプリケーションを組むためのことも考えないといけない。
理学をもとにアプリケーションを考えることになるので、これは工学になる。工学は多岐にわたる。
ただ、これをソフトウェア工学というと、別の分野になってしまう。


ソフトウェアを作成するとき、基本原理やアプリケーションの手法を知っていても、実際にはどうやって構築するかが大切になる。つまり、人間がどのように情報を認識して、まとめて、ソフトウェア開発を実践していくかという人文的な考え方が必要になる。
プログラムはこんな感じで分割すると見やすいとか、プロジェクトはこんな感じでまわすべきとか、そういうの。
実際にはこれが、ソフトウェア工学とよばれる分野なのだけど、ソフトウェア人文学だよねぇとか思ったりする。ソフトウェアの中の文系。


よく、理系より文系のほうがお金持ちになるというけど、ソフトウェアではプロジェクト管理のほうが給料も高くなるし、本を書くにしても、よりよいプログラムの書き方とかプログラマの生き方という本のほうがよく売れるし、やっぱりソフトウェア人文学のほうがお金持ちになるのかもしれない。