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

 
Doerk Hilger:

你真的指望一个专业人员发布一个compex库,就这样作为一个 "证明"?)我可以给你一个链接,让你看到一些在这里的市场上无法出售的东西,但如果我这样做,阿兰会踢我的;)你可以访问我的个人资料,看看墙上的图片,以获得一个想法,或者给我发个邮件。

另一个平台?你不会找到任何其他平台有如此强大的编译器。一点也不。

@James Cater - 非常感谢你的评论。

除了MT,还有 其他平台,至于编译器是否强大,我真的不在乎,只要我能写出简单的代码。

你在这里缺少的是教育,我们都还在学习,只是有些人在这条路上比其他一些人走得更远。据我所知,这不是一个竞赛,而是一个交流知识和支持的地方。

顺便说一句,我不相信这个论坛上的任何人会写出一百万行的程序。

 
Alain Verleyen:
你忽略了一点,德克。非专业人士想要简单明了的代码例子,这也是我提出这个话题的目的。但这似乎完全超出了专家的理解范围。

你说的关键是发生在每一种语言中。 最新的语言试图简化事情,让那些缺乏编码知识的人也能加入到 "编码者 "的行列中。最好的例子是伪语言HTML。这是个大错误。当MT5被开发时,许多 "新手 "指责OOP风格,因为它很难。但事实是每项工作都有其专业性。如果你想改进一个平台,你就得把它复杂化。更多的功能更多的灵活性。让不懂编码的人去做,就像不懂建造房屋的人去做一样。这将是一场灾难。

关于项目 的长度取决于编码者。我的库对MQL语言来说是中等规模。其他人只需要小的库来创建工具。在我的情况下,我更愿意把时间花在创建框架上,以节省时间和简化未来的开发。如果你要做复杂的用户界面或重复使用其他项目的代码,这才是更明智的做法。

 
Juan Fernandez:

你说的关键是发生在每一种语言中。 最新的语言试图简化事情,让那些缺乏编码知识的人也能加入到 "编码者 "的行列中。最好的例子是伪语言HTML。这是个大错误。当MT5被开发时,许多 "新手 "指责OOP风格,因为它很难。但事实是每项工作都有其专业性。如果你想改进一个平台,你就得把它复杂化。更多的功能更多的灵活性。让不懂编码的人去做,就像不懂建造房屋的人去做一样。这将是一场灾难。

关于项目的长度取决于编码者。我的库对MQL语言来说是中等规模。其他人只需要小的库来创建工具。在我的情况下,我宁愿花时间在创建框架上,以节省时间和简化未来的开发。如果你需要制作复杂的用户界面或重复使用其他项目的代码,这是最明智的做法。

所以人们不能获得知识?

 

程序化与OOP是一场无用的争论,3年前已经讨论过了,我的回答完全正确,这里已经没有什么好说的了。

关于交易、自动交易系统和测试交易策略的论坛

程序员。你有什么看法。OOP与程序化

Alain Verleyen, 2013.06.11 13:11

你的投票缺少一个选项,让那些什么都不喜欢的人选择。我的意思是,这不仅仅是一个偏好的问题,对于一个小脚本甚至是一个简单的EA来说,使用OOP是没有意义的。OOP总是会增加工作,而且只对复杂的项目和代码的可重用性(同一代码在多个项目中使用)有利。复杂并不等同于大型,如果某人有一个大型项目但相对简单 ,这并不 自动意味着 他必须 使用OOP。

你可以通过Metaquotes开发的MQL5 Wizard 看到OOP的巨大潜力,用程序化编程开发这样一个工具是非常困难的, 尽管它是 可行的。

OOP应该被使用。

  • 在复杂的项目中,就像Doerk和James所说的那样,非常好。
  • 当你想重复使用你的代码时。

从现在开始,我将不接受任何不具体的帖子,没有代码例子来证明为什么以及如何在上述情况下更好地使用OOP。

 
Alain Verleyen:

程序化与OOP是一场无用的辩论,3年前就已经讨论过了,我的答案完全正确,这里没有再多说什么。

OOP应该被使用。

  • 在复杂的项目中,如Doerk和James所说的那样。
  • 当你想重复使用你的代码时。

从现在开始,我将不接受任何不具体的帖子,没有代码例子来证明为什么以及如何在上述情况下更好地使用OOP。

谢谢你
 
我看了这个话题,觉得很有意思,但机器码不是程序性的吗?所以高级语言,包括OOP,最后都在编译器中被翻译成程序性的,对吗?如果所有的语言都被翻译成程序化的机器代码,那么我们可以说所有的事情都可以用程序化的方式来完成,如果程序员有这样的技能的话,如果我说错了,请有人纠正我。
 
Mrluck07:
我看了这个话题,觉得很有意思,但机器码不是程序性的吗?所以高级语言,包括OOP,最后都在编译器中被翻译成程序性的,对吗?如果所有的语言都被翻译成程序化的机器代码,那么我们可以说所有的事情都可以用程序化的方式完成,如果程序员有这样的技能的话,如果我说错了,请有人纠正我。

从理论上讲,一切都可以用过程式完成。这是不实际的。
一块砖头是由成千上万的沙粒堆积而成的,所以你可以不用砖头,只用沙子就能建起一座房子。
但是当你有砖头的时候,根本没有人去尝试。

一架飞机是由现成的部件建成的--机翼、轮子、座椅、电脑等等。它们最后都是由金属或塑料或玻璃制成的。但没有人会用纯玻璃、塑料和金属来制造飞机。

对于一般的辩论(为了回应Alain和其他人)。以CArrayObj为例--一个对象的数组。仅仅这一点就足以回答OO的力量是什么(远不止于此)。它可以存储任何对象的数组--比如说指标。
而且不费吹灰之力就能为所有这些不同的指标做复杂的事情。如果你现在想要一个新的功能,比如你想知道一个指标的缓冲区 何时被越过,你只需要把这个方法放在Indicator中,就可以了。以此类推。在程序性中你会怎么做呢?

这可以在所有方面进行--策略、交易、交易、信号--任何方面。

 
Amir Yacoby:

从理论上讲,一切都可以在程序中完成。但这并不实际。
一块砖头是由成千上万的沙粒堆积而成的,所以你可以不用砖头,只用沙子就能建起一座房子。
但是当你有砖头的时候,根本没有人去尝试。

一架飞机是由现成的部件建成的--机翼、轮子、座椅、电脑等等。它们最后都是由金属或塑料或玻璃制成的。但没有人会用纯玻璃、塑料和金属来制造飞机。

对于一般的辩论(为了回应Alain和其他人)。以CArrayObj为例--一个对象的数组。仅仅这一点就足以回答OO的力量是什么(远不止于此)。它可以存储任何对象的数组--比如说指标。
而且不费吹灰之力就能为所有这些不同的指标做复杂的事情。如果你现在想要一个新的功能,比如你想知道一个指标的缓冲区 何时被越过,你只需要把这个方法放在Indicator中,就可以了。以此类推。在程序性中你会怎么做呢?

这可以在所有方面进行--策略、交易、交易、信号--任何方面。

这个话题是故意挑衅的,然而主要问题的答案(OOP能做什么,程序性代码不能做什么)是没有的。

OOP当然不是建立和使用砖块的唯一方法。与程序化代码相比,在OOP中至少有同样多的方法来创建糟糕的代码(而且很可能有更多的方法)。看看Metaquotes提供的 "标准库 "就知道了,它实际上远远不是 "标准"。

OOP与程序性的争论是无用的,而且是无休止的。一个更有用的辩论应该是 "如何产生高质量的代码?有或没有OOP,有或没有过程性,有或没有任何编程范式"。如果你的需求是建造一座木头房子,你不需要砖头,但你需要它是一个好的、坚实的和可靠的房子。

 
我知道这很有挑衅性,阿兰。
好的编程肯定可以在任何地方得到实践。但是,由于每个世界都是由对象构成的,包括交易世界,OO更适合描述这个世界,而不是程序。当然,当它们都写得很好的时候。


 
Amir Yacoby:

一切都可以在程序理论上完成。这是不实际的。
一块砖头是由成千上万的沙粒堆积而成的,所以你可以不用砖头,只用沙子就能建起一座房子。
但是当你有砖头的时候,根本没有人去尝试。

一架飞机是由现成的部件建成的--机翼、轮子、座椅、电脑等等。它们最后都是由金属或塑料或玻璃制成的。但没有人会用纯玻璃、塑料和金属来制造飞机。

对于一般的辩论(为了回应Alain和其他人)。以CArrayObj为例--一个对象的数组。仅仅这一点就足以回答OO的力量是什么(远不止于此)。它可以存储任何对象的数组--比如说指标。
而且不费吹灰之力就能为所有这些不同的指标做复杂的事情。如果你现在想要一个新的功能,例如你想知道一个指标的缓冲区 何时被越过,你只需要把这个方法放在Indicator中,就可以了。以此类推。在程序性中你会怎么做呢?

这可以在所有方面进行--策略、交易、交易、信号--任何方面。

在你的例子中,当你编写OO代码并点击编译时,它将生成机器代码。但是这个机器代码到底是不是程序化的?我真的不知道答案,这里有人知道吗?如果机器码是程序性的,那么你可以把OO称作是一种更高级的语言,只是让编码更容易,但没有什么特别的,所以一个熟练的C程序员可以做和OO程序员一样的工作,事实上,它甚至可以优化得更好。所以我的问题是,前代码是否是原生的?