为什么C++;中级语言? 为什么C++是中级语言?它几乎可以做任何事情,世界上使用最广泛的操作系统就是用它编写的 [P> >注意:页面引用C++,完整引用第三版,由Herbert Schildt,

为什么C++;中级语言? 为什么C++是中级语言?它几乎可以做任何事情,世界上使用最广泛的操作系统就是用它编写的 [P> >注意:页面引用C++,完整引用第三版,由Herbert Schildt,,c++,C++,它被认为是一种“中级”语言,因为它包含高级和低级语言特征的组合 -“中间语言”不是英语,所以你得猜猜你的意思。如果你的意思是“一种中级抽象级别的语言”,那么这是一个公平的评估,尽管你是正确的,与大多数其他语言相比,它涵盖了令人不安的广泛抽象级别 提供(首先也是最重要的)自动、内在垃圾收集的语言显然是在更高的抽象级别上工作的——可能离机器太远,无法完全用于内核、设备驱动程序和c的最低级别部分,但是比起没有提供这种功能的语言(或者只通过“据称是智能的”指针提供这种功能,而指针通常执行非常基本的GC—

它被认为是一种“中级”语言,因为它包含高级和低级语言特征的组合

-“中间语言”不是英语,所以你得猜猜你的意思。如果你的意思是“一种中级抽象级别的语言”,那么这是一个公平的评估,尽管你是正确的,与大多数其他语言相比,它涵盖了令人不安的广泛抽象级别

提供(首先也是最重要的)自动、内在垃圾收集的语言显然是在更高的抽象级别上工作的——可能离机器太远,无法完全用于内核、设备驱动程序和c的最低级别部分,但是比起没有提供这种功能的语言(或者只通过“据称是智能的”指针提供这种功能,而指针通常执行非常基本的GC——通常与引用计数一样基本(!),与现代GC体系结构相去甚远),它更方便,也没有内存管理错误。在C++之后部署的几乎所有的扩展语言都包含了垃圾收集作为其内在特性的一部分。

在频谱的另一端,机器特定的汇编语言显然比C++ C++工作在一个较低的抽象级别(实际上,C++编译器通常提供非汇编扩展,嵌入汇编语言的能力,以便授权高级程序员利用其所保证的设备)。 至于“世界上最广泛的用户操作系统”,这已经成为一个很难决定的问题——例如,越来越多的各种小工具都是基于Linux内核的,从手机(比如Android)到TV&c(几个月前,当我打开并安装新购买的平板电视、蓝光DVD播放机和DVR时,我发现它们都附带了一张DVD,其中包含了软件的一些源代码……你看,他们不得不这么做,因为该软件当然是基于Linux的!)

<>至少在Linux的情况下,很容易检查它的核心不是C++,而是C(当然是一种非常不同的语言),例如,它甚至不提供“智能ISH指针”,在一些基础上,有人会说C++确实有GC;试着把C和C++混入Pikes或汤普森……如果你准备好去“强”>快< /强>,以防万一他们能抓到一些重的东西扔给你!(我怀疑他们在贝尔实验室的其他前同事,比如里奇,可能也会有类似的反应,但我不知道这是第一手的,就像我对今天的同事所做的那样;-))

类似地,苹果极受欢迎的产品(Mac、iPhone、iPad等)的操作系统也是如此:应用程序编程的目标是C,而内核的目标是C本身,也就是说,核心是C(虽然苹果的操作系统本身不是开源的,但其中的BSD和Mach痕迹仍然非常清晰可见)。我相信大多数其他手机(黑莓、诺基亚Symbian和MaMo的东西,Windows Mobile的当前产品)也依赖C,而不是C++(这可以很容易地对开源的代码进行检查,对于封闭源代码的用户来说,这不是很容易,但是,提示也都是这样的)。 <>如果你在考虑Windows,我确信(至少在Win 2000的时间至少包括了,基于微软在那个时间段中的尝试),内核也是基于C,而不是C++(我不知道它是否完全被改写为XP、Vista、Windows7——这将是令人惊讶的,但是,当然,这并不意味着它不可能实现;-)


<> P>总体上,在我看来,所有广泛的OS的核心的支配语言很可能是C,而不是C++。没有任何内在的理由,至少是一个合理的C++子集不能替代(我可以在C中以及C++中编程,但是我确实错过了<强>模板> /强>,但是),似乎还不够。“有效需求”使之成为现实!-)

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

计算机语言往往是复杂的,并且将它们安排在任何特定的连续体上往往是没有用的(一个例外是,在这种情况下,C++趋向于毛茸茸的末端,对上下文敏感)。 C++(使用最新的编译器)是少数几种可以将内联汇编语言代码嵌入到一级强类型“lambda”函数中的语言之一。这很好地巩固了它在低级和高级类别中的地位


我认为很多人都不会认为两者都是中间的。< /P>哪一个“世界上使用最多的OS”是用C++编写的?@ AtEyNe: Windows(除了COM位)写在C.@ dman:最常用的桌面PC OS可能是,忽略移动、嵌入式、服务器……语言水平是非常模糊的-根据什么位置?如果你整天编写微处理器,C是相当高的,C++是在上面。相反,如果你只写.net,C++看起来像是一个神秘的东西。艺术。因此,我认为这完全是一个角度的问题,因此我的投票是主观的。我不太确定这与“几乎可以做一切”有什么关系。每种图灵完整语言都可以做“一切”,这不是一个“水平”的标准“语言是ON的。达尔文本身就是一个可运行的操作系统,它主要是C驱动程序,是用一个精简的C++语言编写的,它被设计成一个加速的ObjultC(NEXSTEP使用Objc驱动程序)。