0

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

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

4

3 回答 3

0

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

于 2009-12-30T06:24:45.073 回答
0

基本上,是的。唯一的好处是提高了对代码的理解。

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

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

现在我们很少再谈论它了,因为我们已经习惯了使用非常高级的语言——无论是面向对象、函数式、多范式还是元编程。但早在 80 年代和 90 年代,就有了当时所谓的软件危机。什么是软件危机?这基本上是大多数软件项目从未完成的事实!

软件危机影响了行业的各个领域:从军用雷达系统到游戏再到商业操作系统。消费者称它们为蒸汽器皿。这些项目过于雄心勃勃。

但是现在有许多非常雄心勃勃且令人印象深刻的项目至少达到了 beta 版本(对于 web2.0,beta 版足以供公众使用)。部分原因是我们现在更好地理解了需求工程,并且我们也更好地理解了软件开发的过程。但部分原因也是因为我们有更好的工具来实际了解我们在做什么。OO 是该工具集的一部分。

于 2009-12-30T06:43:38.093 回答
0

这里有几个比较速度的链接,首先是比较C/C++,请阅读整篇文章: http ://unthought.net/c++/c_vs_c++.html

比较 Python、Java、C++、PHP 和其他语言:

http://blog.dhananjaynene.com/2008/07/performance-comparison-c-java-python-ruby-jython-jruby-groovy/

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

由于存在许多不同类型的问题,因此存在各种语言范式,您应该选择最能模拟解决方案的语言类型。例如,我不想用 C++ 编写操作系统,因为它似乎不太适合 OO 方法,但我也不想用 C 编写赛车游戏,因为拥有对象更有意义.

根据语言和编译器的不同,您可能会看到已编译的应用程序编译为 C,但其他的则不是,因为有些将被解释。

例如,C++ 可以编译为 C,但 Java 不能,.NET 语言也不能。PHP 通常被解释,尽管可以编译它(尽管我从未尝试过)。一种编译器是:

http://www.phpcompiler.org/

于 2009-12-30T07:01:59.600 回答