Скачать MetaTrader 5

Используете ли вы ООП в программировании на MQL4 и MQL5?

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Alexey Volchanskiy
17135
Alexey Volchanskiy 2016.06.05 04:00 
  • 18%
    (27)
  • 12%
    (18)
  • 12%
    (19)
  • 5%
    (7)
  • 3%
    (4)
  • 11%
    (17)
  • 4%
    (6)
  • 7%
    (11)
  • 14%
    (21)
  • 15%
    (23)
Всего проголосовало: 110
Alexey Volchanskiy
17135
Alexey Volchanskiy 2016.06.05 04:00  
Недавно встретился с бывшим коллегой по работе, тоже программист. Разговорились за рюмкой чая, как-то плавно продолжили старый спор об использовании ООП. Он ярый поклонник использования чистого процедурного программирования, пользы ООП не понимает или отказывается понимать.
Сразу скажу, человек не дурак, писал в свое время программы для DSP на ассемблере с распараллеливанием до 6 инструкций за такт на ядро, а ядер было аж четыре с обменом по шине DMA! Я вот так не могу, мой маленький моск не вмещает такого параллелизма, да еще на асме ))
Мне в то время тоже приходилось писать и на ассемблере, хотя 90% это был чистый Си, несмотря на то, что портированный GCC компилятор был С++.

Почему мы не использовали ООП, спросите вы? Исключитеьно из за слабого в то время (2006 г.) железа, первого телевизионного чипа, включавшего в себя обработку изображения и звука, до этого делали на двух.
Все же ООП дает некоторый оверхед как по памяти, так и по быстродействию в сравнении с чисто процедурным программированием. Даже упаковка данных в структуру прибавляет 1-2 лишних такта. Возможно, в современных процах это все делается без потерь, я не в курсе, но на том чипе это давало некоторое замедление.

Мне также по работе приходилось заниматься и другими вещами, в том числе писать на любимом шарпе всяческие проверочные утилиты, тестовые программы и т.д. А в шарпе, как вы знаете, без ООП программу написать просто невозможно, тут вам не С++. И я тогда создал довольно неплохую библиотеку на C# со всякими проверочными тестами, измерениями и т.д., естественно, все это имело вид дерева наследованных классов, как в стандартной библиотеке MQL4/5.

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

В общем, как и в те далекие времена, мы не пришли к консенсусу, он до сих пор работает в embedded, ну а я тружусь на ниве форекса и вовсю использую ООП возможности MQL4/5. Использую и радуюсь, так как лично мне это сильно облегчает жизнь.
И бог с ним, оверхедом ))

А у вас как, с ООП сложилось? (так обычно про отношения с дамой спрашивают :)
Vladimir Suschenko
3025
Vladimir Suschenko 2016.06.05 04:09  
Сначала подумал, что у меня дежавю, потом нашёл https://www.mql5.com/ru/forum/79322  и успокоился, не дежавю...:))
Alexey Volchanskiy
17135
Alexey Volchanskiy 2016.06.05 05:36  
Vladimir Suschenko:
Сначала подумал, что у меня дежавю, потом нашёл https://www.mql5.com/ru/forum/79322  и успокоился, не дежавю...:))
Как-то я тот опрос и не помню, пропустил видно. История ходит по кругу )) Ярчайший пример - бессмертная тема Грааля, всплывает в той или иной форме постоянно.
Alexandr Saprykin
6865
Alexandr Saprykin 2016.06.05 06:09  
Alexey Volchanskiy:
Как-то я тот опрос и не помню, пропустил видно. История ходит по кругу )) Ярчайший пример - бессмертная тема Грааля, всплывает в той или иной форме постоянно.
и к единственно верному решению на тему грааля никто никогда не придет
Andrey F. Zelinsky
31669
Andrey F. Zelinsky 2016.06.05 06:34  
Alexey Volchanskiy:
... Почему мы не использовали ООП, спросите вы? ...

Неоднократно поднималась тема ООП -- и всё на уровне бла-бла-бла.

Никто ещё (из сторонников ООП) не привёл исчерпывающее пояснение "на пальцах", что ООП для задач под МТ4/5 имеет преимущество перед процедурным.

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

Dmitry Fedoseev
43472
Dmitry Fedoseev 2016.06.05 06:45  
Andrey F. Zelinsky:

Неоднократно поднималась тема ООП -- и всё на уровне бла-бла-бла.

Никто ещё (из сторонников ООП) не привёл исчерпывающее пояснение "на пальцах", что ООП для задач под МТ4/5 имеет преимущество перед процедурным.

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

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

Дело не в том. что знать, почему, даже зная, нужно еще суметь перестроиться.

Объяснения из 2-ух - 3-ех предложений, но оно переворачивает мир. Может ярые адепты ООП полка не хотят переворачивать мир. А может сами не знают в чем действительные преимущества ООП. 

Alexey Volchanskiy
17135
Alexey Volchanskiy 2016.06.05 07:15  
Dmitry Fedoseev:

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

Дело не в том. что знать, почему, даже зная, нужно еще суметь перестроиться.

Объяснения из 2-ух - 3-ех предложений, но оно переворачивает мир. Может ярые адепты ООП полка не хотят переворачивать мир. А может сами не знают в чем действительные преимущества ООП. 

Я ж теперь ночь спать не буду)) Откройте эти заветные слова!
Dmitry Fedoseev
43472
Dmitry Fedoseev 2016.06.05 07:34  
Alexey Volchanskiy:
Я ж теперь ночь спать не буду)) Откройте эти заветные слова!
Дык и я не спал - думал. 
Stanislav Aksenov
13653
Stanislav Aksenov 2016.06.05 07:48  

Нужно смотреть шире чем мт4/мт5.

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

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

Alexey Volchanskiy
17135
Alexey Volchanskiy 2016.06.05 08:31  
Stanislav Aksenov:

Нужно смотреть шире чем мт4/мт5.

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

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

В качестве хорошего примера есть классический пример перерисовки набора фигур с помощью виртуальных функций. Но это не очень относится к программированию на MQL, а  Andrey F. Zelinsky хочет именно это )) На меньшее он не согласен ))
1234567
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий