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

プログラミング用語（プログラミングようご）は、コンピュータのプログラムおよびプログラミングに関する用語の一覧である。
分野別に分類し記載している。
固有の製品名、言語名、機種名、ソフト名など、固有の一覧の記事がある場合にはその記事へのリンクのみを示し、ここでは記載しない。
五十音（アルファベット・その他）順の一覧については、プログラミング用語一覧を参照。

**コンピュータの理論的基礎**
 コンピュータ
** チューリングマシン、ノイマン型、その他、コンピュータを参照。- オートマトン

**プログラミング言語の位置づけ**

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

**プログラミング言語の分類**
 個別のプログラミング言語名については、プログラミング言語一覧を参照。- プログラミング言語
** 低水準言語と高水準言語- 言語処理系
** コンパイラとインタプリタ（「コンパイラ言語とインタプリタ言語」という分類はナンセンス）- 用途や形態による分類
** スクリプト言語
** マクロ言語- プログラミングパラダイムによる分類
** 手続き型言語 - 多数
** 関数型言語 - Haskellなど
** 論理型言語 - Prologなど
** オブジェクト指向言語 - Smalltalk、C++、Javaなど- ソースコードの表現法による分類（基本的に、抽象的には全く変わらない「プログラム」を、文字で表現するか文字以外のもので表現するか、という違いである。）
** テキストプログラミング言語
** ビジュアルプログラミング言語

**プログラミングの歴史**
 プログラミング言語年表

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

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

**システムプログラミング**
システムソフトウェアの記事も参照- プログラミングから見たCPUの基本要素
** 命令セット、レジスタ、アドレス、フラグ- 機械語、アセンブラ、ニーモニック、アドレッシングモード- メモリマップ - データ領域、コード領域、スタック領域- サブルーチン、スタックポインタ、マクロ- 割り込み - 割り込みベクタ- DMA(Direct Memory Access)

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

**オブジェクト指向**
 オブジェクト指向- モデル
** オブジェクト (プログラミング)、クラス (コンピュータ)、メッセージ駆動- カプセル化 - スコープ- 継承 - 単一継承、多重継承- ポリモーフィズム - 多重定義（オーバーロード）、オーバーライド- メッセージ駆動 - 委譲モデル- インスタンス- メンバ
** フィールド (計算機科学) - クラス変数、インスタンス変数
** メソッド (計算機科学)（メンバ関数）、コンストラクタ、デストラクタ、ファイナライザ- インタフェース (情報技術) - マーカーインタフェース- アノテーション- シャローコピー

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

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

**プログラム開発ツール**
 エディタ、テキストエディタ- アセンブラ、逆アセンブラ、コンパイラ、make、リンカ(リンケージエディタ)、デバッガ- 統合開発環境 - RAD (計算機プログラミング環境)- オーサリングツール、ICE(インサーキット・ エミュレータ)

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

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

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

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

**プログラムのドキュメント**
 Javadoc

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

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

**プログラミング技術・情報工学**
 情報工学も参照。- ソフトウェア工学

**論理演算**
 論理演算、ブール代数、論理式、真理値、真理値表- 論理和(OR)、論理積(AND)、否定(NOT)、排他的論理和(XOR)、同値- ビット演算- カルノー図

**データ構造**
プログラムで多く使われる基本的なデータの構造- データ構造
** 配列、線形リスト、スタック、キュー
** ハッシュテーブル、連想配列、木構造、B木 2-3木、グラフ、リングバッファ

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

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

**文字コード**
 文字コードを参照。

**ストリーム**
 ストリーム、パイプ

**構文解析**
 構文解析、構文解析器、字句解析- 逆ポーランド記法、正規表現、パターンマッチング- コンパイラ- DOM(Document Object Model)、SAX(Simple API for XML)

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

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

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

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

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

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

**関連項目**
 情報・通信・コンピュータ一覧の一覧- プログラミング言語一覧- プログラミング言語年表