Function 在类内部使用方法而不是在函数库中使用数据结构的性能优势?

Function 在类内部使用方法而不是在函数库中使用数据结构的性能优势?,function,class,methods,oop,libraries,Function,Class,Methods,Oop,Libraries,从根本上讲,面向对象语言的唯一优势是提高对程序目的的理解吗 面向对象语言的编译器是否将对象分解为结构和函数库?是的,方法代码是类定义的核心,每个实例方法都接受指向数据的隐式指针作为其第一个参数。如果您反汇编实例方法调用,您将看到这一点。基本上是这样。唯一的优点是提高了对代码的理解 对于某些语言,编译后OO版本与非OO版本相同。例如Perl。在大多数情况下,OO版本比非OO版本慢得多。除了极少数例外,非OO语言总是比OO语言更快 但一般来说,大多数经验丰富的程序员会告诉您不要担心OO语言和非OO语

从根本上讲,面向对象语言的唯一优势是提高对程序目的的理解吗


面向对象语言的编译器是否将对象分解为结构和函数库?

是的,方法代码是类定义的核心,每个实例方法都接受指向数据的隐式
指针作为其第一个参数。如果您反汇编实例方法调用,您将看到这一点。

基本上是这样。唯一的优点是提高了对代码的理解

对于某些语言,编译后OO版本与非OO版本相同。例如Perl。在大多数情况下,OO版本比非OO版本慢得多。除了极少数例外,非OO语言总是比OO语言更快

但一般来说,大多数经验丰富的程序员会告诉您不要担心OO语言和非OO语言之间的性能差异(或者Lispers会告诉您不要担心过程语言和函数语言之间的性能差异)。这是因为您永远不应该低估理解代码的重要性

现在我们很少再谈论它,因为我们已经习惯于使用非常高级的语言——无论是OO语言、函数语言、多范式语言还是元编程语言。但在80年代和90年代,出现了当时被称为软件危机的情况。什么是软件危机?这基本上是一个事实,大多数软件项目从未完成

软件危机影响了整个行业:从军用雷达系统到游戏,再到商业操作系统。消费者称之为蒸汽。这些项目过于雄心勃勃


但现在有很多雄心勃勃、令人印象深刻的项目,它们至少达到了beta版(对于web2.0来说,beta版已经足够让公众消费了)。部分原因是我们现在更好地理解了需求工程,也更好地理解了软件开发过程。但部分原因也是因为我们有更好的工具来真正理解我们在做什么。OO是该工具集的一部分。

这里有几个比较速度的链接,首先是比较C/C++,请阅读全文:

比较Python、java、C++、PHP等语言:

但是,为了回答您的问题,OO的主要优势在于,对于许多问题,它是建模解决方案的最佳方式,因为模型自然适合对象。但是,如果您试图强迫它在不适合的地方工作,您将更难理解代码

由于存在许多不同类型的问题,因此存在各种语言范例,您应该选择最适合解决方案建模的语言类型。例如,我不想在C++中编写OS,因为它在OO方法中似乎不太合适,但是我也不想在C中写赛车游戏,因为它有更大的意义。 根据语言和编译器的不同,您可能会看到编译后的应用程序编译为C,但其他应用程序则不是,因为有些应用程序将被解释

例如,C++编译成C,但java不,NET语言也不编译。PHP通常是解释的,尽管可以编译它(尽管我从未尝试过)。一个编译器是: