[〜#〜] c [〜#〜]はそれほど低レベルの言語ではなく、C++は中間レベルであり、Pythonは高レベル言語です。コードのコンパイル方法と記述方法に何かをしなければならないことは理解しています。しかし、私が知りたいのは、言語をそれらの1つに定義するものです。これらの絶対的なカテゴリーですか、それともプログラマーが互いに言語を説明するために使用する一般的なアイデアですか?
はい、それらは単なる一般的な用語です。それは抽象化に関係しており、コンピューターが実際に行っていることにどれだけ近いかということです。
非常に低いレベルから非常に高いレベルまでのプログラミング言語のリストを次に示します。
Machine Code は、おそらく最低レベルのプログラミング言語と考えられます。
アセンブリ言語 は、プロセッサに何をすべきかを伝えるレベルです。マシンコードへの変換ステップがまだあります。
[〜#〜] c [〜#〜] は、アセンブラーからのステップアップです。これは、やや抽象的な用語で実行したいことを指定できるようになりますが、金属。
C++ は、Cでできることはすべて行いますが、クラスに抽象化する機能を追加します。
Java / C# ある意味ではC++と同様のことを行いますが、Cでできることをすべて行う機会はありません(Javaの場合のポインター操作のように[ありがとうJoe!] )。ただし、ガベージコレクションがあり、C++で手動で行う必要があります。
Python / Ruby はさらに高いレベルであり、Javaのようなもので指定する必要がある詳細の多くを忘れさせてください=またはC#。
[〜#〜] sql [〜#〜] はさらに高いレベルです(宣言的です)。 「年齢ごとに分類されたテーブル内のすべてのアイテムをください」と言うだけで、あなたのためにこれを実行する最も効率的な方法が得られます。
低レベル=長い開発時間+非常に高速な実行可能ファイル
高レベル=開発時間が短い+実行可能ファイルが遅い
中間レベルは2つの間にあります
非常に低レベル:マシンコード
低レベル:アセンブラー、フォース
中レベル:C、C++、ほとんどのシステムプログラミング言語
中/高レベル:D、Go、ガベージコレクションシステムプログラミング言語
高レベル:Java、C#、ほとんどのインタープリター言語
さらに高いレベル:LISP方言
最高レベル:SQL、宣言型プログラミング言語
追加するものがあれば、教えてください。
コンピューターサイエンスでは、低レベルプログラミング言語は、コンピューターの命令セットアーキテクチャからの抽象化がほとんどまたはまったくないを提供するプログラミング言語です。 「低」という言葉は、言語と機械語の間の抽象化の少量または存在しない量を指します。このため、低レベル言語は「ハードウェアに近い」と表現されることがあります。 低レベル言語では、コンパイラーまたはインタープリターを実行する必要はありません。言語が作成されたプロセッサーは、これらのいずれも使用せずにコードを実行できます。
比較すると、高レベルプログラミング言語は、コンピューターアーキテクチャの実行セマンティクスをプログラムの仕様から分離し、プログラムの開発プロセスをよりシンプルで理解しやすくします。
中級言語は上記の2つの間に位置します
それらは絶対的なものではありません。これらはすべて、当時の業界で使用されている他の言語に関連しています。たとえば、アセンブリが中間レベルと見なされていた時代がありました。
「レベル」は本質的に、プログラマが実際のハードウェアベースの操作からどれだけ抽象化されているかを示す尺度です。低レベルの言語では、実際のメモリの場所に注意する必要がありますが、高レベルでは、変数を作成してOSにメモリを処理させるだけです。
通常のCPUは、32ビットまたは64ビットの命令を処理します。最も単純な形式では、これを32個の1と0が連続したものと考えてください。これが、プロセッサが実際に解釈して実行するものです。これを直接記述する(マシンコード)のは「最低レベル」です。
低レベルとは、マシンに近いことを意味し、したがって、より難しく、より強力です。高いレベルになると、マシンからより多く削除され、「英語のように」なりますが、マシンの詳細を制御できることで得られるパワーと機能の多くを失います。また、一般的に、高レベルの言語はあなたをより多く保護し、より多くの予防措置とチェックを行う傾向がありますが、低レベルの言語はいわばあなたを信頼し、あなた自身のリスクで遊びましょう。
中間言語という用語は聞いたことがない言葉です。
「低」と「高」は、プログラミング中のマシンにどれだけ「近い」かを示します。最低レベルはマシン(バイナリ)コードです。次に(そしてまだ低いと考えられている)アセンブラーです。より高いレベルの言語は、人間が通常考える方法により近いと思われるより多くの象徴性と構成を含みます。 C(およびややC++)は、高レベル言語であるコンストラクトが多く、低レベル言語であるが多くの場合高レベル言語ではない命令(シフトなど)もあるため、ややハイブリッドの低/高レベルであるという評判があります。
Cは中間レベルの言語であるBECOZです。アセンブリ言語でコードを使用できるのは、わずかな差のポインターのみです(cでポインターを削除すると、低レベルで考慮されます)。
低レベル言語は、バイナリまたはRTLである可能性のある機械語に非常に近いです。書くのが難しく、実行が非常に速い。ハードウェアと対話でき、高レベルのプログラミング言語は非常に簡単に記述できますが、コンパイル後に実行できます。
それはすべて相対的です...「レベル」は抽象化の量を反映しています。
プログラミング言語のレベルのスペクトルを追加すると、定義にニュアンスが追加されます。明らかにマシンコードとアセンブリはマシンに依存しています。 CとC++は理論的にはマシンに依存しませんが、実際には普遍的ではありません。 Cでは、アライメントなどを考慮する必要があり、CおよびC++のCサブセットのスタックを常にポインタと単一の初期化された変数を介して管理できます-クレイジーな場合-(x86)rsp使用されません。 C、はい、それは中間レベルです。それ以外はすべて高レベル、または超高レベルです。