そこにあるすべての言語タイプについて少し混乱しています。オブジェクト指向/手続き型の区別と比較して、高レベル/低レベル言語の区別の違いは何ですか? 多くの類推は似ているようです。
7 に答える
高/低レベルの区別は、パラダイムよりも抽象化に関するものです。通常、「下位」にあるほど、実行しているマシンについてより多くのことを知る必要があります。メモリ、ファイル システム、さらにはプロセッサの命令セットです。
高水準言語は、ユーザーとマシンの間に抽象化の層を置きます。それは悲惨な詳細を処理します。これは良いことでもあり悪いことでもあります。抽象化は心配を取り除きますが、コントロールも奪います。
高水準言語には、手続き型、オブジェクト指向、関数型などがあります...
オブジェクト指向は抽象化であるため、下位レベルの言語はオブジェクト指向のような概念を提供しない場合があります。
あまり。
たとえば、c++ はオブジェクト指向であり、かなり低レベルです。
高レベル/低レベルとは、言語がアセンブラーおよびマシンコードに「近い」と認識されていることを指します (アセンブラーは低レベルであり、C は C++ や Java よりも低レベルと見なされるなど)。
OO と手続き型プログラミングは、プログラムを設計する特定の方法 (プログラミング パラダイムと呼ばれます) をサポートするために提供される言語機能です。アセンブラはオブジェクトとクラスについて知らないため、オブジェクト指向言語は低レベルではない傾向があるという事実を超えて、言語が高レベルか低レベルかは関係ありません。関数型プログラミングなど、他にも多くのパラダイムがあります。
ここでの例えはこれだと思います。
オブジェクト指向の言語は、純粋に機能的な言語よりも高レベルになる傾向があります。c++ と c を見てください。はい、docesam で述べたように、c++ はまだかなり低レベルですが、c++ は純粋に関数型の兄である c よりもまだ高レベルです。
いいえ、オブジェクト指向だけが言語をハイレベルにするものではないため、常にそれほど単純ではありませんが、オブジェクト指向は実際の生の機械命令よりも抽象化を意味するため、これは間違いなく指標です。
しかし、オブジェクト指向だけでは、どの言語が最高レベルかを判断するのに十分ではありません。
私は次のことを見ていきます:
- 言語には静的型付けまたは動的型付けがありますか? (Javascript & Python vs Java and C++)
- オブジェクト指向か否か (c 対 c++)
- 純粋なテキスト マクロまたはテンプレート? (c 対 c++)
- 動的バインディングと静的バインディング (ここでも Javascript & Python と Java & C++)
- 言語は名前付き関数をサポートしていますか、それとも改行を使用する必要がありますか?
- 言語はコメントなどを許可していますか?
- もっとたくさん
これら 2 つの軸 (「パラダイム」と「レベル」) の間に必ずしも因果関係があるとは限りませんが、相関関係は、論理言語と関数型言語が最も高いレベルになる傾向があり、すぐにオブジェクト指向言語が続き、手続き型言語が一般的であるということだと思います。低レベル。
質問の一部ではありませんが、相関的に動的に型付けされた言語は、静的に型付けされた言語よりも高レベルになる傾向があると思います。
パラダイム (論理/関数型/OO/手続き型) タイピング (静的/動的) とレベル (例えば「コードの完全性」 ' 測定レベルのさまざまな指標について) .
「高レベル」と「低レベル」は、あいまいな用語であり、意見が分かれる可能性があります。特定のタスクを達成するためにどれだけのコードを書かなければならないかによって、プログラミング言語が提供する抽象化の量を見て、より少ないコードを必要とする言語をより高いレベルと呼ぶことができます。もちろん、コードサイズを測定する方法が必要です。
私が言いたいのは、すべて機械語の命令セットに集約されるということです。したがって、どれだけ高レベルの何かが表現されていても、それは機械語命令に帰着します。つまり、高レベル言語はアイデアの抽象化であり、低レベル言語はハードウェアに近いものです。
すべてが 1 つのもの、つまりマシン コードに要約されるため、類推は類似しています。