情報学理論では、私は常に高級言語と低水準言語について聞いたり読んだりしています。
しかし、今日使用されているアセンブラー以外に(関連する)低水準言語がないため、これが依然として関連している理由がわかりません。
だからあなたは得る:
低レベル
間違いなく低レベルではありません
高いレベル
また、アセンブラが低レベルの場合、たとえばCを同じリストに入れるにはどうすればよいでしょうか。つまり、Cはアセンブラに比べて非常に高レベルです。 COBOL、Fortranなどでも同じです。
Wikipedia によると、低水準言語は機械語とアセンブリです。
ソースから:
コンピュータサイエンスでは、低レベルプログラミング言語は、コンピュータの命令セットアーキテクチャからの抽象化をほとんどまたはまったく提供しないプログラミング言語です。 「低」という言葉は、言語と機械語の間の抽象化の量が少ないか、存在しないことを意味します。このため、低水準言語は「ハードウェアに近い」と表現されることがあります。
次に、答えるために:
では、アセンブラーが本当に唯一の低水準言語であるのに、なぜ誰もが高水準言語と低水準言語に言及し続けるのでしょうか。
「誰もが」誰であるかはわかりませんが、高水準言語が今日ほど一般的ではなかった頃は、低水準言語と高水準言語について話す方が適切だったと思います(なぜならアセンブリコードを書いているプログラマーは比較的かなりの数でした)。現代では、それはそれほど重要な区別ではありません。個人的には、アセンブリを区別する場合を除いて、これらの用語を使用する人はほとんどいません(Python CまたはC++を低レベルと呼んでいる人がいるのを聞く場合を除いて)元の定義の精神ではありません)。
あなたはそれを見つけるでしょう
私たちがしがみついている真実の多くは、私たち自身の視点に依存しています。
Cプログラマーにとって、アセンブラーは低水準言語です。 Javaプログラマーの場合、Cは低水準言語などです。
最初のストアドプログラムコンピュータ を1と0でプログラミングしている人は、アセンブラを高級言語だと思っていたのではないかと思います。それはすべて相対的です。
(引用元 ジェダイの帰還 )
あなたは比較的主観的な質問をしています。それは、用語、その俗語、および視点についての質問です。
たとえば、LISPは高級言語ですか、それとも低水準言語ですか?実装がLISPマシンで実行されている場合はどうなりますか?
多くの場合、人々が低レベルから高レベルまでのスペクトルを構築しようとするとき、彼らが定量化しようとしているのは、「抽象化」の程度ではなく、「ハードウェアへの近さ」の程度です。
実装がハードウェアに近いことにカウントされる品質:
ハードウェアからの実装の抽象化にカウントされる逆の品質:
Number
型をサポートしています。)他の性質は、それが実行されるハードウェアと比較して、言語を非常に抽象的にするかもしれません:
このような要因を念頭に置いて、私はあなたが書いたスペクトルを次のように修正します:
最低レベル:
アセンブリよりも高レベルのフロー制御を備えた低レベル言語:
高水準言語:
最高レベルの言語:
Pythonは意図的に2回出現します。つまり、コードの記述方法に応じて、スペクトルの一部にまたがっています。
低レベルとして、私は追加します:
言語の「レベル」は動くターゲットです。1973年、PL/Iは高級言語と見なされました。今日、Cは(少なくとも言語の専門家によって)低水準言語と見なされています[脚注を参照]。いくつかの理由:
高水準言語には次のものが含まれる場合があります
この定義による「高級言語」としての候補には、Icon、Scheme、Smalltalk、およびお気に入りのスクリプト言語が含まれる場合があります。
私が若い学者で恐竜が地球を歩き回っていた当時、人々はアイコンを「非常に高級言語」と呼んでいました。つい最近15年前までは、高級言語に関する学習済みのシンポジウムに参加することもできました。しかし、その用語はもうあまり使われていません。
なぜ誰もが高水準言語と低水準言語に言及し続けるのですか?
「高」と「低」の違いは変わり続けていますが、上記のような区別は依然として重要です。そして、多くの区別があるので、「高い」と「低い」という単語は便利な省略形になります。しかし、それほど有用ではありません。皮肉なことに、高水準言語は、少なくとも私の好きな言語と同じくらい強力に見える言語であり、低水準言語は他のすべてです。言い換えれば、「レベル」は簡単に単なる名前の呼びかけに退化する可能性があります。
脚注:専門家が「低レベル」および「高レベル」という用語を使用しない場合は特に、専門家会議で使用される用語の引用を見つけるのは困難です。レベル」というのは、それほど技術的ではないからです。しかし danben 引用について尋ねたところ、私はいくつか見つけました:
「必要な精度を提供するために、実験プログラムは通常、低水準言語(CやPascalなど)で記述されています」 コンピュータービジョンに関する参照記事 。
「Cプログラミング言語は、低レベルの構造を処理する際の柔軟性でよく知られています」 Necula et alによる重要な論文 。
P.S.特にウィキペディアのリファレンスがリファレンスやソースを引用していない場合は、プログラミング言語に関する適切な情報を得るためにウィキペディアをあまり重視しないでください。
低レベルのバイナリアセンブラ
ET IL Java JVMVB6などの環境で使用されるその他のPコード
間違いなく低レベルではありません
C BASIC FORTRAN COBOL Python Perl Pascal
高レベルC++ Ruby Python PHP PROLOGスキーム
ここでは純粋に推測しますが、これは言語シフトの場合である可能性があります。これにより、低レベル言語と高レベル言語の区別が、管理言語と非管理言語、型付き言語と非型付き言語の違いに徐々に進化します。などなど。 (少なくとも人々が用語を使用している方法で)。
大体において、「低レベル」と「高レベル」はバイナリカテゴリではなく、連続体です。明らかに低レベルの言語(アセンブリ、マシンコード)がいくつかありますが、それを超えると、実際には「高レベル」と「低レベル」しかありません。
私が見ているように、「低レベル」言語はコンピューターのアーキテクチャーに似たコードを必要とし、「高レベル」言語は問題の構造に似たコードを受け入れます。しかし、それによって、言語は、ある問題では高レベルになり、別の問題では低レベルになる可能性があります。