雄心勃勃的想法!!! - 页 4

 
TheXpert:
安定下来。
为什么突然这样?盲目的宗教信仰是否受到伤害?:)
 
Andrei01:

为什么说是胡说八道呢?只要计算出需要多少个指针才能到达正确的数据或函数。

如果你当然知道如何计算。:)


当你创建一个新的类的实例--即一个类类型的变量时,它会创建一个重复的关系表,就是这样。

对数据的访问,无论是在类中还是在通常的变量中,其速度都是一样的,所有的描述性措施都是关于类内访问权的划分(私有、公有)--所有这些都是在编译器层面,编译后的代码只在物理内存单元中工作。

好吧,让我们假设会有一个 "复杂的动态类",它是由其他狡猾地产生的类飞快地产生的。那又怎样?毕竟,一切都将由一个特定的函数来计算。那么,真的值得为这种马戏团的把戏建造一个花园吗?

疾病是否在进展?你已经被告知了好几次,OOP将程序员从数据准备的常规动作中解放出来,从对数据内容的控制中解放出来,如何在类中实现方法或调用第三方函数,都是由程序员决定的。

OOP也是过去的事情了。目前的趋势是面向硬件的编程,这主要是用C语言,例如CUDA。随着带GPU的处理器的发布,这一点将得到进一步加强。处理器公司正计划停止只发布通用处理器内核。

在这里,我并不称职,在你的口中,这些信息似乎并不可信

SZZY:我为什么给你写信,不要在技术论坛上写废话,分享你的知识,如果你不知道什么,就问我。

 
IgorM:


当你创建一个新的类的实例--即一个类类型的变量时,它会创建一个重复的关系表,就是这样。

对数据的访问,无论是在类中还是在普通变量中,在速度上都是一样的,所有在类中分离访问权限的描述性措施(privat, public)都是在编译器层面,编译后的代码只对物理内存单元起作用。

那么这里有一个问题要问专家。有一个类由三个动态数 组组成(编译时的大小未知)。

现在请计算和比较在类中访问任意静态数组和动态数组的操作数。

 
IgorM:

我在这里并不称职,在你的口中,这些信息似乎并不可信
但是,信息的可靠性是否取决于谁在介绍信息?我认为任何明智的人都应该明白,信息是一个客观的东西,而不是主观的。:)
 
Andrei01:

程序的逻辑与数据的呈现有什么关系?这些事情根本没有联系。

程序逻辑是对任何输入数据的算术运算,而数据表示只是某种格式的数据。

而根据定义,用OOP不可能减少程序代码,因为出现了对象的外部指针来访问内部数据(函数和变量)而不是直接访问。但是,由于指针和内存引用的计算是一个非常缓慢的操作,性能也相应地减慢了。

开发OOP应用程序与开发类库是不一样的。严格地说,一个库的开发者根本不应该关心他们的库会被那些自己编写应用程序的人用来做什么。例如:一个锤子制造商根本不关心你如何使用他的产品--用来敲打钉子或敲打坚果。他的任务是创造一个工具。另外,在OOP中,类是解决一定范围内的任务的工具,通常非常广泛,并不总是明确的定义(谁知道呢,也许你用锤子来杀蟑螂?)

再一次,为了解决最简单的任务,你不需要OOP。但另一方面,你也不认为每个想敲钉子的人都要为自己做一把锤子,对吗?

当然,你可以说,我们已经有了函数库,为什么还需要更多的类? 但在这种情况下,你就失去了由继承机制、类型扩展、重载等提供的便利。粗略地说,你可以把一个自制的马达拧到锤子上,让它按你的方式工作,但要做到这一点,你不必了解锤子的机制,你只需要知道它可以用来敲钉子。

所以,相信我,OOP确实让那些编写应用程序的程序员的生活更轻松。另一件事是,MQL5库的能力仍然 非常有限,但这是一个时间问题,库的开发者会照顾到这一点(当然他们可以是--但不需要是--同一个人)。有了完善的类库系统,用户程序员只需写一两行,如 "1.程序,这里是数据""2.程序,计数",几乎不用问它是如何工作的细节。这在面向结构的编程中是无法实现的。

在我看来,你对OOP的偏见是由于你没有遇到足够复杂的任务,或者由于懒惰或其他原因,你根本不想做。我想说的是,没有什么。然而,主人就是主人。

 
Andrei01:

下面是一个专家的问题。有一个类由三个动态数组组成(编译时的大小未知)。

现在请计算并比较访问类内任意静态数组和动态数组的操作数。


你用动态数组或静态数组工作,而且你在哪里使用动态数组 并不重要--在一个类中或只是在一个变量中。

事实上,使用动态数组需要更长的时间是 "显而易见 "的--对数组超限有一个控制,动态内存分配管理器将经常被调用

 

alsu:

1.但在这种情况下,你就剥夺了继承、类型扩展、重载等机制所带来的便利。粗略地说,你可以把一个手工制作的马达栓在锤子上,让它按你的方式工作,但你不必了解锤子的机械原理;你只需要知道你能用它敲打钉子。

2.有了完善的类库系统,用户程序员只需在程序中写上一两行,如 "1.程序,这是数据""2.程序,计数 "就足够了,几乎不用问它的详细工作原理。这在面向结构的编程中是无法实现的。

1.在RPP中,你还必须处理类问题--它们到底是做什么的。就像它是某种功能一样。但是对于类来说,要追踪整个链条就比较困难了,所以一般来说,在相同的功能水平上,要花更多的时间来研究它们的结构。

2.在面向结构的编程中,你也可以毫无问题地组织这样的行动,而不需要去研究之前已经有人研究过的细节。

 
IgorM:


这都是关于动态或静态数组的工作,而且你在哪里使用动态数组并不重要--在一个类中或只是在一个变量中。

好吧,我问一个更简单的问题。比较访问一维数组和二维数组的变量时的操作数量。

而现在你要争论的是,几乎没有区别?

 
Andrei01:

好吧,那我就问一个更简单的问题。比较访问一维数组和二维数组中的变量时的操作数量。

你要声称几乎没有区别吗?


这也是一个OOP问题吗?

如果不是,那么:如果数组是静态的--那么当你寻址一个一维数组以及一个二维数组时,在性能上不会有任何区别,因为多维数组 数据是按字符串存储在内存中的,比如你有数组x[20]和数组y[2][10],那么y数据将被记录在内存中:首先是y[0],然后是y[1],其物理位置与x[20]相似。

如果有一些性能延迟,那也是微不足道的,只是因为阵列超限控制而发生的。

如果数组是动态的,这取决于具体的编译器制造商--有多少内存管理器代码被优化了(在Delphi中,大部分系统模块是用ASM编写的),因为多维动态数组的内存分配要复杂一些,但这样的话,问题通常不在动态数组,而在程序员--他为动态数组调用内存分配的理由和频率如何

SZS: 谢谢你的聊天 - 但我不能为你缺乏对基本事物的理解而花费这么多时间 - 自己开始阅读吧

 
IgorM:


这也是一个OOP问题吗?

如果不是,那么:如果数组是静态的--那么在访问一维和二维数组时,性能不会有差别,因为多维数组数据是以字符串的形式存储在内存中的,比如你有数组x[20]和数组y[2][10],那么y数据将被记录在内存中:首先是y[0],然后是y[1],其物理位置与x[20]一样

你错了,因为你不知道最简单的事情。

任何数组的数据都是线性地存储在内存中。从第一个到最后一个,要访问一个元素x[15],你需要计算数组开始的地址加上偏移量15,这将是计算这个变量的地址。如果我们有一个二维数组,例如x[2][5],我们首先计算第二行的偏移量,然后再加上第5个元素的偏移量,也就是两倍的操作。