C++;架构:它与机器架构有什么相似之处 P>所以我迄今为止编程的都是C++,我通常看到人们提到C++之所以快是因为它与机器代码非常相似。我想知道机器/C++代码体系结构到底是什么,为什么相似会使它更快,以及它与其他体系结构(如C#)相比如何

C++;架构:它与机器架构有什么相似之处 P>所以我迄今为止编程的都是C++,我通常看到人们提到C++之所以快是因为它与机器代码非常相似。我想知道机器/C++代码体系结构到底是什么,为什么相似会使它更快,以及它与其他体系结构(如C#)相比如何,c#,c++,architecture,C#,C++,Architecture,我理解RAII、堆、堆栈和语法,但仅此而已。除了CPU、RAM和硬盘之外,我对计算机的组成还没有太多的了解。我计划很快开始学习C#soon,用于WP7应用程序开发,因此我认为深入了解引擎盖下的情况将有助于我识别语言之间的差异/相似之处 图表或指向该主题文章的指针将非常棒,而且你永远不确定你将得到什么(当然没有仔细研究)C++有一个运行时系统;它比Ruby或Haskell或Stand的重量要轻很多。 < P>使C++、C++的东西与任何机器体系结构不太相似。类似的是C子集。变量赋值、函数调用、循环

我理解RAII、堆、堆栈和语法,但仅此而已。除了CPU、RAM和硬盘之外,我对计算机的组成还没有太多的了解。我计划很快开始学习C#soon,用于WP7应用程序开发,因此我认为深入了解引擎盖下的情况将有助于我识别语言之间的差异/相似之处


图表或指向该主题文章的指针将非常棒 另一方面,像C#(或Java、Ruby、Python、Perl、Haskell、Scheme等)这样的“高级”语言或多或少有一个实质性的底层运行时支持系统。对于某些语言,这意味着作业可能需要首先在表中查找某些内容;对于其他人来说,这可能意味着一个赋值有时是一个简单的副本,有时是一个复杂的数据操作,这取决于它是什么类型的数据。很难预测语句将如何翻译成机器代码


C++处于一个有趣的中间地带:有些作业就像C助手;其他的调用实际上是超载调用<代码>运算符=())/代码>,而且你永远不确定你将得到什么(当然没有仔细研究)C++有一个运行时系统;它比Ruby或Haskell或Stand的重量要轻很多。

< P>使C++、C++的东西与任何机器体系结构不太相似。类似的是C子集。变量赋值、函数调用、循环、数组遍历和比较都倾向于映射到一小部分快速的核心指令。在现代处理器上,对原语或数组元素的赋值通常是一条指令:一条将值从内存移到寄存器的指令,或者反之亦然(例如)。长期使用C语言编程的人们可以看到他们的编译器将生成的机码。关键是“所见即所得”——语言指令直接翻译成机器代码,或多或少是一对一的

另一方面,像C#(或Java、Ruby、Python、Perl、Haskell、Scheme等)这样的“高级”语言或多或少有一个实质性的底层运行时支持系统。对于某些语言,这意味着作业可能需要首先在表中查找某些内容;对于其他人来说,这可能意味着一个赋值有时是一个简单的副本,有时是一个复杂的数据操作,这取决于它是什么类型的数据。很难预测语句将如何翻译成机器代码


C++处于一个有趣的中间地带:有些作业就像C助手;其他的调用实际上是超载调用<代码>运算符=())/代码>,而且你永远不确定你将得到什么(当然没有仔细研究)C++有一个运行时系统;它只是比Ruby、Haskell或Scheme的重量轻得多。

这与“相似”无关。这是关于接近硬件。C和C++都不隐藏你记忆管理的任何细节。因为您必须考虑诸如对齐、连续访问和堆栈之类的低级问题,所以您可以编写效率更高的代码。高级语言对您隐藏了这些东西,这有助于获得更好的编程体验,但通常情况下,代码并没有尽可能地优化。

这与“相似”无关。这是关于接近硬件。C和C++都不隐藏你记忆管理的任何细节。因为您必须考虑诸如对齐、连续访问和堆栈之类的低级问题,所以您可以编写效率更高的代码。高级语言对您隐藏了这些东西,这有助于获得更好的编程体验,但通常情况下,代码并没有尽可能地优化。

编程语言的发展表明,编程越方便,您就越需要在性能上进行权衡。对于大多数编程初学者来说,java对C++来说肯定比C或C++更友好(内存管理、头文件、容器等)。 C或C++比java更快,因为它们被编译成机器代码,可以直接加载和运行。但是对于java,你可能知道JRE,它是java代码的运行时框架,因为Java代码编译成只由java虚拟机(由C编写的小汇编)所理解的一些代码。.Net框架到C#就像JRE到Java一样。 这种性能上的差异在某些面向性能的业务中可能会起到很大的作用,但对于大多数应用程序来说,这几乎是不可见的。
希望这能解释

编程语言的发展表明,编程越方便,就越需要在性能上进行权衡。对于大多数编程开始