Warum ist C immer noch in der Kategorie der Hochsprache? [geschlossen]


12

Viele der Lehrbücher zur Programmiersprache C sagen, dass C eine Programmiersprache auf hohem Niveau ist, aber viele der Online-Lehrer sagen, dass C auch eine Programmiersprache auf mittlerem Niveau ist. Warum ist es so?


3
Empfohlene Lektüre: Diskutiere diesen $ {blog}
Mücke

6
Ich kann mich in Ihre Verwirrung einfühlen. Dies ist die Art von Klassifizierung, die mich bei einer Prüfung erschweren würde, da selbst eine "falsche" Antwort richtig ist. Beten Sie, dass Sie diese Frage niemals als wahr / falsch- oder Multiple-Choice-Frage haben. Wenn Sie dies tun, antworten Sie auf der Grundlage dessen, was im Lehrbuch steht, und nicht auf der Grundlage dessen, was Sie für richtig halten (ich empfehle Ihnen schlecht, gegen Ihren Darm zu verstoßen).
Brandon

1
Historisch gesehen waren "Hochsprachen" solche, die es dem Programmierer im Gegensatz zur Assemblersprache ermöglichten, von der spezifischen Maschine zu abstrahieren und Code auf problematischere Weise zu schreiben. Fortran und Cobol waren deswegen in der Anfangszeit auf "hohem Niveau". C ist nur ein dünner Schleier über den maschinenspezifischen Dingen, aber sein eigentlicher Zweck ist es, tragbar und maschinenspezifisch zu sein. In den 1960er Jahren war der Standard C also auf hohem Niveau. Im Vergleich zu C ++ 14 oder Haskell oder OCaml oder Rust ist C natürlich nicht so hoch.
9000

Die meisten dieser "modernen Hochsprachen" sind eigentlich nur Skriptsprachen. Der Unterschied besteht darin, ob es kompiliert oder interpretiert wird.
MarcusJ

Asm ist auf hohem Niveau. Die Abstraktion durch asm over hardware ist enorm.
neugierig

Antworten:


34

In der Vergangenheit wurde alles, was über Assembler-Code abstrahiert, als High-Level bezeichnet. C macht das auf jeden Fall. Diese Definition ist im Gegensatz zu dem Folgenden auch relativ eindeutig.

Im Laufe der Zeit haben wir immer mehr Programmiersprachen erstellt und immer mehr Abstraktionen und Werkzeuge erfunden. Im Vergleich zu beispielsweise Python ist die C-Sprache hinsichtlich des semantischen Reichtums und der Abstraktionsebene über die Hardware positiv primitiv. In diesem Sinne finden es viele Leute irreführend, C als High-Level zu bezeichnen, wenn es eine Fülle von Sprachen gibt, die weit über der Hardware liegen.

"High-Level" bedeutet also normalerweise "abstrahiert viel über Hardware" und "Low-Level" bedeutet "abstrahiert wenig". Dies ist die Definition, die Ihre Tutoren verwenden. Allerdings sind sich nicht alle einig, und alte Texte übernehmen nicht auf magische Weise die neue Terminologie, sodass Sie immer noch die alte Verwendung von "High-Level" (unter der C High-Level ist) sehen können. Denken Sie daran, dass viele gute C-Bücher im Grunde genommen neuere Ausgaben von Büchern sind, die vor zwanzig Jahren veröffentlicht wurden.


Damit etwas als eine geeignete Programmiersprache auf niedriger Ebene betrachtet werden kann, muss es einem Programmierer möglich sein, auf derselben Abstraktionsebene wie die zugrunde liegende Hardware zu arbeiten. Während der C-Standard ein derartiges Verhalten von Implementierungen zulässt, gibt es keinen formal anerkannten Unterschied zwischen Implementierungen, die auf dieser Abstraktionsebene arbeiten, und solchen, die dies nicht tun.
Supercat

12

Es ist eine höhere Programmiersprache als Maschinencode (Assembly), aus dieser Sicht stammen C-Programmierbücher und -Lernprogramme.

In dieser Hinsicht ist es eine Programmiersprache auf hohem Niveau.

Es ist jedoch immer noch sehr hardwarenah - viel mehr als andere, modernere Sprachen (Java, C # usw.) -, wenn man es aus dieser Sicht betrachtet, ist es eine Programmiersprache der mittleren Ebene.


1
Warum können wir dann nicht klar sagen, dass C eine mittlere Programmiersprache ist? In Lehrbüchern finden wir das nicht.
CodeIt

5
@manutd - das ist eine Frage an Buchautoren;) - aber das ist die Sache. Aus ihrer Sicht ist C eine Hochsprache. Damit beschäftigen sie sich. Das Konzept der "Hochsprache" ist unscharf - es gibt keine einheitliche Definition, der alle zustimmen.
Oded

Leider funktioniert das Vereinbaren von Meinungen in einer Community nicht so wie das Definieren. Die Autoren und Konzepte sind übergeordneter als die Assemblersprache des Prozessors - dies ist die definierende Linie. Dies ist, was es als hohes Niveau definiert. Jedes Buch, das Sie über Informatik lesen, definiert es immer so. Tutoren mögen es nicht und Meinungen anderer mögen es nicht sein, aber die tatsächliche Wissenschaft, wie Computer funktionieren und wie sie in der Wissenschaft der Computer und Prozessoren definiert wurde, ist sehr klar.
Ryan Rentfro

Mit C # können Programmierer auf einen Speicherbereich als Folge von 64-Bit-, 32-Bit-, 16-Bit- oder 8-Bit-Werten zugreifen. Wenn der Speicher beispielsweise 16-Bit-Pixel enthält, kann der Code Pixel einzeln oder in Gruppen von 2 oder 4 verarbeiten, je nachdem, was für den Algorithmus am besten geeignet ist. C, wie es in der Norm definiert ist, definiert kein praktisches Mittel, mit dem Programmierer eine ähnliche Semantik anfordern können. Natürlich sind viele C-Dialekte niedriger als C #, die vom Standard definierte Sprache jedoch nicht.
Supercat
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.