7

数学とコンピューター プログラミング言語の収束を求める強い動きがあるようです。これは、現代の言語に対するラムダ計算の影響によって特に証明されています。ほとんどの場合、私は数学で考えるのではなく、論理で考えます。数学的にモデル化できる現象の多くは、論理的にもモデル化できるように思えます。

純粋に論理的な言語や純粋に数学的な言語が汎用プログラミングの牽引力を獲得することはないと思いますが、それぞれのパラダイムの利点の一覧を作成したいと思います。知りたい:

  • 数学でプログラミング言語または言語機能をモデル化する利点は何ですか?
  • 形式論理の原則に基づいて言語をモデル化する利点は何ですか?
  • 汎用言語は、論理または数学のいずれかを差し控えることができますか?
  • どちらのアプローチの利点も実際に示している言語は何ですか?
  • あるアプローチが他のアプローチよりも魅力的であるハードウェア機能は何ですか?
4

4 に答える 4

9

まず第一に、私は論理と数学の間に多くの違いを見ていません。後者は、特定の構成に体系的に適用される前者にすぎません。

さらに、数学/論理に基づいたプログラミング言語の理論的な美しさは、効率的で保守可能なコードを書くことによって物事を成し遂げることに関して、本当に価値があるとは確信していません。

あなたに関しては特定の質問。

プログラミング言語または数学の言語機能をモデル化することの利点は何ですか?正式な論理の原則に基づいて言語をモデル化することの利点は何ですか?

正しさの証明ははるかに簡単になりますが、実際のシステムで実用的になるポイントに到達するかどうかは疑問です。

汎用言語は論理または数学のいずれかを放棄できますか?

「forgo」の意味によって異なります。あなたは数学的な操作なしで言語を持つことができます(あなたはかなりエソセリックになる必要があります;チューリングマシンは私が考えることができる唯一のものであり、インクリメントもデクリメントもありません)、そしてあなたは確かに形式主義について何も気にしない言語を持つことができます(アセンブラー、C)。しかし、ロジックなしでプログラミング言語を使用することは不可能だと思います(ただし、それは変質したロジックである可能性があります。Malbolgeを参照してください) 。

どちらのアプローチの利点を実際に示す言語のいくつかは何ですか?

さて、ラムダ計算を論理の形式と考えると、Lispは、1958年以来、他の言語が到達しようとしている(しかし管理できない)表現力を持つ言語であることによって、その利点をかなりうまく示してきました。

次に、Prologがあります。これは、私が知っている他の唯一の「深刻な」言語であり、正式な論理に明示的に基づいていることを試みています。そして-クエルサプライズ-それは論理的なものだけが得意です。

1つのアプローチを他のアプローチより魅力的にするハードウェア機能は何ですか?

なし。Lisp Machinesの失敗は、コンパイラと一般的なハードウェアが特殊なハードウェアよりも強力であることをIMOがかなり決定的に証明しています。しかし、今日のシステムの単純な野蛮な力は、ハードウェアの制約を完全に無視する言語を、以前はそうではなかった場所で実用的にしていると言うかもしれません。

于 2009-10-19T15:02:37.863 に答える
2

コンピュータサイエンスは数学の特別な分野であるため、数学とプログラミング言語の融合はありません。プログラミング言語は応用数学です。これは、数学の深い知識を持つ人々によって作成され、他の人が使用するためのツールです(ほとんどの場合、それほど深い知識はありません)。あなたはそれを照明スイッチと比較することができます-あなたは物理学を勉強していなくてもそれを使うことができますが、それでもそれは応用物理学です。時々(特にあなたが問題を抱えている場合)、「知識」を持っている必要があります。次に、特別な背景が必要です。

于 2009-10-19T14:50:05.283 に答える
1

正直なところ、これらのいわゆる「最新のプログラミング言語」の多くは、50 年以上にわたってさまざまなプログラミング言語に実装されてきたものを実装しているだけです。

于 2009-10-19T14:55:35.317 に答える