为什么C仍属于高级语言类别?[关闭]


12

许多有关C编程语言的教科书都说C是一种高级编程语言,但是许多在线辅导老师都说C也是一种中级编程语言。为什么会这样呢?


3
推荐阅读:讨论此$ {}博客
蚊蚋

6
我很同情你的困惑。由于即使是“错误”的答案也是正确的,这种分类会使我加倍在考试中看到的分类。祈祷您永远不要把它作为对/错或多项选择题。如果这样做,请根据教科书上的内容回答,而不是您认为正确的答案(建议您反对直觉,我觉得很邪恶)。
布兰登2014年

1
从历史上讲,“高级语言”是那些与汇编语言不同的语言,它允许程序员从特定的计算机中抽象出来并以更多问题域的方式编写代码。因此,Fortran和Cobol之所以处于“高水平”,是因为在早期。C只是机器专用东西之上的薄纱,但是它的真正目的是使便携式机器专用。因此,到1960年代,标准C才是高级的。与C ++ 14或Haskell或OCaml或Rust相比,C的水平当然不是很高。
9000

这些“现代高级”语言中的大多数实际上只是脚本语言。区别在于它是编译还是解释。
MarcusJ

汇编是高级的。asm通过硬件提供的抽象非常丰富。
curiousguy

Answers:


34

从历史上看,所有通过汇编代码抽象的东西都被称为高级。C当然可以做到这一点。与随后的定义相反,该定义也相对明确。

随着时间的流逝,我们创建了越来越多的编程语言,并发明了越来越多的抽象和工具。与Python相比,C语言在语义丰富性和对硬件的抽象级别方面肯定是原始的。考虑到这一点,当有很多语言远高于硬件时,许多人发现将C称为高级是一种误导。

因此,现在“高级”通常意味着“对硬件要抽象很多”,“低级”意味着“对硬件要抽象很多”。这是您的导师使用的定义。尽管并非所有人都同意,并且旧文本并没有神奇地采用新术语,所以您仍然看到“高级”(C是高级)的旧用法四处飘荡。请记住,许多好的C书籍基本上是20年前发布的较新版本的书籍。


对于某种被认为是适当的低级编程语言的语言,必须允许程序员轻松地以与底层硬件相同的抽象级别进行操作。尽管C标准允许实现以这种方式运行,但是在这种抽象级别上运行的实现与未在这种抽象级别上运行的实现之间没有形式上公认的区别。
超级猫

12

它是比机器代码(汇编)更高级别的语言,这是C编程书籍和教程所基于的观点。

在这方面,它是一种高级编程语言。

但是,它仍然非常接近硬件-比其他更现代的语言(Java,C#等)要多得多-从这种角度来看,它是一种中级编程语言。


1
那么为什么我们不能明确地说C是一种中级编程语言呢?在教科书中我们找不到。
CodeIt 2014年

5
@manutd-这是书作者的问题;)-就是这样。从他们的角度来看,C是一种高级语言。那就是他们要处理的。“高级语言”的概念很模糊-没有一个所有人都同意的定义。
Oded 2014年

不幸的是,在社区中达成一致意见并不是定义的工作原理。它是创造者,概念是比处理器的汇编语言更高的层次-这是定义行。这就是将其定义为高级别的内容。您在计算机科学领域学到的任何书籍都将始终以这种方式对其进行定义。老师可能不会,人们的意见可能不会,但是关于计算机如何工作以及在计算机和处理器科学中如何定义计算机的实际科学非常清楚。
Ryan Rentfro '16

C#允许程序员方便地以64位,32位,16位或8位值的顺序访问一系列内存。例如,如果内存中包含16位像素,则代码可以根据算法的最佳选择单独或以2或4为一组来处理像素。标准定义的C并没有定义程序员可以请求相似语义的实用方法。当然,许多C语言都比C#低,但是Standard所定义的语言却不是。
超级猫
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.