たとえば、自分でプログラミング言語を作成したいと考えました。見た目と動作をどのように決定するかをすべて決定したと仮定すると、そのためのコンパイラーを作成するだけでよいですか?
いいえ。言語の外観と動作をどのように決定するかによって、独自のプログラミング言語が作成されます。プログラミング言語を作成するためにコンパイラやインタプリタは必要ありません。プログラミング言語でプログラムを作成するためにコンパイラーやインタープリターは必要ありません。
作成したプログラムを実際に実行する場合にのみ、コンパイラーまたはインタープリターが必要です。
私の質問は、プログラミング言語の作成はコンパイラを介して行われるのですか?ハイレベルで結構です。
いいえ。プログラミング言語の作成は、次の2つのルールセットを考え出すことによって行われます。
- 法的プログラムはどのように見えるか(構文)
- 法的プログラムが行うこと(セマンティクス)
それでおしまい。
実装されていないプログラミング言語があります。または、長い間実装されていませんでした。
たとえば、コンラートズーゼは1940年代半ばにプランカルキュルを作成しましたが、戦争のために彼はそれを実装することができませんでした。それは1975年に論文の一部として最初に実装されました。しかし、それは確かに1950年代と1960年代に存在しました。
LISPはもともと、計算を研究するためのλ計算のより扱いやすい代替手段として設計されました。John McCarthyの学生であるSteve Russellによって実装されました。マッカーシー自身も、LISPが実装できるかどうかさえ疑っていました。
APLはもともと数学を教えるための表記法として設計されました。その後、IBM System / 360の仕様言語として機能するように拡張されました。言語が既に使用されていた後、実装は後で来ました。
PLANNERは非常に影響力のある言語でしたが、実際に実装されたのは、他の言語にすでに影響を与えた後でした。それは1969年に設計され、1973年に実装されました。
古典力学の構造と解釈は、動的システムを記述するために数学の代わりにスキームを使用する物理教科書です。Schemeにはインタプリタとコンパイラがあるという事実は本にとって本質的ではなく、プログラムを実行するのではなく、思考を伝えるための言語として使用されています。
ご覧のとおり、プログラミング言語は実装がなくても便利です。「プログラムは人間が読むために、そして偶然にコンピューターが実行するためだけに書かれるべきである」とは、コンピュータープログラムの構造と解釈からの有名な引用です。プログラミング言語は、複雑なプロセスを明確に説明するための正式な言語です。人間が理解できるほど正確にプロセスを説明すると、偶然にもマシンによって実行可能であるという事実は、副作用です。これは非常に望ましい、便利で強力な副作用ですが、副作用です。
最初の「プログラミング言語」であるλ計算、SKI計算、チューリングマシン、μ再帰関数は、実行用に作成されていませんでした。これらは、論理と数学の基本的な質問を理解するために作成されました。