内部 的 に は 、 デジタル コンピュータ で は 全て の データ が 0 と 1 ( 二進法 ) で 格納 さ れ て いる 。
型のある 言語 と は 、 型 システム によって 、 それぞれ の 値 の データ 型 に 応じ て 、 定義 さ れ て い ない 操作 が 実行 さ れ ない よう チェック さ れる 機構 を 持つ もの を 指す 。
対照 的 に アセンブリ 言語 など の 型 の ない 言語 は 、 任意 の データ に 任意 の 操作 を 実行 可能 で あり 、 データ は 単に ある 長 さ の ビット列 として 扱わ れる 。
多く の 実用 的 な 言語 に は 、 型 システム を 迂回 または 打倒 する よう な 手段 が 用意 さ れ て いる 。
静的 型付け で は 、 全て の 式 の 型 は その プログラム を 実行 する 前 ( 一般 に コンパイル 時 ) に 決定 さ れる 。
例えば 、 1 とか ( 2 + 2 ) という 式 は 整数 型 で あり 、 文字 列 を 期待 し て いる 関数 に は 渡せ ず 、 日付 ( 型 ) を 格納 する よう 定義 さ れ た 変数 に は 代入 でき ない 。
たとえば 、 Java や C # で は 限定 さ れ た 状況 で 型 推論 を 行う 。
言い換えれ ば 、 型 は ソース 上 の 表現 で は なく 、 実行 時 の 値 に対して 付与 さ れる 。
データ を 入力 さ れれ ば 、 コンピュータ は その データ に対して 何らかの 処理 を 実行 する 。
言語 仕様 に は 必ず 実装 し なけれ ば なら ない 部分 が 定義 さ れ て おり 、 標準 化 さ れ た 言語 の 場合 、 それ に は 標準 ライブラリ も 含ま れる 。
例えば Java で は 、 文字 列 リテラル は java . lang . String クラス の インスタンス として 定義 さ れる 。
コンパイラ の 出力 は 、 ハードウェア で 実行 さ れる 場合 と インタプリタ で 実行 さ れる 場合 が ある 。
19 世紀 に は 、 プログラム 可能 な 織機 や 自動 ピアノ 向け の 巻紙 が あり 、 そこ に は 現代 的 分類 で 言え ば ドメイン 固有 言語 と さ れる プログラミング 言語 で プログラム が 書か れ て い た 。
1930 年代 から 1940 年代 にかけて 、 アルゴリズム を 表現 する 数学 的 抽象 表現 を 提供 する ラムダ 計算 ( アロンゾ・チャーチ ) と チューリングマシン ( アラン ・ チューリング ) が 考案 さ れ た 。
1940 年代 、 世界 初 の 電子 式 デジタル コンピュータ 群 が 製作 さ れ た 。
1950 年代 後半 に なる と 、 アセンブリ 言語 で マクロ 命令 が 使わ れる よう に なり 、 その後 FORTRAN 、 LISP 、 COBOL という 3 つ の 高水準 言語 が 開発 さ れ た 。
初期 の プログラミング 言語 の 仕様 と 使い方 は 、 当時 の プログラミング 環境 の 制約 ( パンチ カード による プログラム 入力 など ) に も 大きく 影響 さ れ て いる 。
1960 年代 から 1970 年代 末 ごろ まで に 、 現在 使わ れ て いる 主 な 言語 パラダイム が 開発 さ れ た が 、 その 多く は ごく 初期 の 第 三 世代 プログラミング 言語 の アイデア の 改良 で ある 。
この 論争 で 特に 有名 な もの は 、 1968 年 に Communications of the ACM に 掲載 さ れ た エドガー・ダイクストラ の レター Go To Statement Considered Harmful で あろ う 。
1960 年代 と 1970 年代 は 、 プログラム の メモリ 使用 量 を 削減 し 、 プログラマ や ユーザー の 生産 性 を 向上 さ せる 技法 も 進展 し た 時期 で ある 。