プログラミングに関わる概念、用語とか

http://www.rubyist.net/~matz/20080204.html#p01
を読んで考えた。
以下はあくまで個人的な感想と見解と理解です。
プログラミングに関わる概念や用語はたくさんある。
学問としての計算機科学と、現場よりのプログラミングの技法や知識には当然違いがある。
http://ja.wikipedia.org/wiki/%E8%A8%88%E7%AE%97%E6%A9%9F%E7%A7%91%E5%AD%A6
をみると、

あたりが中心な気がする。
ここらあたりは、もうよく研究し尽くされていて
鉄板という感じ。
どうもソフトウェア工学は計算機科学に含まれるらしい。意外。
計算機科学と理論計算機科学をごっちゃにしていたかな。

ともかくこういう学問の世界は系統だてられていて、
教科書も豊富なのだが、
実技としてのプログラミングを身につけるためのもではない。

ゲームプログラミングをしたりWebアプリや業務アプリケーションを書いたり、
といったことへの入り口から基礎までに関する知識が、
いまいち利用しやすい状態で用意されていない。

たとえばWebアプリを作りたいんだがそもそもプログラミングがわからないのだが、
と言われたときに、自信をもって勧められるサイトや書籍がない。

初めてのプログラミング
やさしいプログラミング

あたりか。いまいちピンとこない。
SICPはよい本だとは思うけれど、まさか普通の初心者には勧められないだろう。
問題がなにかが自分でもわかっていない。
これらの本が不満なのか。
入門書の先が続かないのが不満なのか。
入門書がJavaやCばかりなのが不満なのか。
(個人的には入門にはPythonが適していると思う。Rubyでもいい。
静的型でもいいけれどJavaだと冗長すぎる。

これを書いて気づいたが、実技としてのプログラミングでは、
言語の処理系ありきとなる。
プログラミングには、言語の処理系、コミュニティ、
ライブラリ、書籍やサイト、近くの詳しい人、
その言語で求人があるかどうか、
Webやデータベース、業務に関する知識、
エディタやIDEに関する知識、OSに関する知識、
ネットワークに関する知識、
もろもろが関わってくる。

純粋にプログラミングに関係していると思われる用語や概念だけをちょっと
ならべてみた。

抽象化
構造化
関数 引数 戻り値
手続き
状態 状態マシン
副作用
名前空間
クラス プロトタイプ
オブジェクト オブジェクト指向
ループ 繰り返し for while
リンクリスト
配列 可変長配列 リスト ベクター
遅延リスト
リスト内包表記
ハッシュマップ 辞書
コンパイル コンパイラ ネイティブコード 機械語 アセンブラ
バイトコード VM
パース パーサー 
テンプレート ジェネリックプログラミング


などなど。