ポール・グラハム氏が新しいプログラミング言語「Bel」を発表

ベル言語はベル言語で書かれます。

ポール・グラハム氏が新しいプログラミング言語「Bel」を発表
1960 年に、ジョン マッカーシーは新しいタイプのプログラミング言語である Lisp について説明しました。私が「新しいタイプ」と言ったのは、Lisp が単なる新しい言語ではなく、言語を記述する新しい方法だったからです。

Lisp を定義するために、彼は一連の小さなステートメント (公理の一種) から始め、それを使用して言語自体のインタプリタを作成しました。

これは、通常の意味でのプログラミング言語、つまりコンピュータに何をすべきかを指示するために使用される言語を記述することを目的としたものではありません。彼の 1960 年の研究では、Lisp はチューリング マシンに似た計算の正式なモデルとして理解されました。マッカーシー氏は、大学院生のスティーブ・ラッセル氏が提案するまで、コンピューターでそれを使用することを考えていませんでした。

1960 年の Lisp には、プログラミング言語に共通する機能がありませんでした。たとえば、数値、エラー、I/O はありませんでした。そのため、コンピューターのプログラミングに使用される言語の基礎として Lisp を使用していた人々は、これらの機能を自分で追加する必要がありました。そして彼らは、公理的なアプローチを放棄することでこれを実現しました。

したがって、Lisp の開発は 1960 つの、そして一見まったく独立しているように見えますが、1960 つの段階で進められました。53 つは XNUMX 年の論文で紹介された正式な段階、もう XNUMX つは言語がコンピュータ上で実行できるように適応および拡張される実装段階です。実装された機会の数で測ると、主な作業は実装段階で行われました。 Common Lisp に翻訳された XNUMX 年の Lisp には、わずか XNUMX 行しか含まれていません。式を解釈するために必要なことだけを行います。それ以外はすべて実装段階で追加されました。

私の仮説は、Lisp はその困難な歴史にもかかわらず、その開発が 2 つの段階で行われたという事実から恩恵を受けたということです。インタプリタを記述して言語を定義するという本来のやり方が、Lisp に最高の性質を与えたということです。もしそうなら、さらに先に進んでみてはいかがでしょうか?

ベル これは、正式段階から実行段階に早い段階で移行するのではなく、この移行ができるだけ遅くなったらどうなるかという質問に答える試みです。完全なプログラミング言語に近づくまで公理的アプローチを使い続ける場合、どのような公理が必要になり、その結果得られる言語はどのようなものになるでしょうか?

ベルとは何か、ベルではないものを明確にしておきたいと思います。 Bel は McCarthy の 1960 Lisp よりも多くの機能を備えていますが、まだ正式段階の製品です。 1960 年の論文で説明された Lisp と同様、これはプログラミングに使用できる言語ではありません。その主な理由は、マッカーシーの Lisp のように、効率を気にしないからです。 Bel に何かを追加するときは、効率的な実装を提供しようとせずに、追加の意味を説明します。

何のために?なぜ正式な段階を延長するのでしょうか?答えの 1 つは、公理的なアプローチが私たちをどこへ導いてくれるのかを知ることですが、それ自体が興味深い演習です。もしコンピューターが私たちが望んでいるほど強力だったら、言語はどのようになっているでしょうか?

しかし、制限を追加することで効率的な Bel ベースの実装を作成することも可能だと私は信じています。表現力、明瞭さ、効率性を備えた言語が必要な場合は、逆の方向に進むのではなく、表現力と明瞭さから始めて、次に制限を追加する価値があるかもしれません。

したがって、Bel に基づいて実装を書いてみたい場合は、先に進んでください。私は最初のユーザーの一人になります。

最終的には、以前の方言からいくつかのものを再現しました。デザイナーがそれを正しく理解したのか、それとも以前に使用されていた方言の影響を受けたのか、私には正しい答えがわかりません。時間が経てばわかります。また、Lisp の規約からあまり逸脱しないように努めました。つまり、Lisp の規約から離れる動きが見られる場合、それには理由がある可能性があります。

言語の説明の続きはこちら.

翻訳ありがとう: Denis Mitropolsky

PS

出所: habr.com

コメントを追加します