このページをはてなブックマークに追加このページを含むはてなブックマーク このページをlivedoor クリップに追加このページを含むlivedoor クリップ

*目次 [#m20b7f4e]

#contents


*プログラミング言語の分類 [#oad91e5d]

 プログラミングで用いるプログラミング言語(プログラム言語)は、実装する機能などに応じて適したものを選択する。主なプログラミング言語は、次のものがある。

-汎用プログラム言語
--低水準言語
---[[機械語]]
---[[アセンブリ言語]]
--高水準言語
---手続き型言語:C言語,COBOL,Fortran,BASIC,Pascalなど
---非手続き型言語:オブジェクト指向言語(C++,Java,Smalltalkなど)、関数型言語(LISPなど)、論理型言語(Prologなど)
---第4世代言語:SQL
---手続き型言語:[[C言語]],COBOL,Fortran,BASIC,Pascalなど
---非手続き型言語:オブジェクト指向言語([[C++]],[[Java]],[[Smalltalk]]など)、関数型言語(LISPなど)、論理型言語(Prologなど)
---第4世代言語:[[SQL]]
-スクリプト言語
--Perl,HTML,JavaScript,Rubyなど
--[[Perl]],[[HTML]],[[JavaScript]],[[Ruby]]など
-特殊問題向き言語


*翻訳プログラム [#ec75830f]

|言語|翻訳プログラム|翻訳結果|
|アセンブリ言語|アセンブラ|機械語|
|高水準言語原始プログラム|コンパイラ|機械語(オブジェクトコード)|
|高水準言語原始プログラム|インタプリタ|機械語(逐次翻訳)|
|高水準言語原始プログラム|クロスコンパイラ|機械語(他のコンピュータで動作するオブジェクトコード)|
|拡張プログラミング言語の原始プログラム|プリコンパイラ|標準プログラミング言語の原始プログラム|
|アセンブリ言語|クロスコンパイラ|機械語(他のコンピュータで動作するオブジェクトコード)|
|データ形式、処理条件、出力条件|ジェネレータ|機械語|
|原始プログラム|トランスレータ(コンバータ)|他のコンピュータの原始プログラム|


*プログラミング言語の進化 [#ke786e76]

**高級言語までの進化 [#a989ab5c]

-命令の高級化により表現力が向上した。つまり、生産性が向上した。
-サブルーチンの導入により、再利用が促進された。

**構造化言語における進化 [#c6673fd7]

-基本3構造により、プログラムがわかりやすくなった。つまり、保守性が向上した。
-GOTOレスプログラミングにより、スパゲッティコードの複雑さを回避されるようになった。つまり、品質が向上した。
-サブルーチンの独立性を強化することにより、再利用が促進された。
--この時代にはコード変換、入出力処理、数値計算、文字列処理などの汎用ライブラリが提供され、基本的な処理については既存プログラムを再利用することもある程度行われるようになった。
--しかし、それでも増大するアプリケーションの規模全体からすると微々たるものである。大規模な再利用を実現できないのは、共通部品として作れるのがサブルーチンだけであることが原因である。
-構造化言語ではローカル変数や値私の仕組みが導入されたが、グローバル変数経由での情報の受け渡しを必要最小限に抑えることができるようになった。
--しかし、ローカル変数はサブルーチン呼び出しが終わると存在自体がなくなってしまう一時変数である。サブルーチンの実行期間を超えて保持する必要がある情報はサブルーチンの外側、即ちグローバル変数として保持せざる得ないという問題がある。

**[[OOP]]における進化 [#y84df9a0]

-パッケージの仕組みによってクラスをまとめることができ、保守性が向上した。
-[[例外]]、[[ガベージコレクション]]、型チェックの強化、言語使用の退化などにより、品質が向上した。
-クラスによる部品化、[[ポリモーフィズム]]((類似したクラスに対するメッセージの送り方を共通にする仕組みのこと。))、[[継承]]などにより、再利用が促進された。


*参考文献 [#h31136d2]

-『超図解mini 基本情報技術者試験 平成19年度版』
-『オブジェクト指向でなぜつくるのか』