2

私はこれまで、Java、Prolog、SQL、およびC#言語で作業してきました。JavaとC#は命令型であり、Prolog宣言型言語であり、SQLはやや宣言型言語であることを私は知っています。JavaとC#はオブジェクト指向であり、それらを使用してアスペクト指向プログラムを開発できます。

これは、特定の言語が適合または実装する可能性のある4つの異なる特性です。命令型、宣言型、オブジェクト指向、アスペクト指向であり、関数型言語、アセンブリ言語、そしておそらく聞いたことのない多くのカテゴリに出くわしました。

プログラミング言語をある程度一貫した方法で分類できる、ある種の合意されたおよび/または論理的な分類または多次元の分類はありますか?

4

5 に答える 5

14

同じ名前のこのウィキペディアの記事で、プログラミングパラダイムのホスト全体を見つけることができます。特に右側のツリーは非常に役立ち、包括的です。

そして、私は恐れています。たとえば、C#は構造化され、命令型で、オブジェクト指向で、イベント駆動型で、機能的です。

  • フロー制御ステートメントが含まれているため、構造化されています。
  • コンピュータが何をすべきかを書くので、必須です。
  • クラスの問題をモデル化できるため、オブジェクト指向。
  • マルチキャストデリゲートとイベントが言語構文に直接含まれているため、イベント駆動型であり、一部のデザインパターンは廃止されています。
  • デリゲートはファーストクラスのオブジェクトとして機能し、機能的な方法でプログラムを作成できるため、機能的です

一方、Javaは、そのリストの構造化された命令型オブジェクト指向のみを共有するため、他の多くのパラダイムに惑わされることなく、より「純粋な」オブジェクト指向言語になります。

注:これらの分類は、それぞれのウィキペディアのページから取得されました。

これらの分類はそれぞれ互いに直交しており、上記の記事で言及されている分類の多くは直交しています。それらは、言語、構文、または実行のさまざまな側面がどのように処理されるかを説明します。

于 2009-10-23T15:24:18.133 に答える
4

Peter Landinによるこの独創的なCSペーパー(OOより前)の最後に興味深い議論があります。ここで、最も基本的な区別は命令型言語と宣言型言語の違いであることがわかります。まだ基本的なレベルでは、型システムのカテゴリは言語の高レベルのグループ化を提供します。構文の拡張性は、さらにもう1つのかなり高レベルで基本的な分類です。

多次元マトリックスは、階層よりも目的にはるかに適していると思います。また、上記の3次元は絶対に基本的なものだと思います。

于 2009-10-23T23:49:55.910 に答える
4

少し接線方向ですが、O'Reillyは、 ÉricLévénezのオリジナルに基づいて、主要なプログラミング言語の歴史をたどる素晴らしいポスターを作成しました。

http://cdn.oreillystatic.com/news/graphics/history-poster20.gif

于 2009-10-24T01:37:29.707 に答える
2

これらの特性(パラダイム)はよく理解され、受け入れられています。しかし、それらは必ずしも言語を定義するわけではありません。C#には、オブジェクト指向であるだけでなく、命令型と機能型の両方の特性があり、F#にも命令型の特性があります。

于 2009-10-23T15:25:03.047 に答える
1

カテゴリ別のウィキペディアのプログラミング言語リストに勝るものはありません。40のカテゴリを使用します。

于 2010-07-02T20:32:50.113 に答える