プログラミング言語はコミュニケーションのための手段としてそれらの目的に関連する自然言語と特性を共有します、構文のフォームを意味論から別々にして、別のものから分岐しているものを同族語の言語家族に示して。 しかし、また、人工の構造物として、それらは基本的な道において発展した言語から用法で異なります。 著しい違いはプログラミング言語を全体として完全に説明して、研究できるということです、それには正確で有限な定義があるので。 対照的に、自然言語で、彼らのユーザは異なった共同体で変化意味を与えます。 組み立てられた言語はまた、ゼロから明確な目標で設計された人工言語ですが、それらはプログラミング言語が持っている正確で完全な意味定義を欠いています。
プログラミング言語のどんなすべてを包含する分類計画もありません。 特定のプログラミング言語には、通常、ただ一つの先祖言語がありません。 言語は、いくつかの前任者言語の原理を当時流通における新しいアイデアに結合することによって、一般的に起こります。 1つの言語で起こる考えは、同族語の家族中で拡散して、次に、完全に異なった家族に現れるように家族のギャップの向こう側に突然跳ねるでしょう。
すべてのプログラミング言語には、それらに適用されたデータの記述と過程か変化2つの番号の添加や収集からの項目の選択のようなのためのいくつかの原始の構成要素があります。 これらの基関数はそれぞれそれらの構造と意味について説明する構文的、そして、意味的な規則で定義されます。
主にコンピューティング分野で何千もの異なったプログラミング言語を作成してあります。 プログラミング言語は彼らが、より大きい度合いの精度と完全性を必要とするという点が他のほとんどのフォームの人間の式と異なっています。 他の人々とコミュニケートするのに自然言語を使用するとき、人間の作者とスピーカーは、あいまいであり、小さい誤りをして、まだ理解されるべき彼らの意図を予想できます。 しかしながら、比喩的に話すなら、コンピュータは、「まさにそれらがするように言われることをし」て、プログラマがどんなコードを書くつもりであったかを「理解できません」。 言語定義、プログラム、およびプログラムの入力の組み合わせはプログラムが実行されるとき起こる外部の振舞いを完全に指定しなければなりません、そのプログラムのコントロールのドメインの中で。
最初のプログラミング言語は現代のコンピュータより前に起こります。 19世紀には、今日ドメイン特有の言語の例として認識されることを実行した「プログラマブル」の織機と自動ピアノ巻き物がありました。 20世紀の初めで、パンチカードは、データを暗号化して、機械的な処理を指示しました。 1930年代と1940年代に、アロンゾチャーチスラムダ微積分学とアラン・チューリングのチューリングマシンの形式は、アルゴリズムを表現するための数学の抽象化を提供しました。 ラムダ微積分学は言語設計で有力なままです。
プログラミング言語は、プログラム、どれが計算の仕様であるかまたはアルゴリズムを書くための記法です。 しかし、いくつか、どんな作者も皆「プログラミング言語」という用語をすべての可能なアルゴリズムを表現できるそれらの言語に制限しません。 しばしばプログラミング言語を構成することに重要な状態で考えられていた特色は