Учебник по MQL5 - страница 3

 
Lazar Buga #:
Мы можем для эксперимента, взять простенькое, ближе к среднему, тех. задание какого-нибудь советника, и напишем его, я в процедурном стиле, вы при помощи ООП, и сравним тут быстродействие, компактность, читаемость, структуру. А далее сделаем выводы.
МТ4 или МТ5, или обе версии.

Состязание разных стилей? Я бы на процедурный поставил. 🙂
 
Зачем вам ООП? в Граале всего 4 строки)
 
secret #:
Зачем вам ООП? в Граале всего 4 строки)

Имеете ввиду шапку из комментариев, которую метаедитор создаёт? ;)
 
Lazar Buga #:
Мы можем для эксперимента, взять простенькое, ближе к среднему, тех. задание какого-нибудь советника, и напишем его, я в процедурном стиле, вы при помощи ООП, и сравним тут быстродействие, компактность, читаемость, структуру. А далее сделаем выводы.
МТ4 или МТ5, или обе версии.

Очень хорошее соревнование. А все остальные форумчане — будем делать ставки, кто его выиграет по этим четырём параметрам:  быстродействие, компактность, читаемость и структура. Лично я считаю, что победит процедурное программирование для небольшого советника или индикатора. Другое дело большая программа, связанная с нейронными сетями, распознаванием образов, с нелинейной оптимизацией... Тогда, да, для большой программы подход с использованием ООП будет иметь явное преимущество.

 
Valeriy Yastremskiy #:

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

Так то верно, но это другой уровень подхода, постановки задач и программирования.)))) Здесь далеко не все на этом уровне))))

Обьясните в чем большая сложность ООП? Покажите пример, когда реализация функциональщиной сложнее ООП. ООП не обязывает вас применять все его приемущества там, где они не нужны. Создание класса и инициализация обьекта требуют меньшего понимания, чем создание функций и глобальных переменных, потому что в глобальных переменных в десятки раз проще запутаться чем в классе. Даже там, где требуется всего один обьект класса - вы получаете все те же приемущества в виде хранения всех переменных в одном месте (вместо глобальных переменных) и функций, которые вы можете именовать как угодно не боясь что они войдут в коллизию с такими же функциями в другом файле. Например, в разных классах я могу использовать функцию get_volume(), которая в одном классе вернет объем позиции, в другом вернет дневной объем торгов в секции, а в третьем классе вернет объем собственных торгов за день. В функциональщине же у вас будут get_position_volume(), get_self_trade_volume(), get_market_trade_volume(). А если вы заранее об этом не подумали и сделали просто get_trade_volume(), или вообще в одном месте сделали функцию double get_trade_volume(), забыли об этом и в другом месте сдлали bool get_trade_volume(double& volume) -  то получите вполне себе компилируемый код, в котором функция будет возвращать не то что вы задумали, а абсолютно левые данные.

Похоже, это тот случай, когда программист не понял приемуществ и простоты ООП и вместо того, что бы еще раз перечитать и разобраться - просто откатился на ступень назад. Типа "так работает, пусть криво, за то учить не надо.

 
Sergey Gridnev #:

Пример с получением рыночной информации крейне неудачный. Программируя в процедурном стиле нет никаких проблем с однократным получением некой информации, сохранением её в некой переменной/структуре/массиве и последующем множественным извлечением её оттуда.

Синглтон вообще считается антипатерном в ООП и применяется от безысходности.

Сохранять ее где? В какой структуре? Глобальной или static переменной? Возвращаемся к злу от использования глобальных переменных.

 
Lazar Buga #:
Мы можем для эксперимента, взять простенькое, ближе к среднему, тех. задание какого-нибудь советника, и напишем его, я в процедурном стиле, вы при помощи ООП, и сравним тут быстродействие, компактность, читаемость, структуру. А далее сделаем выводы.
МТ4 или МТ5, или обе версии.

Если хотите - можем попробовать. Но опять же что хотите? Советник на пересечениях EMA в 3 строки или что то посложнее на неделю работы? Тогда простите, но у меня достаточно работы что бы брать еще и бесполезную работу, для доказательства приемуществ людям на форуме, которых я даже не знаю. )

Тогда уж больее интересно спросить мнение другого профессионального программиста скажем, на C++ с опытом работы от 5 лет. Но вообще, такое ощущение, что тут мало кто писал что то, более чем на 1000 срок кода...
 
А еще, похоже, в MetaQuotes работают плохие программисты, которые в простых сгенерированных советниках используют ООП а не функционал. )
 
DrSky #:

Сохранять ее где? В какой структуре? Глобальной или static переменной? Возвращаемся к злу от использования глобальных переменных.


Так, используя синглтон Вы и используете глобальный скоуп.
 
DrSky #:
А еще, похоже, в MetaQuotes работают плохие программисты, которые в простых сгенерированных советниках используют ООП а не функционал. )

Вам челлендж предложили, не соскакивайте с темы.
Причина обращения: