5


2

プログラミング言語のさまざまな概念と、それらを純粋な方法で表示する言語

私は言語の専門家ではありませんが、最近は言語に興味があり、主要な概念と「彼らの」言語の概要を把握しようとしています。 これはhttps://stackoverflow.com/questions/2376165/books-about-language-paradigms-and-concepts [書籍に関する別の質問]に似ています。 最初に、主要なプログラミング言語の概念は何ですか?

  • 構造化された

  • 手続き的

  • オブジェクト指向

  • オブジェクト指向-プロトタイプベース(例: Javaスクリプト)

  • 機能的(例: ハスケル)

  • 論理指向(例: プロローグ)

  • メタ(純粋な概念が独自のものである場合)

  • スタックベース(例: フォース)

  • 数学ベース/配列指向(例: APL)

  • 宣言的

  • 連結(例: PostScript)

  • (完全に不完全なリスト…​)

そして次に、これらの概念の良いクラスを取得するために、最も自然で純粋なコア概念に基づいている/実装しているプログラミング言語は何でしょうか?

  • たとえば、Javaはオブジェクト指向ですが、そうではないので良い例ではありません 原子による純粋なオブジェクト指向。

  • Lispは関数型言語として知られていますが、マルチパラダイムであり、 純粋ではありません。 しかし、Lispは「リストベース」の純粋な実装である可能性があります(概念として数える場合)。

  • 構造化された(GOTOなし)手続き型ではない言語はありますか? (たぶんXSLT v1.x)

3 Answer


8


ここで探している用語は「プログラミングパラダイム」で、http://en.wikipedia.org/wiki/Programming_paradigm [それらの多く]があります。 そのウィキペディアのページとそのフォローアップリンクから、それぞれをサポートする言語のリストを取得できます。

これらのいずれかの「純粋な」レンディションの場合、それはあなたが探している純度のレベルに依存するため、より困難です。

  • 純粋な構造の場合(「純粋」の十分に緩い定義の下で ここ)、たとえば、http://en.wikipedia.org/wiki/Modula-2 [Modula-2]で見ることができます。

  • 純粋なオブジェクト指向の場合、主に見ているのは Smalltalkとそのすべてを完全に均一に処理する場合(実際には最も一般的な定義では必要ありません!)、または言語を見ている場合http://en.wikipedia.org/wiki/Java_%28programming_language%29[Java]やhttp://en.wikipedia.org/wiki/Eiffel_%28programming_language%29[Eiffel]のようにプリミティブ型を受け入れる場合その見出し。

  • 機能的には、あなたが最も見ている Haskell

  • 論理プログラミングの場合、典型的な言語は Prologが、それは本当に純粋ではありません。 私が知っている唯一の(ほとんど)純粋な論理言語はhttp://en.wikipedia.org/wiki/Mercury_%28programming_language%29[Mercury]であり、その機能チャンクがその論理的チャンク。

…​and so on and so on. You get the idea.


2


パスカルは標準手続き言語だと思います。

また、Lisp(皮肉なことにMLではない)は標準的な「メタ」言語だと思います。

1つは、マクロはプログラムフラグメントであり、プログラムフラグメントを表すデータ構造を変更するため、言語を使用して言語を調整します。 第二に、伝統的にメタサーキュラー評価者と呼ばれる自己ホスト型インタープリターを書くことは一般的な慣行と考えられています。それらはプログラムを実行するプログラムです。

もちろん、他の言語でも可能です。 Pythonでは、Pythonコンパイラにアクセスでき、PyPyはpythonのpython実装です。 しかし、Lispにはこれを行う最も強力な伝統があると思います。

しかし、私はLisp部外者なので、私は何を知っていますか…​ 'お役に立てれば ;-)


0


正しいOPINION_の答えを_JUSTしてくれたおかげで、私は正しい方向に向けられました。 私がこれまで見つけた限りでは、パラダイムのリストとそれらの純粋な言語を提供します。

  • 命令的

  • 非構造化---初期のBASIC、アセンブリ

  • 構造化された---?

  • 手続き---?

  • モジュラー--- Modula-2、多分Pascal

  • オブジェクト指向

  • クラスベース--- Smalltalk

  • プロトタイプベース---自己、多分Java Script、Lua

  • 宣言--- SQL、正規表現、CSS

  • ロジック---水星、おそらくProlog

  • 機能的--- Scheme、Haskell

  • 暗黙/ポイントフリー

  • 連結---ジョイ、猫

別の「軸」上にあります

  • スカラー---それらのほとんど

  • 配列--- APL

どこに置くかわからない:

  • スタックベース--- Forth、Postscript