プログラミング用語 (分野別)

プログラミング用語は、コンピュータのプログラムおよびプログラミングに関する用語の一覧である。

分野別に分類し記載している。

固有の製品名、言語名、機種名、ソフト名など、固有の一覧の記事がある場合にはその記事へのリンクのみを示し、ここでは記載しない。

五十音順の一覧については、プログラミング用語一覧を参照。

1. コンピュータの理論的基礎
---------------

コンピュータ
チューリングマシン、ノイマン型、その他、コンピュータを参照。
オートマトン

2. プログラミング言語の位置づけ
-----------------

2.1. コンピュータ言語の分類
----------------

プログラミング言語は人工言語、コンピュータ言語の中の1群である。

言語、言語学、計算言語学
自然言語
人工言語、形式言語
コンピュータ言語 - コンピュータで用いられる人工言語。
プログラミング言語 - コンピュータ上で動作するプログラムを作成する言語。
データ記述言語 - 主に複雑なデータを格納することを目的とする言語。マークアップ言語など。
問い合わせ言語 - データの問い合わせに用いる言語。
データベース言語 - データベースのアクセスに用いる言語。
仕様記述言語 - 主にプログラムの設計に用いられる言語。モデリング言語など。
ハードウェア記述言語 - 主に集積回路の設計に用いる言語。
ハードウェア制御言語 - 人間は記述は行わない。プリンタや表示の制御など。

2.2. プログラミング言語の分類
-----------------

個別のプログラミング言語名については、プログラミング言語一覧を参照。
プログラミング言語
低水準言語と高水準言語
言語処理系
コンパイラとインタプリタ
用途や形態による分類
スクリプト言語
マクロ言語
プログラミングパラダイムによる分類
手続き型言語 - 多数
関数型言語 - Haskellなど
論理型言語 - Prologなど
オブジェクト指向言語 - Smalltalk、C++、Javaなど
ソースコードの表現法による分類
テキストプログラミング言語
ビジュアルプログラミング言語

3. プログラミングの歴史
-------------

プログラミング言語年表

3.1. プログラム開発の歴史
---------------

ソフトウェア工学
プログラミングの変遷
パンチカード
プログラムの寿命 - 最初に考えるべき重要な問題。
プログラムの品質
プログラムの結合度 - スパゲティプログラム、多重継承、オブジェクト指向
プログラミング
構造化プログラミング - goto文
関数型プログラミング
イベント駆動型プログラミング
オブジェクト指向プログラミング - オブジェクト指向、差分プログラミング
Webプログラミング
開発手法
ウォーターフォール・モデル
スパイラル・モデル
エクストリーム・プログラミング - 軽量開発手法、アジャイルソフトウェア開発
テストファースト
設計手法
フローチャート
モデリング言語 - UML
デザインパターン
状態遷移図

3.2. プログラミングの文化
---------------

デファクトスタンダード
フリーソフトウェア
フリーソフトウェア運動、フリーソフトウェア財団、GNU General Public License、コピーレフト
オープンソース - Open Source Initiative
リバースエンジニアリング

4. システムプログラミング
--------------

システムソフトウェアの記事も参照

プログラミングから見たCPUの基本要素
命令セット、レジスタ、アドレス、フラグ
機械語、アセンブラ、ニーモニック、アドレッシングモード
メモリマップ - データ領域、コード領域、スタック領域
サブルーチン、スタックポインタ、マクロ
割り込み - 割り込みベクタ
DMA

5. 主として手続き型言語の言語機能
------------------

メモリマップ
データ領域、コード領域、スタック領域、ヒープ領域
定数領域、BSS領域、静的領域、静的データ、動的データ
ソースコード
Hello world - 各プログラミング言語によるサンプルプログラム。
構文規則 - バッカス・ナウア記法
コメント
予約語
キーワード 、予約語 、…
演算子
識別子 - メタ構文変数
行番号
基本制御構造
分岐処理 - if文、switch文
反復処理、ループ - for文、while文
順接
その他の制御
再帰呼び出し - 末尾再帰
無条件ジャンプ - goto文
例外処理 - 継続
サブルーチン
マクロ、関数、手続き、メソッド 
引数 - 値渡しと参照渡し
return文
データ・データ型・型システム
プリミティブ型と複合型
数値型 - 整数型、浮動小数点型、など
文字 - 文字型、文字列型
コンテナ  - 配列、構造体、など
抽象データ型 - オブジェクト指向を参照。
ポインタ型
データ型に関するその他の記事 - 列挙型、ブーリアン型、など
修飾子
定数
静的変数
フィールド  - インスタンス変数、クラス変数
アクセス制御子
スコープ
ブロック構造
変数 - グローバル変数、ローカル変数
動的スコープ、静的スコープ
変数、関数、メソッドなどの外部宣言、アクセス制御子
前方参照 - プロトタイプ宣言、forward宣言
名前空間
カプセル化
プリプロセッサ - マクロ
モジュール
ライブラリ、unit、パッケージ 
名前空間
プラグイン
型チェック - キャスト

6. オブジェクト指向
-----------

オブジェクト指向
モデル
オブジェクト 、クラス 、メッセージ駆動
カプセル化 - スコープ
継承 - 単一継承、多重継承
ポリモーフィズム - 多重定義、オーバーライド
メッセージ駆動 - 委譲モデル
インスタンス
メンバ
フィールド  - クラス変数、インスタンス変数
メソッド 、コンストラクタ、デストラクタ、ファイナライザ
インタフェース  - マーカーインタフェース
アノテーション
シャローコピー

7. プログラム開発
----------

プログラム
プログラマ
システムエンジニア
アーキテクト

7.1. プログラムの設計
-------------

プログラム開発手法 - プログラミングの歴史を参照。
構造設計
フローチャート、PAD、
モデリング言語 - UML
インターフェイス設計
デザインパターン
API

7.2. プログラム開発ツール
---------------

エディタ、テキストエディタ
アセンブラ、逆アセンブラ、コンパイラ、make、リンカ、デバッガ
統合開発環境 - RAD 
オーサリングツール、ICE

7.3. コンパイラ
----------

コンパイラ
プログラミング技術・情報工学の構文解析も参照。
ネイティブコード、中間コード、バイトコード
コンパイラ
最適化、80-20の法則
事前コンパイル、動的コンパイル、ジャストインタイムコンパイル方式、適応的コンパイル、遅延コンパイル

7.4. プログラムの実行環境
---------------

インタプリタ
ライブラリ
動的リンク、静的リンク
ダイナミックリンクライブラリ、ランタイムライブラリ
仮想機械 - ジャストインタイムコンパイル方式、ガベージコレクション

7.5. プログラムの実行エラー
----------------

デバッグ - バグ をとること。
セキュリティホール
算術エラー - 算術オーバーフロー
メモリ不足 - スタックオーバーフロー
メモリ破壊 - スタック破壊、メモリリーク、バッファオーバーラン
制御不良 - 無限ループ、デッドロック、非同期アクセス
不正操作 - 命令違反、特権違反、単なるポインタの誤操作
設計ミス

7.6. プログラムのテスト
--------------

ソフトウェアテスト
テスト駆動開発、テストファースト、テストプログラム
単体テスト、結合テスト、総合テスト、ブラックボックステスト、ホワイトボックステスト
検証ツール、コード網羅率、プロファイリング
スループット、ボトルネック、80-20の法則
インスペクション、ウォークスルー、チーム・レビュー、パスアラウンド、ピア・レビュー、ペア・プログラミング、アドホック・レビュー、

7.7. プログラムのドキュメント
-----------------

Javadoc

7.8. プログラムの移植
-------------

移植性、クロスプラットフォーム

7.9. プログラムの権利
-------------

著作権、ソフトウェア特許、リバースエンジニアリング、アルゴリズム特許

8. プログラミング技術・情報工学
-----------------

情報工学も参照。
ソフトウェア工学

8.1. 論理演算
---------

論理演算、ブール代数、論理式、真理値、真理値表
論理和、論理積、否定、排他的論理和、同値
ビット演算
カルノー図

8.2. データ構造
----------

プログラムで多く使われる基本的なデータの構造

データ構造
配列、線形リスト、スタック、キュー
ハッシュテーブル、連想配列、木構造、B木 2-3木、グラフ、リングバッファ

8.3. アルゴリズム
-----------

ソート - データを並べ替えること
バブルソート、シェルソート、ヒープソート、クイックソート、マージソート、・・・
探索
線型探索、二分探索
グラフ
閉路

8.4. 数値計算
---------

フーリエ変換、高速フーリエ変換、離散コサイン変換、ウェーブレット変換

8.5. 文字コード
----------

文字コードを参照。

8.6. ストリーム
----------

ストリーム、パイプ

8.7. 構文解析
---------

構文解析、構文解析器、字句解析
逆ポーランド記法、正規表現、パターンマッチング
コンパイラ
DOM、SAX

8.8. 制御手法
---------

割り込み処理
プロセス管理
プロセス、マルチプロセス、スレッド、スケジューリング、ラウンドロビン方式
プロセス間通信
共有メモリ
同期、排他制御、セマフォ、モニタ
トランザクション
ウォッチドッグ、リアルタイムシステム
状態制御 - 状態遷移、状態遷移図

8.9. メッセージ伝達手法
--------------

コールバック
メッセージ駆動、委譲モデル
イベント駆動型プログラミング - イベント

8.10. データファイル
-------------

設定ファイル
データ記述言語、マークアップ言語、XML、DOM、SAX

8.11. 通信手法
----------

プロトコル、ハンドシェイク、通信シーケンス、状態制御

8.12. バージョン管理
-------------

マジックナンバー、バージョン管理システム

8.13. その他
---------

データ圧縮 - データ圧縮を参照
暗号 - 暗号を参照。
人工知能
ライフゲーム、制御理論、ファジィ制御、ニューラルネット、遺伝的アルゴリズム

9. 関連項目
-------

情報・通信・コンピュータ一覧の一覧
プログラミング言語一覧
プログラミング言語年表