OOP代码能做什么,而程序性代码不能? - 页 2

 
Doerk Hilger:
编程GUI是我作为一个程序员所做的最多的事情。它不可能编码一个完整的GUI,它需要通过if then else在几个方向上进行交流。你需要那么多的语句,代码会变得不可读,而且最后会太慢,导致无法达到目标。事实如此。

我不会用程序性语言建立一个图形用户界面来证明你是错的。但我可以毫不怀疑地证明。

顺便说一下,在OOP中也很容易写出不可读和慢得多的代码,正如你所知道的,Metaquotes标准库 就是一个很好的证明。

 
Doerk Hilger:

...

由于CPU对OOP一无所知,你当然可以不通过使用指针和复杂的数组来编码一切。但这是很荒谬的。我也可以雇佣10000人,在胶片上实时绘制我的屏幕内容,并通过投影仪在墙上按顺序播放。这也能达到目的吗?

你同意Windows操作系统提供了一个好的图形用户界面吗?据我所知,它是用C语言写的,是程序性语言,不是OOP。

如果你认为一个复杂的程序只能用OOP来构建,你就错了,Dirk。你应该解释一下为什么用OOP来编码会更好。

 
Doerk Hilger:
呃,来吧;)并非如此;)如果本地的东西能以某种奇怪的方式完成工作,那么它的指针,但在MQL中有限制。如果是其他的......代码会变得很荒谬。
函数指针 已经在MQL5中被引入,MQL4可能也会支持这个功能。程序性代码不会是荒谬的,因为在OOP成为主流之前,它是多年来唯一的编码方式。 与类似的OOP相比,程序性代码一般看起来更复杂,更难理解,仅此而已。
 
Alain Verleyen:
我强烈怀疑OOP是一种更短的编码方式。
当然,我指的不是一个函数的微不足道的情况,而是一种需要代码分解、依赖性控制和其他类似人员的现实世界的任务。
 
Alain Verleyen:

你同意Windows操作系统提供了一个良好的图形用户界面吗?据我所知,它是用C语言写的,是程序性语言,不是OOP。

如果你认为一个复杂的程序只能用OOP编写,那你就错了,Dirk。你应该解释为什么用OOP编码更好。

我完全是用Assembler编码GUI的。但在汇编程序中我可以使用指针,在C语言中我可以使用指针,当然Windows的基础不是OOP,但我们谈论的是MQL,它不支持原生的无效指针,正因为如此,你将无法用if then else来编写复杂的GUI,至少不能用一个可以使用的结果,而不会有很大的性能缺陷。

这个答案已经包括了一个问题,为什么用OOP会更好--"更好 "仍然是一个错误的判断。OOP方法实现了这种指针的使用,但没有强迫你去处理这些指针。在内部,OOP是用多维数组来实现函数 和变量指针的。试图编写这样的代码就像重新发明一个轮子一样,而这个轮子永远不会像你面前的这个轮子一样滚得那么顺利。

 
Doerk Hilger:

我完全是用Assembler编码GUI的。但是在汇编程序中我可以使用指针,在C语言中我可以使用指针,当然Windows的基础不是OOP,但是我们谈论的是MQL,它不支持原生的无效指针,正因为如此,你将不能用if then else来编写复杂的GUI,至少不能用一个可以使用的结果,而不会有很大的性能缺陷。

这个答案已经包括了一个问题,为什么用OOP会更好--"更好 "仍然是一个错误的判断。OOP方法实现了这种指针的使用,但没有强迫你去处理这些指针。在内部,OOP是用多维数组来实现函数和变量指针的。试图编写这样的代码就像重新发明一个轮子一样,而这个轮子永远不会像你面前的这个轮子一样滚得那么顺利。

我不是一个GUI专家,所以我不会进一步争论。我明白你的意思,因为。OOP允许创建复杂的软件,否则效率会很低或意味着太多的工作。
 

这只是我个人的偏好,因为我的经验不多(!)。

1) 我不喜欢Java,因为我99%的时间都在寻找一个函数,不知道它的名字是否存在,也不知道我是否必须自己编码......

2) 我不喜欢C++,因为我必须写更多的东西,而不是写像mq4甚至Perl这样的脚本语言。

3) 我不喜欢C++,因为理解别人的代码让我从一个文件跳到另一个文件,在那里我只能找到2、3行的函数,这使得我很难找到什么和如何计算S.th.。当然也有像 "计算停止 "这样的解释,但计算过程也被分割成不同文件中的几个函数。

4) 我对枚举和枚举变量的数组绝对没问题。我不需要编写想象中的真实对象。GUI可能是一个不同的问题,因为它由许多其他的东西组成,这些东西可以被编码为对象,以便于重复使用它们。但一个EA需要多少个不同的对象呢?一个位置的对象?如果有很多不同的 "对象"(GUI),可能会有帮助 - 但我在这里没有看到它们。

5)最后,MQ5仍然不能在客户点位上运行其回测:( <由版主编辑的离题:这与mql5无关,而是与MT5有关>。

 
我真的很敬佩那些编码组装的人,你必须对硬件本身的工作原理有很好的了解,简直是太神奇了,今天没有人使用的艰难。
 
coringajoker:
我真的很尊敬那些编写汇编的人,你必须对硬件本身的工作原理有很好的了解,这简直是不可思议的,今天没有人再使用了。

我现在不写代码了,但在过去真的很重要。在英特尔80x86芯片上,这是实现视觉性能方面的真正优势的唯一机会。当然,这是一个我不想错过的基本知识,即使我不再需要它的细节,但你总是知道你的代码最后会发生什么,你知道如何利用它作为执行速度的优势。

是啊,"美好 "的旧时光;)...但也很疯狂,甚至没有变量,没有真正的函数,没有if then else,只有寄存器、堆栈、中断和内存地址。疯狂的狗屎 :)

 

OOP是一种将代码分割成可重用的小部分的工具。但最好的部分是模板。这个功能允许你简化代码。最好的例子是数组类。在Java中你必须为类型创建一个类。在C++和Mql5中,你可以把它放在一个类中,减少多余的代码,并绕过一些当你混合基元和对象时的问题。

PS: 关于ASM,它是老式的。我在第一次使用保护模式的编译器之前就使用过它,并且很有趣地超越了限制。64K段的选择器在那个时候是编码者的噩梦。每当你写错地方,你就得重启电脑:)