从头开始自学MQL5语言 - 页 47

 

Vladimir Simakov:

我的伙伴看着这堆狗屎说。我25万,我的两个垃圾各7.5万,我们将在六个月内重写这些垃圾,或者把它扔掉。

该解决方案是正确的,从设置上看,采用所述的方法,全科医生总会有问题。

 
MrBrooklin:

我读了所有关于全局变量的帖子,理解了所有参与讨论的人想要告诉我的东西。我将学习如何在不使用全局变量的情况下编写程序代码。谢谢大家的建设性意见

真诚的,弗拉基米尔。

程序员们害怕使用全局变量,因为在改变其值时可能会犯错误。这就造成了一种错误难以定位的情况,因为每个函数都可以改变它们。当然,只有那些变量必须存在于全局范围内,所有的程序函数都必须看到这些变量。不可能是别的。

我一直喜欢使用全局变量,因为它们保证了功能的快速增长,程序变成了一个巨大的、活跃的施工现场。人们经常指责我写代码的方式,但这就是为什么它是一个建筑工地:在基本的建筑工作完成后,你要清理它,当房子完成后,你可以开始贴瓷砖、刷油漆、清理区域。在这之前,首要任务是组装模板和浇筑混凝土)。

然而,程序员的思维方式不同。他们会 "清理 "和 "擦洗 "他们的代码,即使是两行半的代码。他们会擦洗他们的代码,即使它有两行半长,但它会像新硬币一样闪闪发光)。这种对代码的态度在他们赖以生存的职业中是合理的,但从创造性的角度来看,他们是僵硬的,发展得很差。这就是事实...

我的建议是:学习正确的写作,但有时允许自己脱离规则,进行实验,以获得更多的经验。这将有助于你的学习,你会学得更快。
 
MrBrooklin:

我继续学习MQL5编程语言。我再次粘贴了修改后的脚本代码,其中考虑到了本主题参与者的提示。我已经在所有模式下测试了该脚本。没有发现问题。首先,我应用了最小数量的输入参数。脚本代码是用英语写的,对代码的评论是用俄语写的,这样更容易消化。正如我之前所承诺的,我试图以一个编程学校的一级学生可以理解的方式来描述这个脚本。

我希望我是按照这个主题的参与者告诉我的方式做的,但我可能是错的。

问候,弗拉基米尔。

你自己想出了如何和在哪里移动全局变量bool enough_time,这很好。你正在取得进展。
 
Реter Konow:
很好,你已经知道了如何以及在哪里移动全局变量bool_timе。你正在做一项伟大的工作。

谢谢你,彼得,感谢你的支持和帮助。我把全局变量 移到了函数里面,这要感谢这个主题的参与者之前给我的提示。现在,当信息在我脑海中被整理出来后,掌握新事物就变得容易多了。

问候,弗拉基米尔。

 

大家早上好,心情不错!

尊敬的编程专家!我想对你与我分享的所有提示和建设性意见表示衷心的感谢!你是我的朋友。

真诚的,弗拉基米尔。

 
MrBrooklin:

大家早上好,心情不错!

尊敬的编程专家!我想对你与我分享的所有提示和建设性意见表示衷心的感谢!你是我的朋友。

真诚的,弗拉基米尔。


你是快速移动的...:-)
这是因为我接受了基本的高等技术教育,如果我没有弄错的话......

 
Aleksey Masterov:

你走得很快...:-)
这是因为基本的高等技术教育,如果我没记错的话...

你好,阿列克谢!是的,没错,我有一个与生产过程自动化有关的苏联 高等技术教育,以及在一个组织中作为电子工程师的经验,在那些非常苏维埃 的日子里,该组织正在维修电子计算机。

问候,Vladimir

 
MrBrooklin:

你好,阿列克谢!是的,我接受 与生产过程自动化有关的高等技术教育,并有作为电子工程师的工作经验,该组织在同一苏联 时代从事ECM的维修工作。

真诚的,弗拉基米尔。


对我来说,它在你那里是立即可以注意到的......在这种将幻想转化为代码的 "艺术 "中,你的进步水平和速度,特别是像你最新的剧本中的这种哲学性的幻想:-)
IMHO,如果你继续以这种速度,你将会摩擦这里的许多专家程序员的鼻子......。:-)
申请MT5 methaquotes团队的远程工作!!。
 
Vasiliy Sokolov:

继续在

从上面的帖子中可以看出,重点是在功能上。一切都是为了他们,除了他们,什么都没有。人们可能会认为这是一个明显的主观偏见或一些神秘的 "哲学"。然而,这里没有哲学。而这种对功能的关注并不是偶然的。问题是,在编程中,功能是至关重要的。此外,函数是数学中一个非常重要和基本的概念。在上世纪20年代,阿隆佐-丘奇开发了一个基于函数的微积分系统。这被称为lambda-calculus。这个系统正式确定了可计算性的概念,并将计算机计算和数学紧密地结合在一起。 世界上领先的程序员开发了基于λ-微积分的所谓函数式编程语言,其中函数占主导地位。例如,在Haskell函数式编程语言中,甚至不存在for循环或类似的东西。相反,建议以特殊的方式,递归 调用一个函数,以计算出所需的值。可以证明,只有函数而没有赋值,就有可能写出一种图灵完整的编程语言。这是一种允许编写任何其他图灵完备语言(如程序性语言或OOP语言)中可能存在的一切的语言。

MQL不是一种函数式语言,而是一种程序式语言,可通过类进行扩展,具有严格的类型和丰富的面向主题的API(以相同的函数形式,哦,令人惊讶)。另一方面,函数理论是建立在坚实的数学基础之上的,它为使用任何有函数的编程语言提供了简单而有效的模式,因此,放弃函数及其背后的数学基础至少是没有远见的。这就是为什么我如此关注功能。你对数组设计的理解有多深并不重要,如果你在某个数据类型上犯了错误也不重要。这可以很快得到修复和纠正。但如果你不了解函数以及它们之间的关系,你甚至不会成为一个普通的程序员。

因此,要学习如何正常进行,即随着时间的推移线性地扩展你的程序的功能,你需要学习以下内容。

  • 清楚地(如果不彻底,但显然需要)表示MetaTrader 4.5的事件模型。
  • 知道如何使用系统功能。用自己的函数总结他们的结果。将系统函数的调用合并为你自己的函数。
  • 能够并喜欢编写自己的函数。
  • 能够理解函数调用链:例如,当函数a()调用函数b(),而b()调用c(),e()调用函数c()。
  • 知道如何编写干净的函数,了解为什么要编写干净的函数。我将在后面解释什么是纯函数。

功能似乎很简单。"有什么可学的。你只需要在这里读一段,就可以了。然后是数组,对于,而......"- 不,他们不是。功能确实看起来很简单(这很好)。但要使它们真正有效地解决任务,函数必须具有某些属性,并以某种方式相互结合。如何做这一切,我可能会在以后写。

你好,瓦西里!如果对你来说不难的话,请写一篇关于函数属性的续集。对我来说,和其他编程新手一样,知道函数必须具有某些属性并以某种方式相互连接 是非常重要和有用的。

你所有与职能有关的信息块都已经收集在一个Word文档中,供我自己使用。

真诚的,弗拉基米尔。

 
Aleksey Masterov:

...申请MT5 methaquotes团队的远程工作!!。

阿列克谢,你在开玩笑吗?是的,我想先学好基础知识!

真诚的,弗拉基米尔。