再见,机器人--你好,沼泽地。 - 页 12

 
simpleton:

顺便说一下,关于管理经验。5年前,我们在mql5论坛上争论过MT5的前景,我当时说,时间会证明一切。五年过去了,我们看到社区已经拒绝了MT5。

你缺乏信息。我们从不为我们的客户群和实施情况做广告。


我不是在翻译,一般的原则,理论,--不是为了理论本身,而是为了在实践中应用。你不会在同样的C/C++编译器中发现如此严重的 "缺陷"。

并已发现,甚至向作者报告了他们的情况。


如果你说在这种情况下,"静态类方法无权进入类的内容",那么为什么在动态对象创建的情况下,它已经有了这种权利?

我是说 "过度保护,让我们来解决这个问题"。在理论上,这些条件听起来很简单,但在实践中,静态/动态实现的工作方式不同,这导致了差异。


非静态实现的行为方式完全相同,那怎么办?

同样的事情,"私人就是私人 "的规则压倒了 "对于设计者/开发者,我们做一个例外 "的细微差别。 我们会解决这个问题。


如果在语言实现中存在错误,那么,是的,存在错误。你说的是全面质量控制--所以要在实践中摆脱MQL4++编译器中的执行错误,这样一来,几乎就像在C++编译器中一样难以发现错误,因为你有这样的控制。我仍然认为,分析器无助于摆脱像我演示的那些错误。

这是正确的,是我们自己从头开始编写的编译器中的错误/失误。所以这是收集耙子的通常方式。

全面质量控制是一种系统性的工作方法,并明确专注于发现bug。这正是我们所做的。而你则表示,你反对胁迫,不希望通过技术手段进行严格控制。



这与喜欢或不喜欢无关。有一个工具。我为什么要拒绝使用它的所有可能性呢?

在这种情况下,这甚至不是 "我喜欢 "的问题。就这一点而言,是迈尔斯如此喜欢它。而出于某种原因,没有人试图指责他试图 "故意绊倒 "C++编译器。

我们有一个很好的解释--"这不是一种C++语言,而是一种专门的MQL4/MQL5语言。因此,我们不必支持所有的事情"。但无论如何,行为将尽可能地减少到熟悉的C/C++。


这不是一项容易的任务,不能一蹴而就地解决。你必须在这里付出一些努力,而且是不小的努力。绝大多数的MQL用户都不是程序员。而这一点必须在语言设计中加以考虑。但这个任务是可以解决的,我相信。

如果有的话,只要在旧的MQL4中增加一些结构,并清理一些东西,如操作的优先级,就足够了,因为这是为MQL4++所做的,这将是一个合理的妥协。MT4的成功主要是由于语言的不 "聪明"。现在的情况并非如此。而且,在编译器实现中的错误要多得多,因为MQL4++比旧的MQL4要复杂得多,而开发团队几乎没有什么变化。

这里我同意你的观点,但我认为主要是因为竞争对手不了解他们在做什么。

在过去的14年里,我们已经从头到尾重写了5个交易平台5次。

比起给老驴装悬浮砖,这是个更好的方法来创造真正酷的东西。因此,MT5的发布和新的MQL5都给我们带来了未来10年的巨大前景。

但是,那些坐在那里堆砌旧项目,认为 "让鸟在手,最主要的是,如果我开始一个新的项目并失败,我不会被解雇 "的人,失去了管理层的尊重,他们被写成无能,慢慢地离开了现场。

 
Renat:
你缺乏信息。我们从不为我们的客户群和执行情况做广告。

我是根据公开信息和对以前版本的支持来判断的,即MT4。

当MT4问世后,MT3很快就不再被支持和提供了--所有人都转而使用MT4。这种情况在MT4-MT5对中没有发生,尽管已经过去了很多时间。而且仍然明显偏向于MT4。

你甚至已经从MT5移植回MT4,包括编译器。在MT4发布4年后,你有没有从MT4移植任何东西到MT3?

雷纳特
而他们确实这样做了,甚至向作者报告了这些情况。

但是有一个区别:在现代C/C++编译器中发现一个错误可能比在MQL4++中发现一个错误要难几百甚至几千倍。

雷纳特

我曾经说过 "过度保护,让我们来解决这个问题"。在理论上,这些条件听起来很简单,但在实践中,静态/动态实现的工作方式不同,这导致了差异。

同样的事情--"private means private "的规则覆盖了 "为构造函数/解构函数做例外处理 "的规则。 我们将修复这个问题。

没错,这是我们自己从头开始编写的编译器中的错误/不一致之处。所以这是收集耙子的通常方式。

全面质量控制是一种系统性的工作方法,并明确专注于发现bug。这正是我们所做的。

应用通常的回归测试就足够了,这甚至不需要任何特殊的 "引擎"。在语言中的类/结构中有访问控制--以可编译的MQL程序的形式为它写一次测试。有些应该成功编译,有些应该编译时出现某种错误。这就是这个特殊地方的总体质量控制。这是真的,必须先编写涵盖所有访问控制功能的测试...

Renat:
与此相反,你说你反对胁迫,不希望用技术手段严格控制。

这并不是相反的。MQL程序的MQL编译器可以默认包括警告和一些C++编译器所说的备注。但我只是在 "说明",至少应该禁用这些言论。在MQL程序的MQL编译器。而现在,在MQL4++编译器中没有任何东西可以在这个意义上被禁用。

在实施特别是MQL编译器时,缺乏质量控制,因为它的错误很容易被发现。你说的严格控制MQL程序的质量是什么意思?

Renat:
我们有一个很好的解释 - "这不是C++语言,而是专门的MQL4/MQL5。因此,我们没有义务支持所有的人"。但无论如何,行为将尽可能地减少到熟悉的C/C++。

很好。你不支持一切。但所支持的东西不能在最简单的基本结构中包含如此多的错误。

你是否支持对类/结构成员的访问控制?在最简单的基本结构中至少支持所有的基本情况,没有错误。

采取同样的访问控制--在最简单的基本结构中。

/******************************************************************************/
class A {
private:
  class B { };
};

/******************************************************************************/
void OnStart() {
  A a;
  B b;
}

这个编译没有错误。

'3.mq4' 3.mq4   1       1
0 error(s), 0 warning(s)                1       1

然而,我们看到,这段代码在C++中无法编译,原因有二。

$ clang -c 3.cpp
3.cpp:10:3: error: unknown type name 'B'
  B b;
  ^
1 error generated.

类B被定义在类A里面,所以它应该在OnStart()中被引用为A::B。

class A {
private:
  class B { };
};

/******************************************************************************/
void OnStart() {
  A a;
  A::B b;
}

但这还不是全部--修改后的代码仍然不能用C++编译器进行编译。

$ clang -c 3.cpp
3.cpp:10:6: error: 'B' is a private member of 'A'
  A::B b;
     ^
3.cpp:4:9: note: declared private here
  class B { };
        ^
1 error generated.

由于某些原因,MQL4++中的访问控制通常适用于方法和数据--类成员,但不适用于类型。

当为B类指定范围为A::B时,MQL4++编译器会产生以下错误。

'3.mq4' 3.mq4   1       1
'B' - struct member undefined   3.mq4   12      6
'b' - undeclared identifier     3.mq4   12      8
'b' - some operator expected    3.mq4   12      8
expression has no effect        3.mq4   12      6
3 error(s), 1 warning(s)                4       2

为什么这个 "结构成员未定义"?

同样,C++编译器对类内的类型也不会有什么问题。但MQL4++编译器是这样的。

这些错误是在试图实现Myers单子时意外发现的。有些错误是我发现的,有些是由其他讨论参与者发现的。它显示了在用MQL4++编程时,人们是多么容易碰上编译器的执行错误。而且,你不必刻意寻找错误来绊倒他们,只要努力解决任务即可。

请注意,这些都是认真使用MQL4++的关键错误。

很明显,没有我上面提到的那种回归测试,至少可以检查MQL4++编译器的测试访问控制。否则,现在应该已经全部被检测到并修复了。

Renat:
在过去的14年里,我们已经从头开始重写了5个交易平台5次。

这是比给老驴装上悬浮砖更好的方法,可以创造出真正酷的东西。这就是为什么MT5的发布和新的MQL5都给我们带来了未来10年的巨大前景。

但是,那些坐在那里敲打着一个旧项目,想着 "让小鸟在手,最主要的是如果我开始一个新项目而失败了,不要被解雇 "的人正在失去管理层的尊重,他们被写成无能,并慢慢离开现场。

我同意,具有创新类型的发展的积极行动是最重要的组成部分,但它不是唯一的组成部分。而你可以用药膏中的一只苍蝇来破坏一桶蜂蜜。

其中一种色调是明显缺乏质量。在MQL中创建任何东西的理由都因为它而失去了。

 

我关于SSE2,也许不是主题,但也是带着愉悦的心情,听了一些。

我得换一台电脑,不是全部,但它分散了我的注意力,不是为了发展,不是为了交易,只是为了看论坛。

 
MT5超级!在上面建造金字塔是很神奇的。
 

论坛的用户们,你们好!

我正在升级到mt5,想知道

来问帕夫利克。

帕夫利克,如果你看到我,给我发个信息。

r.klassen.ruit@web.de

豆瓣酱

 
TimeMaster:

如果你有大量的放纵、猫头鹰等基础,在新的构建中不能编译,那么仔细看看并 "摇晃你的胸膛 "是有意义的。你应该保留所有有用的东西,并且不遗余力地为新版本重写和调试它。

在某一时刻,我感到厌烦了)。

时间大师

真正有经验的程序员或那些想成为他们的人,总是遵循创新、错误和故障的面包。写出没有bug的代码才算得上是好的编程。如果你没有精力、时间、可能性或愿望来掌握 "Metakvot "的所有创新,请使用你所精通的语言。DLLs并没有被废除,插入你自己的微调算法。

真正的交易员或那些想成为他们的人都遵循什么?)可用的自动交易,MT的主要功能,已经被遗忘,并在无数建筑的不断创新中丢失......通过更严肃的编程方法提供的自动交易选项,让我们说 - "是"。 我自己在MT上只有一个几乎被遗忘的小账户。今天花了2个小时修复MT工具,从外观上看,我需要10倍以上的工具。不知道我是否需要它,也许我会再做一次,但更像是 "根据旧的记忆"。基本上,我已经下定决心。

 
Figar0:

可用的自动交易,即MT的主要功能--已经被遗忘,并在无数建筑的不断创新中迷失......通过更严肃的编程方法提供的自动交易选项,我们可以说,"有"。 我自己在MT上只剩下一个几乎被遗忘的小账户。今天花了2个小时修复MT工具,从外观上看,我需要10倍以上的工具。不知道我是否需要它,也许我会再做一次,但更像是 "根据旧的记忆"。基本上,我已经下定决心。

实际上,即使是现在,如果只使用旧的功能,一切都可以工作。有些事情可以变得更容易、更可靠,例如,历史间隙的计算:在这之前(mcl++),有间隙的历史计算的可能性引起了一些 "头痛"(因为首先加载历史的 "尾巴",然后将缺失的条形图写在里面),我不得不使用 "拐杖"。现在一切都简单多了。你不能使用任何额外的功能,并像以前一样使用MKL的前身/改进的形式。例外的情况是那些已经超出数组范围的 程序(错误地计算索引或没有分配内存)--那些没有保证工作,而且很可能是以前不正确的。
 
Figar0:

在某些时候感到厌烦)

有人有大量的代码,这是谁的错?

费加0

基本上,我已经下定决心。

是不是有人想忍气吞声?被套住,被抱住?

 
AlexeyVik:

那是谁的错,有人有一大堆代码?

屎代码与此有什么关系?一些基本的东西已经改变
 
TheXpert:
狗屎代码与此有什么关系?一些基本的东西已经改变
只是想知道(我用的是旧的代码,它可以工作):哪些基本的东西?