错误、漏洞、问题 - 页 2637

 
Andrei Trukhanovich:

也许与函数式编程相比?

看看维基百科吧。

而我们发现,这不是同一件事。


所以这都是程序性的...

 
Nikolai Semko:

我可能会让你吃惊,但今天的年轻程序员认为OOP比程序化编程更容易。

你想的是25年前的情况。今天的年轻人用他们母亲的乳汁吸收OOP。如果你想顺应潮流,就学习OOP,否则你就只能抱怨了。

但它确实是这样。让老程序员尝试解决学童 的奥林匹克任务。

他们早先在大学学习的内容,如动态编程、图论、OOP、类等科目。现在9-10年级的学生(当然不是全部)在几分钟内就能解决这些问题。

而这是自然的。自然法则 :)

 
Roman:

是的,我理解OOP,当然不是我想理解的程度。
这不是埋怨,而是一个建设性的建议。
为了让开发者不必写一个函数来分配两个malloc,他们强迫用户学习OOP。
当然,这也是语言的进步和普及。那么,你可以在这里看到他们对OOP的热爱和理解。
你看,Nikolay,包装器中的所有内容都是要执行的不必要的代码,我想我们不需要解释。
我不需要告诉你现代优化编译器的情况--我们不知道他们会应用什么指令。
也许我还会让你吃惊,即使是美国的程序员也喜欢用程序化的方式来写,并不是因为OOP不好,而是因为代码更简单、更快。
而且
,如果项目中没有对象任务,为什么要使用包装器,这必须以某种方式被理解,对于年轻人来说))
这就是为什么我不同意你说年轻人热衷于吸收OOP。

我是用C语言思考的,这也是mql语言的逻辑基础。
C是1972年出生的,所以已经48岁了 ))
但无论如何,C语言是最快的语言之一。你知道为什么吗?因为它没有类的包装器。

嗯,这根本不是真的。只是仍有许多语言在使用时没有OOP。比如说,C。例如,在加拿大,大多数政府机构都坐在Kobol上,无法摆脱它。

https://www.tiobe.com/tiobe-index/

罗曼,说实话,我不明白你为什么对改变矩阵尺寸大惊小怪--这能有什么困难。
你不需要指针或OOP来实现这一点。
总之,对于计算机来说,任何维度的数组都是一个一维数组。
所以,用一个一维动态数组来工作。并在函数的帮助下虚拟形成矩阵,并按你的意愿调整其大小。
例如,像这样的事情。

double GetValFromMx(double &A, int x, int y, int SizeX, int SizeY) {
if (x<SizeX && y<SizeY) return A[y*SizeX+x];
else return EMPTY_VALUE; }

在实践中,我在代码中只使用一维数组,尽管我也在一维数组的基础上处理多维数组。

 
Roman:

这就是为什么我想请你把ArrayResize这样的函数只用于矩阵 ArrayResizeMx(A, n, m)

全部完成,不希望使用OOP的现成解决方案(不要求你知道OOP,使用现成的!)。

使用ALGLIB,有一个方法可以调整矩阵大小 Resize()....。但一切仍由OOP完成))))。

SZS: 在论坛里搜索一下,这个话题有很多次,有例子,你可以把一个有数组字段的结构包在这些结构的数组里--这将是没有OOP的,但对我来说,这一切看起来很麻烦。

罗马 人。

我是用C语言思考的,这是mql逻辑的基础。

C语言诞生于1972年,所以事实证明,它已经有48年的历史了 ))
但无论如何,C语言是最快的语言之一。你知道为什么吗?因为它没有类的包装器。

我不记得纯C语言了,我很久以前在大学学过,但如果我没记错的话,C语言没有动态数组这种东西,但你可以用指针来处理内存,内存分配 和内存访问控制的工作完全由程序员负责,这基本上是同一个包装

好吧,这可能是一个伟大的论点,没有必要继续下去。

 
Nikolai Semko:

罗曼,说实话,我不明白你为什么对改变矩阵尺寸大惊小怪--这能有什么困难。
你不需要指针或OOP来实现这一点。
总之,对于计算机来说,任何维度的数组都是一个一维数组。
所以,用一个一维动态数组来工作。同时,虚拟形成矩阵,并按你的意愿使用函数调整其大小。

很明显,任何维度对于计算机来说都是一个一维数组。
如果我们在代码中看到[][]这个维度,我们就可以直观地了解到这是一个矩阵,而不是一个一维数组。
代码的可读性比猜测[][]的内容要高得多。
我没有想到,当要求我增加一个关于矩阵的内存分配的函数时,会遇到这样的不理解。
你们所有的人都在使用ArrayResize,它很方便,而且你们也不去管它。对于开发者来说,为多维数组 写一个内存分配函数是什么问题?
没错,没有任何问题和障碍,对于用户来说,组织代码很方便。所以我决定把一个大的好的C语言的数值方法库移植到mql中。
但我没有任何正常的mql工具来做这个。再一次有了拐杖,这就消除了构建低效代码的所有欲望。

 
Roman:

我确实了解OOP,当然,并不像我想的那样多。
这不是埋怨,而是一个建设性的建议。
为了让开发者不必写一个函数来分配两个malloc,他们强迫用户学习OOP。
当然,这也是语言的进步和普及。那么,你可以在这里看到他们对OOP的热爱和理解。
你看,Nikolay,包装器中的所有内容都是要执行的不必要的代码,我想我们不需要解释。
我不需要告诉你现代优化编译器的情况--我们不知道他们会应用什么指令。
也许我还会让你吃惊,即使是美国的程序员也喜欢用程序化的方式来写,并不是因为OOP不好,而是因为代码更简单、更快。
而且,如果项目中没有对象任务,为什么要使用包装器,这必须以某种方式被理解,对于年轻人来说))
这就是为什么我不同意你说年轻人热衷于吸收OOP。

我是用C语言思考的,这也是mql语言的逻辑基础。
C是1972年出生的,所以已经48岁了 ))
但无论如何,C语言是最快的语言之一。你知道为什么吗?因为它没有类的包装器。

MQL是用C++构建的。

罗曼,为了引入你提到的这些功能,MQL将不得不在处理内存方面引入许多额外的东西。而这对初学者来说是一个复杂的问题。

你自己也说过,对非专业人员来说,这肯定更容易。

这种情况就像 "我很擅长学习踩自行车,它是如此简单和易懂。让我们在宝马车上装上踏板,这样会更容易。":)

也就是说,我普遍认为程序化和OOP风格都很蹩脚,不切实际))

 
Igor Makanu:

全部完成,不希望使用OOP的现成解决方案(不要求你知道OOP,使用现成的!)。

使用ALGLIB,有一个方法可以调整矩阵大小 Resize()....。但它仍然是用OOP完成的))))。

SZS: 在论坛里搜索一下,这个话题有很多次,有例子,你可以把一个有数组字段的结构包在这些结构的数组里--这将是没有OOP的,但对我来说,这一切看起来很麻烦。

问题是你记不住纯C语言,我在大学学过,但如果我没记错的话,C语言没有动态数组这种东西,但你可以用指针来处理内存,分配内存 和控制内存访问的工作完全由程序员决定,这将是对程序员的一种包装

好吧,这可能会成为一个伟大的争论,没有必要继续下去。

试过ALGLIB,从对象中打印有问题,ArrayPrint函数不打印对象。
但从[][]打印出一个漂亮的矩阵,即使有标题,同样,当你需要直观地跟踪计算结果时,很容易看到。
是的,我看了论坛上的一些主题,但我没有印象。这就是为什么一切看起来都很累赘和低效。C是一种非常优雅的语言,而Mql往往会破坏它。
是的,C语言可以通过指针为动态矩阵分配内存,但在mql中,没有变量的指针,所以我们又必须传递给对象。
当用户只需要一个ArrayResizeMx(A, n, m, k)的函数,并且它将在本地实现中,你就会明白其中的区别。
好吧,继续下去也没有意义,如果他们已经听说了,并且会去做,非常感谢你。但这个功能确实很有用,很有必要。

 
Roman:

大声猜测,但这更像是对开发商的呼吁。
对于这个Zloy,不要放在心上。

所以,动态矩阵只能通过对象或结构来处理。另一个拐杖是在总体上创造的。
在mql中没有指向变量的指针,所以我们必须使用有指针的对象方法。
因此,要使用动态矩阵,用户必须了解OOP和与指针打交道,此外,还要了解MQL的执行。
他们中有多少人拥有这种知识?你自己知道答案。 我在理解对象方法方面没有任何困难,但对于那些不了解OOP的人来说
它们为使用该语言创造了一个人为的门槛,特别是在处理动态矩阵时。
在我看来,相反,一个开发者应该对使语言更容易使用感兴趣,而不是使它复杂化
换句话说,他们应该开发对用户来说是必要的功能,以便舒适地使用该语言工作。
矩阵更是如此,它几乎是数值方法的基础。

出于这个原因,我想请你创建类似于ArrayResize的函数,但针对矩阵ArrayResizeMx(A, n, m)。
也许也是为了多维的。换句话说,就是让人们在处理矩阵时不像处理对象那样,而是像处理C语言中的常规数组那样。
特别是对于矩阵的可视化表示,ArrayPrint(A, 0)函数从数组而不是对象中打印矩阵。

开发商在这方面做得很具体。这里

Респект и уважуха создателям языка, Но...
Респект и уважуха создателям языка, Но...
  • 2010.05.15
  • www.mql5.com
Добавление ООП потребовало от создателей языка изменения синтаксиса, для введения классов и структур и много-го чего.
 
Koldun Zloy:

开发商在这方面做得很具体。这里

不需要走远,下一个帖子,有Prival的具体问题。
我认识他很久了,因为大约在同一时间,一个合格的军事开发人员,什么,他为什么离开这里,答案是显而易见的。
已经十年了,有什么变化吗?
由于它充满了简单的算法,所以一直保持在这个水平。专业的解决方案在哪里?
但是,我们对Python的编写,更多的是为了给编写这些专业的解决方案和开发我们的kodobase提供工具。
这就是错误所在,没有工具,没有适当水平的程序员。
好了,我现在要睡觉了,我还没睡呢。祝大家好运。

Респект и уважуха создателям языка, Но...
Респект и уважуха создателям языка, Но...
  • 2010.05.15
  • www.mql5.com
Добавление ООП потребовало от создателей языка изменения синтаксиса, для введения классов и структур и много-го чего.
 
Nikolai Semko:

所以这都是程序性的...

程序性是B,都是基本的东西,只是有更多的机会让你射中自己的脚。

我认为你弄错了,是指功能性。不过,这并不重要。