なぜCはまだ高レベル言語のカテゴリーにあるのですか?[閉まっている]


12

Cプログラミング言語の教科書の多くは、Cが高レベルのプログラミング言語であると言っていますが、オンラインのチューターの多くは、Cは中レベルのプログラミング言語でもあると言っています。なぜそうなのですか?



6
あなたの混乱に共感します。これは、「間違った」答えでさえ正しいので、試験で見るのを私を苛立たせる分類の一種です。これが真/偽または複数選択の試験問題にならないように祈ってください。もしそうなら、あなたが正しいと感じるものではなく、教科書が言ったことに基づいて答えてください(私はあなたの腸に逆らうことをお勧めします)。
ブランドン14

1
歴史的に「高レベル」言語は、アセンブリ言語とは異なり、プログラマーが特定のマシンから抽象化し、より問題領域の方法でコードを書くことができる言語でした。FortranとCobolは、初期の頃から「高レベル」でした。Cはマシン固有のものの上にある薄いベールにすぎませんが、その真の目的は、ポータブルでマシン固有ではないことです。したがって、1960年代の標準Cは高レベルでした。C ++ 14またはHaskellまたはOCamlまたはRustと比較すると、Cはもちろんそれほど高レベルではありません。
9000

これらの「現代の高レベル「言語」」のほとんどは、実際には単なるスクリプト言語です。違いは、コンパイルまたは解釈されるかどうかです。
-MarcusJ

Asmは高レベルです。asmがハードウェアを介して提供する抽象化は膨大です。
curiousguy

回答:


34

歴史的に、アセンブリコードを抽象化するものはすべて高レベルと呼ばれていました。Cは確かにそうします。この定義は、以下とは対照的に、比較的明確です。

時間が経つにつれて、私たちはますます多くのプログラミング言語を作成し、ますます多くの抽象化とツールを発明しました。たとえばPythonと比較して、C言語は意味の豊かさとハードウェア上の抽象化レベルにおいて積極的に原始的です。それを念頭に置いて、多くの人々は、ハードウェアよりはるかに高い言語が豊富にある場合、Cを高レベルと呼ぶのは誤解を招くと感じています。

そのため、現在では「高レベル」は「ハードウェアよりもかなり抽象的」を意味し、「低レベル」は「ほとんど抽象的」を意味します。これは、チューターが使用する定義です。しかし、誰もが同意するわけではなく、古いテキストは魔法のように新しい用語を採用していないので、「ハイレベル」(Cはハイレベル)の古い使い方が浮かんでいます。多くの優れたC本は、基本的に20年前にリリースされた本の新しい版であることに注意してください。


何かが適切な低レベルのプログラミング言語と見なされるためには、プログラマーが基礎となるハードウェアと同じレベルの抽象化で簡単に操作できるようにする必要があります。C標準では、実装がそのような方法で動作することを許可しますが、その抽象化レベルで動作する実装と動作しない実装の間には、正式に認識された区別はありません。
supercat

12

これは、機械語(アセンブリ)よりも高レベルの言語です。これは、Cプログラミングの本やチュートリアルが由来する観点です。

その点で、それは高レベルのプログラミング言語です。

しかし、それはまだ非常に近いハードウェアに-はるかので、他の、より近代的な言語よりも(Javaの、C#、およびなど) -このような観点から見た場合、それがミドルレベルのプログラミング言語です。


1
それでは、なぜCが中間レベルのプログラミング言語であると明確に言えないのでしょうか?
CodeIt 14

5
@manutd-それは本の著者への質問です;)-しかしそれは問題です。彼らの観点から、Cは高レベル言語です。それは彼らが対処するものです。「高水準言語」の概念はあいまいです。すべての人が同意する単一の定義はありません。
オデッド

残念ながら、コミュニティで意見を一致させることは、定義がどのように機能するかではありません。それは作成者であり、そのコンセプトはプロセッサのアセンブリ言語よりも高いレベルです-これが定義ラインです。これが、それを高レベルと定義するものです。コンピュータサイエンスで取り上げた本は、常にこの方法で定義します。家庭教師はそうでないかもしれないし、人々の意見もそうでないかもしれないが、コンピューターがどのように機能し、コンピューターとプロセッサーの科学でどのように定義されているかの実際の科学は非常に明確である。
ライアンレントロ16

C#を使用すると、プログラマは一連のメモリに64ビット、32ビット、16ビット、または8ビットの値のシーケンスとしてアクセスできます。たとえば、メモリが16ビットピクセルを保持している場合、アルゴリズムに最適な方法に応じて、コードはピクセルを個別に、または2または4のグループで処理できます。標準で定義されているCは、プログラマが同様のセマンティクスを要求できる実用的な手段を定義していません。もちろん、多くのC方言はC#よりも低レベルですが、標準で定義されている言語はそうではありません。
supercat
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.