
プログラミング言語理論(PLT )は、プログラミング言語と呼ばれる形式言語の設計、実装、分析、特性評価、分類を扱うコンピュータ科学の一分野です。プログラミング言語理論は、言語学、数学、ソフトウェア工学など、他の分野と密接に関連しています。
ある意味では、プログラミング言語理論の歴史は、プログラミング言語の開発よりもさらに古い。1930年代にアロンゾ・チャーチとスティーブン・コール・クリーネによって開発されたラムダ計算は、プログラマがコンピュータシステムにアルゴリズムを記述する手段ではなく、計算をモデル化することを目的としていたにもかかわらず、世界初のプログラミング言語だと考える人もいる。現代の多くの関数型プログラミング言語は、ラムダ計算の上に「薄いベニヤ」を提供すると説明されており[ 2 ]、その多くはラムダ計算の観点から容易に説明できる。
最初に発明されたプログラミング言語は、1940年代にコンラート・ツーゼによって設計されたプランカルクル(Plankalkül)でしたが、一般に知られるようになったのは1972年、実際に実装されたのは1998年になってからです。広く知られ、成功を収めた最初の高水準プログラミング言語は、ジョン・バッカス率いるIBMの研究者チームによって1954年から1957年にかけて開発されたFORTRAN(Formula Translationの略)です。FORTRANの成功を受けて、「汎用」コンピュータ言語を開発するための科学者委員会が結成され、その成果がALGOL 58となりました。これとは別に、マサチューセッツ工科大学(MIT)のジョン・マッカーシーは、学術界発祥の言語として初めて成功を収めたLispを開発しました。これらの初期の取り組みの成功により、プログラミング言語は1960年代以降、活発な研究テーマとなりました。
それ以降のプログラミング言語理論の歴史におけるその他の重要な出来事は以下のとおりです。
プログラミング言語理論の範疇に含まれる、あるいはプログラミング言語理論に大きな影響を与える研究分野は数多く存在し、それらの多くは互いに大きく重なり合っている。さらに、プログラミング言語理論は、計算可能性理論、圏論、集合論など、数学の他の多くの分野も活用している。
形式意味論とは、コンピュータプログラムやプログラミング言語の振る舞いを形式的に規定するものです。コンピュータプログラムの意味、つまり「意味」を記述する一般的なアプローチとして、表示的意味論、操作的意味論、公理的意味論の3つが挙げられます。
型理論は型システムの研究であり、型システムとは「計算する値の種類に応じて句を分類することにより、特定のプログラム動作がないことを証明するための扱いやすい構文的方法」である。[ 4 ]多くのプログラミング言語は、その型システムの特性によって区別される。
プログラム解析とは、プログラムを調べて主要な特性(例えば、特定の種類のプログラムエラーの有無など)を特定する一般的な問題である。プログラム変換とは、ある形式(言語)のプログラムを別の形式に変換するプロセスである。
比較プログラミング言語分析は、言語をその特性に基づいて異なるタイプに分類しようとするものであり、言語の広範なカテゴリはしばしばプログラミングパラダイムとして知られています。
メタプログラミングとは、実行されると結果としてプログラム(場合によっては異なる言語、または元の言語のサブセットで)を生成する、より高次のプログラムを生成することである。
ドメイン固有言語とは、特定のドメイン、あるいはその一部における問題を効率的に解決するために構築された言語のことである。
コンパイラ理論とは、コンパイラ(より一般的にはトランスレータ)を作成するための理論であり、ある言語で書かれたプログラムを別の言語の形式に変換するプログラムを指します。コンパイラの動作は、従来、構文解析(スキャンと構文解析)、意味解析(プログラムが何をするべきかを決定する)、最適化(何らかの指標(通常は実行速度)で示されるプログラムのパフォーマンスを向上させる)、およびコード生成(ターゲット言語で同等のプログラム(多くの場合、中央処理装置(CPU)の命令セットアーキテクチャ)を生成して出力する)に分けられます。
ランタイムシステムとは、プログラミング言語のランタイム環境とその構成要素(仮想マシン、ガベージコレクション、外部関数インターフェースなど)の開発を指します。
プログラミング言語に関する研究発表の主要な場は学会です。最も有名な学会としては、プログラミング言語原理シンポジウム(POPL)、プログラミング言語設計実装シンポジウム(PLDI)、関数型プログラミング国際会議(ICFP)、オブジェクト指向プログラミング、システム、言語、アプリケーションに関する国際会議(OOPSLA)、プログラミング言語とオペレーティングシステムのアーキテクチャサポートに関する国際会議(ASPLOS)などが挙げられます。
PLT研究を掲載している著名な学術誌には、ACM Transactions on Programming Languages and Systems (TOPLAS)、Journal of Functional Programming (JFP)、Journal of Functional and Logic Programming、Higher-Order and Symbolic Computationなどがあります。