Feedback on MQL5

 

I've been using MQL4 for a long time and was very happy to hear that MQL5 will finally introduce OOP, because I will be able to write more flexible automated analysis systems faster. But I just can't find words for how much I was disappointed. I was horrified that I couldn't fully operate with pointers and work with objects easily and quickly, which is especially true for development of systems, which are useless 95% of the time. We all write programs in MQL in order to test some theory, perform some automatic data analysis in order to verify an idea later and optimize it, and it must be done very quickly, because the idea has to be optimized very many times. Even if you abstract away from the language, the development of trading systems or analysis systems in this context is a thankless job, because you start to work, knowing that most likely it will be sub-optimal or even useless. What can we say, if the developers of MQL5 have given us, in their words, a super safe tool, in which it is impossible to shoot yourself, but over the implementation of a simple idea or in other words of an elementary algorithm, you need to work for tens of hours.

Well, MQL5 developers, I've read an interesting paragraph in Straustrup's book, and instantly remembered your "product" in MQL5:

"The relationship between the language in which we think (write programs) and the tasks (solutions) we can imagine is very close. For this reason, restricting language capabilities to prevent programming errors is dangerous at best. Just as in the case of natural languages, it is of great benefit to know at least two languages. A language provides the programmer with a set of conceptual tools. If these tools are inadequate to the task at hand, they are simply ignored. Quality design and error-free design cannot be guaranteed simply by the presence or absence of specific features in a language."

So, based on my feedback above, what you have programmed for the sake of programming is completely unsuitable for the purposes that MQL is intended to serve. Thank you for forcing me to simply ignore such a tool as OOP in MQL5.

 

You should at least give some examples.

What do you mean you can't fully operate with pointers and work with objects quickly and easily? I've never had any problems with this at all when developing large-scale schemes.

 

Few modern, manageable and safe languages allow you to operate with pointers "fully" (i.e. dangerously). Especially in MQL4/MQL5, where safety and controllability must be paramount.

All the rest is present and available. And safe pointers are available too.

Most likely you just haven't figured it out, but have rolled out your own pile of thoughts. There is no other way to call this unsubstantiated stream.

 
Renat Fatkhullin:

Few modern, manageable and safe languages allow you to operate with pointers "fully" (i.e. dangerously). Especially in MQL4/MQL5, where safety and manageability have to be in first place.

Everything else is present and available. And safe pointers are there too.

Most likely you just haven't figured it out, but have rolled out your own pile of thinking. There is no other way to call this unsubstantiated stream.

Please:

https://www.mql5.com/ru/forum/35326

https://www.mql5.com/ru/forum/1111/

Name one widely used language where I cannot assign a different address to a pointer? Name one commonly used language where I cannot assign a reference of one type to a different object of the same type? Where else would I be forced to describe a constructor or copy function due to these limitations of your language?

And if controllability is paramount to you, why don't other controlled languages impose similar restrictions?

Personally, for me, the most important thing is not safety and controllability, but the speed at which I can implement the idea, this is extremely fair in the context of trading ideas, those who disagree with this, either overestimate the value of their systems, or program for the sake of programming, not a specific result.

 

Renat, you yourself acknowledge what I wrote in the first post and veil the loss of flexibility in security by making it an undeniable advantage, although it's not true at all.

Битый указатель (именно указатель как сущность и рабочая единица языка) контролируется системой и безопасно обрабатывается, выдавая при необходимости рантайм ошибку, указывая на ошибку автора. А вот "физическая" ссылка не может быть проконтролирована, да ее и нет в языке (не путайте с передачей параметра по ссылке, где это лишь контролируемый системой метод связи).

Removing dangerous links is the first step towards creating a safe language from the monster that is C++ today. We purposely and deliberately removed references, deliberatelylosing flexibility by getting rid of self-shooting.

Give me the ability to shoot myself in the foot, as without this ability I am forced to control the programming, and I want to control the idea I want to implement.
 
urusov:

Please:

https://www.mql5.com/ru/forum/35326

https://www.mql5.com/ru/forum/1111/

Name one commonly used language where I can't assign a different address to a pointer? Name one other widely used language where I can't assign a reference of the same type to a different object? Where else would I be forced to describe a constructor or copy function due to these limitations of your language?

And if controllability is paramount to you, why don't other controlled languages impose similar restrictions?

Personally, for me, the most important thing is not security and controllability, but the speed at which I can implement the idea, it is extremely fair in the context of trading ideas, those who disagree with this, either overestimate the value of their systems, or program for the sake of programming, rather than a specific result.

Comrade! Do not shift your ignorance of the language into the developers' area of responsibility. In MQL5 you can freely assign various objects to pointers and pass these objects as pointers. Like in any other modern languages, like C# and Java, MQL5 has an explicit type checking, and their conversion can only be carried out within the same class hierarchy (inheritance). Again, exactly the same behaviour is implemented in other widely used languages like C# and Java.

 
urusov:

Renate, you yourself acknowledge all that I wrote in the first post and veil the loss of flexibility in security by making it an undeniable advantage, when that is not the case at all.

Give me the ability to shoot myself in the foot, as without this ability I am forced to control the programming, and I want to control the idea I want to implement.
Judging by your previous posts, you've learned to shoot yourself in the foot masterfully. Now all that remains is to learn how to program.
 
I like the 5-Rka. Most likely the starter didn't have enough time to understand it and jumped to a conclusion. It's a bit tricky at first, of course, but it's worth it.
 
urusov:

Renate, you yourself acknowledge all that I wrote in the first post and veil the loss of flexibility in security by making it an undeniable advantage, when it is not at all the case.

Give me the opportunity to shoot myself in the foot, because without this opportunity I have to control programming, and I want to control the idea I want to implement.

You should educate yourself and think more about safety.

I'm not admitting anything, but I justified in the above links (which are thrown even without a clear reference to a specific place), what, how and why was done in MQL4/MQL5. Practical experience since 2001 (when MQL came out) in developing application languages for trading platforms allows us to clearly understand what is needed to achieve a global result.


Do you want unbridled speed? Write in C++ and include DLL. But even in MQL5 we have caught up with native C++ compilers: Testing of the new MQL5 compiler for x64 platforms - speedup from 2 to 10 times!

 
urusov:

Name one widely used language where I can't assign a different address to a pointer? Name one other widely used language where I can't assign a reference of the same type to another object? Where else would I be forced to describe a constructor or copy function due to these limitations of your language?

Well, at least look into the standard library https://www.mql5.com/ru/docs/standardlibrary and see the code (in MQL5\Include\*) that fully operates with references.

Obviously, you are not aware of the language at all.

Документация по MQL5: Стандартная библиотека
Документация по MQL5: Стандартная библиотека
  • www.mql5.com
Стандартная библиотека - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 

Renat, please check out this thread

https://www.mql5.com/ru/forum/60581/page2

Куда пропала история сигнала?
Куда пропала история сигнала?
  • www.mql5.com
Помогите разобраться, пропала история торговли сигнала (доходность, сделки и прочее). - Страница 2 - Категория: общее обсуждение
Reason: