人間の言語の分離は、孤立したコミュニティの(ダーウィン)の進化に由来します。プログラミング言語の分離は、技術的ニーズ、技術的イデオロギーの変化、技術的および理論的理解の変化、実装する技術的能力の変化から生じます。それはやや意識的なプロセスだと思います。
コンピューター言語は、自然言語に似ているでしょうか?おそらくある程度、ある程度まで。自然言語の複雑さの大部分は、新しい矛盾が発生している間に古い矛盾を次第に除去する可能性が高いにもかかわらず、ある時点で一貫した結果を生成する理由のないさまざまな同時進化現象に起因すると推測します。私は通時言語学の専門家ではありません。しかし、プログラミング言語でそのような複雑さが必要ですか。
あいまいさの問題は重要な問題ですが、ほとんどの人が述べているとおりではありません。言語はコミュニケーションの手段であり、そのコミュニケーションのコンテキストで分析する必要があります(マンマン、マンマシン、両方、場所間または時間、...簡単に言えば)。重要なのは、言語で明確なステートメントのみを作成できるかどうかではなく、意図したコンテキストでコミュニケーションが明確になることを常に保証できるかどうかです。よく知られ広く使用されているプログラミング言語が1つあり、あいまいなプログラムを作成できます(まあ、そうはなりましたが、しばらくの間最新バージョンを見ていません)。この場合、コンパイラはあいまいさを検出し、明確化を要求するのに十分なほど賢く、これをプログラムに組み込んであいまいさを排除できます。あいまいさの検出は、可能な選択肢の1つだけが意味を持つことを意味するのではなく、すべてが意味を持つことに注意してください。問題は、通信するエンティティの1つがあいまいさを検出できるかどうかです。これにより、送信者はそれを明確にできます。人間はこれが苦手ですが、コンピューターはかなり良いものです。
フォーマリズムとプログラミング言語は、より豊富で柔軟性のある構文を持つことができます。彼らがしない主な理由は単純な保守主義だと思います。使用される構文ツールは、当時のコンピューターの制限を満たすために、30年以上前に設計されたツールであることが非常に多くあります。解析の効率は、もはやコンパイルにおいてそれほど重要な問題ではなく、より強力な手法が順調に存在します。
興味深いことに、プログラミング言語の構文で最も広く使用されている基礎は、自然言語の研究、つまり文脈自由文法に由来しています。技術研究の多くは、60年代に理論的/技術的コンピューターサイエンスに移行し、80年代前半に自然言語の人々によってある程度再発見されました(簡略化しています)。それ以来、自然言語の構文は大きく進歩しましたが、コンピューターサイエンスは古い構文ツールにほとんど固執しているようです。自然言語の振り子は再び統計的手法に向かっていますが、構文の代数的アプローチは忘れられていません。おそらく、優れたアプローチは代数的手法と統計的手法の組み合わせから生まれます。
私の感覚では、重要な領域はセマンティクスであり、構文とセマンティクス間の移行です。プログラミング言語やフォーマルシステムの場合、多くの正確なテクニックがありますが、これはまだ自然言語のために形式化するのが非常に困難です。このゲームは自然言語でプレイされるにはほど遠いため、将来プログラミング言語にどのような影響を与える可能性があるかを言うのは困難です。
もう1つのポイントは、多くのプログラミング言語デザイナーが何かを証明しようとしている、または技術的イデオロギーを実施しようとしているということです。そのため、ユーザーは意図したパラダイムから逸脱することを防ぐために、非常に規範的な設計になります。残念ながら、これは創造性にとって非常に非生産的です。これまでに設計された最も創造的な言語は、最初のものでした:Lisp(1958)。それが許した自由と柔軟性は、かなりの創造性の源でした。代償は、自己規律と理解が必要だということでした。しかし、Lispは実際にはメタ言語であり、言語を作成するための言語でした。
さて、別の見方をすると、プログラムは実際には数学的記述として見られる仕様の証明です(まあ、もう一度単純化しています)。一部の人々(参照は覚えていませんが、申し訳ありません)は定理証明器を使って、自然言語で数学者によって書かれたように見える証明を作成しています。だから、自然言語で書かれているように見えるプログラムを持つという考えは、まったくばかげているとは思わない。
ただし、数学者によって非公式に書かれた場合でも、数学的談話は通常の話や歴史書とはまったく異なることに気付くかもしれません。これは、話されている意味論領域である談話の関係する宇宙の大きな違いによるものです。したがって、自然言語のように見えるプログラミング言語を思い描くことができますが、談話の領域とそれ自体の望ましい特性である自然の制限があります。ほとんどの場合、それは本質的に表面的なまま、つまり、ほとんど構文的です。数学者は正式なシステムと政治について話すことができます。2つの談話が似ていないことを願っています。コンピューターは(まだ?)政治について話すことも、それを理解することもできません。彼らがそれをする日はもはやプログラミングではありません。
歴史を振り返ると、高レベル言語は最初から(FORTRAN)計算タスクを表現するためにより自然な形に近づく試みでしたが、これらのタスクは数学的または論理的であると理解されていました(Fortran 1957、Algol 1958、Lisp 1958 )、またはよりビジネス指向(Cobol 1959)。10年以内に、人々は近くの言語、手元の問題により良く適応する言語を心配し、extensible
languages
構文とセマンティクスの両方をカバーする、いわゆるの重要な研究がありました。問題をより自然に表現するための1つの主要な経路は、object
orientation
(時には他の名前で)出現したことです。親子関係を割り当てることは常に困難ですが、おそらく主にLispでの人工知能の研究と言語から生まれましたSimula
67
(Algolファミリー)それ自体は、コンピューター上でシミュレートされる実際の問題をより自然に表現することを目的としていました。それはすべて歴史的に一貫しているようです。