前置き
項目としては短いですが、ここで紹介される4分類はプログラミングにおいて、重要な要素を担っていますので、コードがんがん書く人はしっかり理解しておいた方がいいです。
プログラム言語
プログラム言語の変遷
プログラム言語は人間と機械を結びつける為に生まれた。
コンピュータは機械(マシン)語しかわからないが、人間は機械語を作るのが大変。
時代の需要に合わせて徐々に進化してきた。
1. 機械語(マシン語)
2進数で表される。機械が理解できるのはこの言語のみ。2進数は人間にはとても分かりにくいので、昔は16進数でプログラムしていた。
2. アセンブリ言語
機械語と1対1で対応させて書きやすくした言語。加算演算をADD、データ移動をMOVなどと表現する。
人間の考え方とはだいぶ異なるので使うのは大変。
3. 高級言語(高水準言語)
人間にとって分かりやすい形式というコンセプトでかかれた言語。以下に例を示す。
COBOL…英語で文章を書くように事務処理を記述できる。
FORTRAN…数式で科学技術計算を行うための言語。
4. 構造化言語
高級言語で適当にプログラムしていると、スパゲティプログラムが出来上がる。
そこで、ダイクストラの基本3構造「順次、選択、繰返し」のみで記述するという考え方が出来た。CやPascalがこれにあたる。
5. オブジェクト指向言語
構造化言語ではグローバル変数が問題をもたらすことが散見された。そこで、共通で同じ変数を使用する関数をまとめるクラスという考え方が出来た。また、オブジェクト指向というオブジェクトやクラスを中心とする考え方が提唱された。
最初にSmalltalkが誕生し、C言語の発展形であるC++やJavaが生まれた。特にJava言語ではCやC++のように使い終わったメモリを開放しないメモリリークという問題に対応するため、自動でメモリを開放するガーベジコレクションという機能が備わった。
その他の言語分類
進化の流れ以外にも様々な分類ができる。
1. 手続型言語
処理手順を1行1行順を追って行う言語。COBOL, FORTRAN, C, C++, Javaなど通常の言語の殆どがこれにあたる。
2. 関数型言語
関数の定義とその呼び出しで記述する言語。再帰処理向けで代表的なものにLispがある。
C言語の関数とは意味が異なる数学的な形式なので注意。
3. 論理型言語
述語論理を基礎とした論理式でプログラムを記述する言語。人工知能の研究開発で使用されるPrologなどが代表例となる。
4. スクリプト言語
プログラムを機械語にコンパイルするのではなく、スクリプト(台本)のように記述して1行1行処理する簡易的な言語。UNIX上でシェルを動かす為のシェルスクリプトやExcelのマクロ言語の他、Webブラウザ上で動くものとして、Javascript, JScriptがある。これらは互換性が低いため、共通する部分をまとめて標準化したECMAScriptも作られた。
また、Webサーバ上で動くJavaのスクリプト言語にはJSPがある。なお、サーバ上ではスクリプト言語ではないJavaアプリケーションやサーブレットも動く。その他にもWebサーバ上で動くものにPerl, Ruby, PHPなどがある。
共通言語基盤
共通言語基盤(CLI)は、プログラム言語やコンピュータアーキテクチャにに依存しない環境を定義したもの。
マイクロソフトが策定した.NET Frameworkの基幹を構成する実行コードや実行環境などについての仕様です。
.NET FrameworkでコンパイルしたプログラムはLinuxやMacOSなど、Windows以外でも動く。
Ajax
Ajax(Asynchronous JavaScript + XML)は、Webブラウザ上で非同期通信を実施し、通信結果によってページの一部を書き換える手法。
JavaScriptの通信機能を利用し、従来の技術を組み合わせて非同期通信を実現した。
最後に
プログラミングの歴史みたいなものですね。
まあ、ぶっちゃけ応用情報の勉強的には、このあたりの知識は不要かなと思います。