为什么C ++是一种中级语言?

时间:2010-09-09 01:55:36

标签: c++

为什么C ++是一种中级语言?它几乎可以做任何事情,世界上使用最广泛的操作系统就是用它来写的。

[注:SO C++ Info页引用Wikipedia citing C ++完整参考第三版,作者:Herbert Schildt,

  

它被视为“中级”语言,因为它包含高级和低级语言功能的组合。

- Potatoswatter]

2 个答案:

答案 0 :(得分:9)

“mid language”不是英语,所以你必须猜测你的意思。如果你的意思是“一种中等抽象的语言”,这是一个公平的评估,尽管你是正确的,与大多数其他语言相比,它延伸到一个令人不舒服的范围的抽象级别。

提供(首要和最重要的)自动内部垃圾收集的语言显然在更高的抽象级别上工作 - 可能离机器太远而无法完全用于内核的最低级别部分,设备驱动程序, & c,但是比没有提供此类设施的语言(或者仅通过“所谓的智能”指针提供它通常做非常基本的GC提供它更方便和免于内存管理错误 - 通常作为参考计数的基本计数(!) ,远离现代GC架构)。几乎所有在 C ++之后部署的广泛语言都将垃圾收集作为其内在特征的一部分。

另一方面,机器特定的汇编语言显然在比C ++更低的抽象级别上工作(事实上,C ++编译器通常提供嵌入汇编语言的非标准扩展。为了使高级程序员能够在有保证的情况下使用其设施。

至于“最广泛的世界用户opareting(?)系统”,它已成为一个难以决定的问题 - 越来越多的各种小工具,例如,基于Linux核心,来自手机(想想Android)电视机和电脑(我几个月前发现它很有趣,打开包装并安装我新买的平板电视,蓝光DVD播放机和DVR,发现它们每个都附带一张DVD拿着一些其软件的来源......他们必须看到,因为该软件基于Linux,当然! - 。)。

至少在Linux的情况下,很容易检查其核心语言不是C ++,而是C(当然,这是一种非常不同的语言 - 例如,它甚至不提供“聪明的指针”在其基础上有人会争辩说C ++ 确实有GC ;-)。试着把C和C ++混淆在Pike或Thompson附近...如果你准备好快速地快速,以防万一他们可以抓住一些重物扔给你! - ((我)怀疑他们在贝尔实验室的其他前同事,如里奇,可能会做出类似的反应,但我不知道那是第一手的,就像我今天对那些同事的人一样;-))

同样适用于为苹果公司非常受欢迎的产品(Mac,iPhone,iPad等)提供动力的操作系统:用于应用程序编程的Objective C,但是C本身用于内核& c,即在核心(而Apple)操作系统本身并不是开源的,其中的BSD和Mach的痕迹仍然非常清晰可见。我相信大多数其他手机(黑莓,诺基亚的Symbian和Maemo,Windows Mobile目前的产品)也依赖于C核,而不是C ++(这可以很容易地检查开源的,不是那么容易关闭 - 源代码,但是,这些提示都指出了这一点。)

如果您正在考虑使用Windows,我非常肯定(至少包括Win 2000时,基于Microsoft在该时间段内针对我的招聘尝试)内核也基于C而不是C ++(我不知道它是否完全被重写为XP,Vista,Windows 7 - 这将是惊人的,但是,当然,这不会使它不可能; - )。

总的来说,在我看来,所有普及操作系统核心的主导语言最有可能是C,而不是C ++。没有任何内在原因至少不能使用合理的子集 C ++(我可以用C语言和C ++编程,但是当我做的时候,我会错过模板 ! - ),但似乎没有足够的“有效需求”使它发生! - )

答案 1 :(得分:2)

考虑到我在问题中添加的背景,我想这就是你问这个特定问题的原因,在这里,Herbert Scheidt说它是中等水平,因为某种奇怪的概念取平均值“高”和“低“。

计算机语言往往很复杂,并且将它们安排在任何特定的连续体上往往是无用的。 (一个例外是grammar class,在这种情况下,C ++排在毛发端,对上下文敏感。)

C ++(使用最新的编译器)是少数几种可以将内联汇编语言代码嵌入到一流的强类型“lambda”函数中的语言之一。这很好地巩固了它在低级别和高级别类别中的地位。

我不认为很多人会认为两者都把它放在中间位置。