Отзыв о MQL5

 

Я долгое время использовал MQL4 и был очень рад, услышав, что в MQL5, наконец-то появится ООП, ведь я смогу писать быстрее более гибкие системы автоматического анализа. Но я просто не могу найти слова, насколько сильно я разочарован. Я был в ужасе, что не могу полноценно оперировать указателями, работать с объектами легко и быстро, что особенно актуально для разработки систем, которые в 95% случаев бесполезны. Мы все пишем программы на MQL с целью проверить какую-то теорию, провести автоматический анализ данных, чтобы в последствии убедиться в несостоятельности идеи и оптимизировать ее, и это необходимо делать очень быстро, ведь идею придется оптимизировать очень много раз. Даже если абстрагироваться от языка, разработка торговых систем или систем анализа в этом контексте неблагодарная работа, т.к. вы начинаете работу, зная, что скорей всего она окажется не оптимальной или вовсе бесполезной. Что уж тут говорить, если разработчики MQL5 дали нам, с их слов, супер безопасный инструмент, в котором выстрелить в себя невозможно, но над реализацией простой идеи или другими словами элементарного алгоритма, необходимо работать десятки часов.

 Так вот, разработчики MQL5, читая книгу Страуструпа я прочел один интересный абзац и моментально вспомнил ваш "продукт" MQL5, привожу его целиком: 

"Связь между языком, на котором мы думаем (пишем программы), и задачами (решениями), которые мы можем себе представить, очень тесная. По этой причине ограничение возможностей языка с целью предотвращения программистских ошибок в лучшем случае опасно. Также как и в случае с естественными языками, огромную пользу приносит знание по крайней мере двух языков. Язык предоставляет программисту набор концептуальных средств. Если эти средства неадекватны поставленной задаче, они просто игнорируются. Качественное проектирование и отсутствие ошибок не могут быть гарантированы просто присутствием или отсутствием специфических возможностей в языке."

 Так вот, на основе моего отзыва выше, то, что вы напрограммировали ради программирования, совершенно непригодно для использования в тех целях, которые призван выполнять MQL. Спасибо вам за то, что я вынужден просто игнорировать такое средство, как ООП в MQL5.

 

Примеры бы хоть какие-нибудь привели.

Что значит не можете полноценно оперировать указателями и работать с объектами легко и быстро? Вообще никаких проблем с этим ни разу не возникло при разработке масштабных схем.

 

"Полноценно" (то есть опасно) оперировать указателями уже мало в каком современном, управляемом и безопасном языке можно. Особенно в MQL4/MQL5, где безопасность и контролируемость должны быть на первом месте.

Все остальное присутствует и доступно. И безопасные указатели тоже есть.

Скорее всего, вы просто не разобрались, а выкатили собственное нагромождение мыслей. По другому этот бездоказательный поток назвать нельзя.

 
Renat Fatkhullin:

"Полноценно" (то есть опасно) оперировать указателями уже мало в каком современном, управляемом и безопасном языке можно. Особенно в MQL4/MQL5, где безопасность и контролируемость должны быть на первом месте.

Все остальное присутствует и доступно. И безопасные указатели тоже есть.

Скорее всего, вы просто не разобрались, а выкатили собственное нагромождение мыслей. По другому этот бездоказательный поток назвать нельзя.

Пожалуйста:

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

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

 Назовите хоть один широко используемый язык, где я не смогу назначить указателю другой адрес? Назовите также хоть один управляемый язык, где я не смогу ссылке одного типа присвоить ссылку того же типа на другой объект? Где еще я буду именно вынужден в связи с этими ограничениями вашего языка описывать конструктор или функцию копирования?

И если для вас контролируемость превыше всего, то почему другие контролируемые языки не накладывают подобных ограничений?

 Лично для меня превыше всего не безопасность и контролируемость, а скорость, с которой я смогу воплотить в жизнь идею, это крайне справедливо в контексте торговых идей, кто с этим не согласен, либо переоценивает ценность своих систем, либо программирует ради программирования, а не конкретного результата.

 

 Ренат, вы сами признаете все то, о чем я написал в первом посте и вуалируете потерю гибкости безопасностью, возводя ее в ранг неоспоримого преимущества, хотя это совсем не так.

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

Отключение опасных ссылок - это первый шаг к созданию безопасного языка из того монстра, чем сейчас является C++. Мы специально и осознанно убрали ссылки, осознанно потеряв в гибкости избавившись от самострела.

Дайте мне возможность стрелять себе в ногу, т.к. без этой возможности я вынужден контролировать программирование, а хочу контролировать идею, которую хочу реализовать.
 
urusov:

Пожалуйста:

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

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

 Назовите хоть один широко используемый язык, где я не смогу назначить указателю другой адрес? Назовите также хоть один управляемый язык, где я не смогу ссылке одного типа присвоить ссылку того же типа на другой объект? Где еще я буду именно вынужден в связи с этими ограничениями вашего языка описывать конструктор или функцию копирования?

И если для вас контролируемость превыше всего, то почему другие контролируемые языки не накладывают подобных ограничений?

 Лично для меня превыше всего не безопасность и контролируемость, а скорость, с которой я смогу воплотить в жизнь идею, это крайне справедливо в контексте торговых идей, кто с этим не согласен, либо переоценивает ценность своих систем, либо программирует ради программирования, а не конкретного результата.

Товарисч! Не перекладывай свое не знание языка в сферу ответственности разработчиков. В MQL5 можно свободно присваивать указателям различные объекты и передавать эти объекты в виде указателей. Как и в любых других современных языках, типа C# и Java в MQL5 происходит явный контроль типов и их приведение может осуществляться только в рамках одной иерархии классов (наследование). Повторюсь, точно такое же поведение реализовано и в других широко используемых языках типа C# и Java. 

 
urusov:

Ренат, вы сами признаете все то, о чем я написал в первом посте и вуалируете потерю гибкости безопасностью, возводя ее в ранг неоспоримого преимущества, хотя это совсем не так.

Дайте мне возможность стрелять себе в ногу, т.к. без этой возможности я вынужден контролировать программирование, а хочу контролировать идею, которую хочу реализовать.
Судя по вашим предыдущим постам, стрелять себе в ногу вы научились виртуозно. Теперь осталось научиться программировать.
 
А мне нравится 5-рка. Скорее всего топик стартер не успел разобраться и вывод сделать поторопился. Сложновато конечно по первости, но оно того стоит.
 
urusov:

 Ренат, вы сами признаете все то, о чем я написал в первом посте и вуалируете потерю гибкости безопасностью, возводя ее в ранг неоспоримого преимущества, хотя это совсем не так.

Дайте мне возможность стрелять себе в ногу, т.к. без этой возможности я вынужден контролировать программирование, а хочу контролировать идею, которую хочу реализовать.

Вам бы подучиться следует и больше думать о безопасности.

Я ничего не признаю, но обосновывал в указанных ссылках (которые брошены даже без четкого указания на конкретное место), что, как и почему было сделано в MQL4/MQL5. Практический опыт с 2001 года (когда вышел MQL) в разработке прикладных языков для торговых платформ позволяет нам четко понимать, что нужно для достижения глобального результата.


Хотите безудержной скорости? Пишите на C++ и подключайте DLL.  Но вот даже на MQL5 мы уже догнали нативные компиляторы C++: Тестирование нового компилятора MQL5 для x64 платформ - ускорение расчетов от 2 до 10 раз!

 
urusov:

Назовите хоть один широко используемый язык, где я не смогу назначить указателю другой адрес? Назовите также хоть один управляемый язык, где я не смогу ссылке одного типа присвоить ссылку того же типа на другой объект? Где еще я буду именно вынужден в связи с этими ограничениями вашего языка описывать конструктор или функцию копирования?

Загляните хоть в стандартную библиотеку https://www.mql5.com/ru/docs/standardlibrary и посмотрите на код (в MQL5\Include\* лежит), который вовсю оперирует ссылками.

По всей видимости, вы вообще не в курсе языка.

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

Ренат, Загляните пожалуйста в эту тему

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

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