web-dev-qa-db-ja.com

プログラミング言語学の研究はありましたか?

プログラミング言語は 形式言語 ですが、多くの形式とは異なり、特定の固有の意味操作セマンティクス 、またはマークアップ言語の場合は プレゼンテーションセマンティクス 。そして、プログラミング言語は、確かに形式的ではありますが、それらが可能にするコミュニケーションの点で自然言語に非常に似ています。

プログラミング言語の開発は人工的なものですが、進化、借用、混合、突然変異の自然言語プロセスはすべて、かなり明確な人工的な対応物を持っています。だから私は疑問に思っています:言語学者の観点からプログラミング言語の進化と振る舞いについて大規模で詳細な研究はありましたか

18
Jon Purdy

現代のプログラミングでは不可能だった正式な文法は、言語学者の研究の成果 Noam Chomsky であることを忘れないでください。

自動車事故により、あなたが尋ねる主題についての卒業論文を終えることができなかったので、私があなたに与えることができる参照はなく、意見だけです。

音声言語はコンテキストに応じて任意の速度で進化し、予測不可能な人間のコンテキストと同様に予測不能な方法で進化します。第二次世界大戦の結果は、日本語に大きな影響を与えました。イギリス人、オーストラリア人、南アフリカ人、北米人は同じ言語を話せません。かつてスペインの植民地であったものの中で動詞の赤緯を使用することは、200年の独立後、かなり異なってきました(元植民地はスペインのスペイン語はarchaic)。

音声学上の効率の力だけが、異なる地域で異なる頻度で使用される異なる単語の発音を異なるものにします。非常に一般的な単語は読み飛ばされるか、スペルミスがあり、あまり一般的でない単語はできるだけ正確に述べられます。

バリエーション、ニュアンス、進化を伴う自然言語は、私たちがコンピューターに要求する決定論には適していません。 (うわー!誤解と二次解釈の共通性を考えると、人間間の最も単純な相互作用でさえ、それらは適していないようです[女の子/ボーイフレンドの言うこととそれが実際に何を意味するかについてのジョークを引用しない])

6
Apalala

質問を再読しましたが、私の元の答えはそれを扱っていなかったと思います。ここで別の試みです。

いいえ、私が認識しているプログラミング言語の言語学について真剣な研究はありません。 2つのメインブランチとサブブランチの言語系統が追跡されています。

  • 手続き的。 Von NeumanDijkstra 。 Fortran、Pascal、C。
    • オブジェクト指向。 Simula。 Smalltalk。
  • 機能的。 McArthy 。舌足らずの発音。

何十年もこの分野にいる私たちにとって、プログラミング言語が異種交配していることは明らかであり、したがって、現在呼び出されているほとんどの現代のプログラミング言語では、pureパラダイムのほとんどの側面が見られますマルチパラダイムプログラミング言語:C#、Python、Java、..。OCamlやHaskellなどの以前は純粋な関数型言語でさえ、monads)およびOO機能を使用して、何でも実行できます。

何が起こったのかと思いますが、rightパラダイムを適用するためだけにプログラミング言語を切り替える必要があることは、(愚かではないにしても)コストがかかることが明らかになりました。特定の副問題。

高度な並列および非同期システムの領域における傾向には例外が残っています。優先言語は Erlang のように厳密に機能的ですが、おそらくそのような複雑なシステムを機能的に考える方が簡単だからです。

進化のパラダイムではない部分は構文にありました。暗号プログラムを奨励または許可する言語は、ますます使用されなくなってきました( [〜#〜] apl [〜#〜][〜#〜] awk [〜#〜] 、さらにはPerlやLISPなど)。今日支配的な構文は、C(C++、C#、Java、Objective-C、Scala、Go、IML、CSS、JavaScript、さらにはPython)、Pascal(Fortran 90+ x)、Smalltalk(Ruby)、 [〜#〜] ml [〜#〜] /Miranda(OCaml、Haskell、Erlang)、および [〜#〜] sgml [〜# 〜] (HTML、XML)。

この図は完全に正確ではなく、最新ではありませんが、1970年代のサイトごとの言語の時代以来、どれだけプログラミング言語が収束しているかについての良い考えを提供します。

programming language evolution

4
Apalala

@Apalalaの回答が気に入っています。これは、いくつかの主要な汎用言語への収束を示しているようです。ある人の良いアイデアが遅かれ早かれ他の人に取り上げられる可能性があるので、それは理にかなっています。

私が付け加えるのは、言語を使用しているときはいつでも、彼らは必然的に用語を追加することによってそれを拡張し、手元のドメインにより指向した言語に変換するということです。これはかなり簡単な場合もあれば、そうでない場合もあります。 これはそれほど簡単ではなかった例です。

私が汎用言語で高く評価している特性は、それが新しいドメイン固有言語の定義を支援する範囲です。

1
Mike Dunlavey