数学には記号計算と数値計算の両方があることを私たちは知っています。しかし、なぜLispは、一般的なプログラミング言語として、記号計算とより密接に関連しているのでしょうか。
Lispのどの部分が象徴的な問題に適していますか?
数学には記号計算と数値計算の両方があることを私たちは知っています。しかし、なぜLispは、一般的なプログラミング言語として、記号計算とより密接に関連しているのでしょうか。
Lispのどの部分が象徴的な問題に適していますか?
当時、シンボルはLispではファーストクラスのオブジェクトでしたが、他の言語ではそれほどではありませんでした。他のほとんどの言語は、数値計算(1 + 2 + SIN(PI / 2))に焦点を合わせていました。
Lispでは、Symbolは特定の言語アーティファクト(文字列とは異なる)であり、数字ではないものの操作を非常に簡単にしました。これらはシステム内のファーストクラスのオブジェクトであったため、Lispはそのようなオブジェクトの「無料の」パーサー、リーダー、およびライターを提供しました。
'(A + B / 2)は、既成のLispで表現するのは簡単でした。
表現のしやすさにより、記号計算アプリケーションのこれらの側面の読み取りと書き込みの負担が軽減され、主要な問題(方程式の削減、問題解決、定理の証明など)に集中しやすくなりました。
今日でも、シンボルのファーストクラスの概念を持っている言語はほとんどありません。しかし、十分なユーティリティがあり、この種の作業の基本的なLisp vs Fortan vs Pascalであった当時よりも、今日では重要性が低くなっています。
Lispによく関連する記号計算という用語は、コンピュータが人間や社会生活のあらゆる分野で使用されている時代に育ったミレニアル世代にとっては困惑しています。Lispが登場した当時、コンピュータは高価であり、その使用は主に科学/会計の文脈で使用されていました。数の計算。既知のアルゴリズムを数学からプログラムに変換します。既存の言語が問題を上品に解決するのに苦労した1つの領域は、多項式を使用した代数式でした。Lispは、従来の数学的推論とシームレスにマッピングされる数式処理システムの設計を可能にする一流の構造を提供しました。記号計算は、特に論理プログラミング、制約解決、人工知能などの分野で、今日でも関連性があります。
LISPでは、事前宣言なしで記号を入力できます。また、複雑なデータ構造は、任意の複雑さのリンクリストとしてサポートされています。シンボルの操作は複雑なデータ構造のコンテキストで最もよく実行されるため、LISPは完全に適合します。さらに、複雑なデータ構造を使用して問題をモデル化する場合、他の言語では、データ構造のウォークに多くの労力を費やす必要があります。lispでは、データ構造の走査が自動化されており、より高いレベルの抽象化で作業できます。