首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >初学者OOP问题

初学者OOP问题
EN

Stack Overflow用户
提问于 2010-08-26 23:32:42
回答 5查看 889关注 0票数 16

我只想问两个关于OOP的问题。

首先,OOP语言编译器实际生成的代码与过程式语言编译器有什么不同?我的意思是,OOP仅仅是关于如何编写代码,还是实际编译的代码不同于过程代码?更准确地说,像C这样的过程化语言产生的代码基本上就像用ASM编写的一样。但是OOP代码有什么不同吗?

其次,如果OOP代码在其机器代码形式中使用不同的方法,它是比过程代码更慢还是更快?谢谢。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2010-08-26 23:39:11

首先,不是。对于编译为本机代码的语言来说,这无疑是正确的。毕竟,汇编和机器码没有对象的概念。

对于在虚拟机中运行的语言,如Java或C#,这是部分正确的。在这里,VM可能支持一些特定于对象的特性。

可以用非面向对象语言编写OOP,反之亦然。OOP主要对程序员有用,它施加的限制(例如,您不能从另一个类访问私有方法)由编译器检查,但不会在输出中传递。

其次,OOP和过程化没有性能差异。只是代码和数据位于代码中的不同位置。

票数 7
EN

Stack Overflow用户

发布于 2010-08-26 23:36:36

除了生成字节码的语言(例如: Java)或解释语言(例如: Python、PHP)之外,所有语言都生成相同的代码,如ASM (机器码)

票数 2
EN

Stack Overflow用户

发布于 2010-08-26 23:45:18

从根本上说,所有的计算机程序都是过程式的,因为它们在CPU上作为一系列步骤执行。由过程性语言的编译器和面向对象语言的编译器生成的机器码可以非常相似。OOP只是一种可选的抽象--一种使代码更易于维护和易于编写的工具。

OOP通常不比过程化更快/更慢。考虑到最大的速度增益是通过选择有效的算法而不是优化单个指令来实现的,这真的无关紧要。而且基准通常太有争议而没有价值。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3576695

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档