Используете ли Вы ООП по максимому или избегаете его ? - страница 8

 
СанСаныч Фоменко:

Мужики!

Каждому свое.

Я предпочитаю некачественный код без ООП, но который приносит прибыль, "качественному" с ООП коду, который сливает депо вертикально.

Хотите понять? Юзайте R. Сравните... Но без меня. Влез, было свободное время...

Ага. Я такой крутой, бабло прет ко мне рекой... только время свободного нет.

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

 
СанСаныч Фоменко:

...

Чепуха.

Без всякого ООП разрабатывались проекты трудоемкостью несколько сот человеко-лет. Как я понимаю  коллективы программистов численностью несколько сот человек в настоящее время большая редкость.

...

Никто не мешает и с ООП разрабатывать проект 100 лет и при участии 100 человек.
 

Прикольно, что СанСаныч пишет в другой ветке:

С R все до идиотизма просто. Ставим R и начинаем работать. Интерпретатор. Каждая строка чрезвычайно емкая. На первых порах вообще без проблем. А потом, когда определитесь с необходимым, начинаете читать...
 
СанСаныч Фоменко:


 

R декларативный язык программирования, с императивным не сравним и сравнивать как минимум глупо. Классы задач другие.

Действительно, глупо. R специализированный язык для разработки центральной части торговой системы - принятия торговых решений. А МКЛ вообще не имеет для этого средств. 

 Вот поэтому вам и не нужен ООП в MQL, вам от MQL нужен один раздел, торговые функции. Для вас MQL это лопата для выполнения рутинной операции. Могу копать могу не копать. А вот по поводу нужно ли копать, милости просим в R.

Для других же MQL основной язык программирования, и им без ООП никуда. 

 

Без ООП крайне тяжело писать большие проекты, количество ошибок(логических и времени исполнения) будет расти квадратично(знаменитая формула errors = (more code)^2). 

 

Чепуха.

Без всякого ООП разрабатывались проекты трудоемкостью несколько сот человеко-лет. Как я понимаю  коллективы программистов численностью несколько сот человек в настоящее время большая редкость.

Чтоб организовать работу коллектива даже несколько десятков человек необходимо начинать с разработки проектной документации. Уже писал выше об этом. Собственно кодирование - это примерно 10% трудоемкости разработки больших программ. Как ООП упростит этап проектирования программы?

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

 

ПС.

Может мне кто-нибудь объяснит, как ООП связан с качеством программирования?

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

Этого эффекта я добиваюсь:

  • тщательным предварительным, до начала кодирования структурированием будущей программы, описанием входов-выходов
  • документированием структурных частей 
  • комментированием кода 

Где здесь ООП? А вот ГОСТ ЕСПД крайне полезен для получения качественного в моем смысле кода 

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

 
Dmitry Fedoseev:

Ага. Я такой крутой, бабло прет ко мне рекой... только время свободного нет.

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

Конечно можно с ООП, а можно и без ООП...

Для меня это старый разговор на этом сайте.

Еще когда только поднимался вопрос про МКЛ5 я был против и многократно об этом писал.

Суть моей аргументации состояла в следующем.

Если мы кладем на одну чашу весов квик+метасток, а на другую чашу весов МТ4 + МКЛ4, то разница колосальная, вообще невозможно сравнивать.

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

 

Если про вектора.

Вот строка для линейной регрессии:

z = lm(x~y) 

Эта строка относится к трейдингу. z - это класс типа lm,  содержащий кучу сведений о результатах подгонки линейной регрессии с разными там коэффициентами, доверительными интервалами..... графиками и прочая, прочая..

А теперь напишите эту строчку на мкл4/мкл5. Для этого нужен ООП? Можно с ООП, прочитав кучу книг и затратив время на обучение тому, что непосредственно к трейдингу не относится. а можно и без ООП. Примерно тоже самое с точки зрения результата.  Вот об этом речь. Или мы занимаемся делом, или же мы занимаемся бантиками и рюшечками. 

 
СанСаныч Фоменко:

1. Конечно можно с ООП, а можно и без ООП...

Для меня это старый разговор на этом сайте.

Еще когда только поднимался вопрос про МКЛ5 я был против и многократно об этом писал.

Суть моей аргументации состояла в следующем.

Если мы кладем на одну чашу весов квик+метасток, а на другую чашу весов МТ4 + МКЛ4, то разница колосальная, вообще невозможно сравнивать.

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

 

2. Если про вектора.

Вот строка для линейной регрессии:

z = lm(x~y) 

Эта строка относится к трейдингу. z - это класс типа lm,  содержащий кучу сведений о результатах подгонки линейной регрессии с разными там коэффициентами, доверительными интервалами..... графиками и прочая, прочая..

А теперь напишите эту строчку на мкл4/мкл5. Для этого нужен ООП? Можно с ООП, прочитав кучу книг и затратив время на обучение тому, что непосредственно к трейдингу не относится. а можно и без ООП. Примерно тоже самое с точки зрения результата.  Вот об этом речь. Или мы занимаемся делом, или же мы занимаемся бантиками и рюшечками. 

1. Если сравнивать квик+метасток и МТ4 + МКЛ4. Разница действительно большая.

- квик+метасток - быстро программировать, но очень ограниченные возможности.

- возможности ограничены только собственной фантазией. Разумеется над реализацией фантазий надо поработать.

2. ООП позволяет такое же сделать.

СанСаныч, нескромный вопрос, а вы хоть два комплексных числа сможете самостоятельно перемножить? 

 
СанСаныч Фоменко:

А теперь напишите эту строчку на мкл4/мкл5. Для этого нужен ООП? Можно с ООП, прочитав кучу книг и затратив время на обучение тому, что непосредственно к трейдингу не относится. а можно и без ООП. Примерно тоже самое с точки зрения результата.  Вот об этом речь. Или мы занимаемся делом, или же мы занимаемся бантиками и рюшечками. 

ООП и нужен, чтобы не заниматься бантиками и рюшечками. Ваш R - это и есть ООП, а в МТ ООП нет, точнее в эмбриональном состоянии, на уровне конца 80-х. Классы, наследование и прочая лабуда, отнюдь не самоцель, а для того что бы матрицу a*b. И не думать об этом вообще.

Я придерживаюсь мнения, что MQL для сложных проектов в принципе непригоден, и должен служить не более чем интерфейсом между терминалом и внешним ПО. Сейчас из за отсутствия ООП, он таким интерфейсом полноценно служить не может. Отсюда разнообразные MQL библиотеки и кодебейсы, большинство функционала которых можно свободно получить подключив COM (ActiveX) функционал, что без танцев с бубном невозможно. Отсюда и необходимость хоть в каком-то подобии ООП. И мы сидим, и тупо творчески перерабатываем на МКЛ уже сто раз написанные библиотеки.

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

 
Dmitry Fedoseev:


СанСаныч, нескромный вопрос, а вы хоть два комплексных числа сможете самостоятельно перемножить? 

А зачем же так издеваться над собой? Лет тридцать назад или более этого никто не делал, кроме самых одаренных, но их лишали на 100% премии, т.е. на все 10 рублей.
 
Nikolay Demko:

 

 Вот поэтому вам и не нужен ООП в MQL, вам от MQL нужен один раздел, торговые функции. Для вас MQL это лопата для выполнения рутинной операции. Могу копать могу не копать. А вот по поводу нужно ли копать, милости просим в R.

Для других же MQL основной язык программирования, и им без ООП никуда. 

 

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

 

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

Может быть я чего-то не понимаю в современном программировании?...

Описание любой программы - это описание действий над объектами, а не описание объектов. Откройте любой любой советник, индикатор, да откройте документацию на МКЛ: сплошные действия. Машка - это действие, которое порождает кривую по определенному алгоритму. Где Вы видели бы в описание "наследовалось"?  Может поэтому я и не понимаю всех этих ООПов

 

 Вот поэтому больших коллективов больше и нет

 Это от убогости нашего бытия, как писал Абалкин в начале 90-х "примитивизации". В Майкрософт работает 30 000 программистов. А РФ просто не пишут больших программ. Завод, на котором я работал, такую программу заказал за бугром, а не разработал сам как это делали в СССР. Сначала пришла документация: отдел такой-то делает то-то, а такой-то - то-то. А потом пришла программа. Стадийность и порядок разработки  в точном соответствии с нашим ГОСТом ЕСПД. Какой ООП? Все это мелкотравчатые штучки типа запрета goto.

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

А  что есть возможность сравнивать разные реализации? Вам что, делать нечего писать несколько вариантов алгоритмов советников? Вы можете соревноваться с компиляторами оптимизирующего типа? Вы сможете написать на МКЛ перемножение матриц, которое будет быстрее выполняться, чем на R? Вы  считаете, что Ваша программа на МКЛ будет работать быстрее, чем моя на R с учетом того, что всегда могу загрузить все ядра при этом без моих специальных усилий и знаний  использую вычислительноемкие алгоритмы, скорость которых максимальна?

Продолжать?

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

 

Для балансировки информации, так как некоторые совсем уже не следят за корректностью фраз:

  • В MQL5 достаточно навороченный ООП, включая шаблоны. Причем с каждым билдом возможности увеличиваются.

  • Скорость кода MQL5 (особенно x64) потрясающая, не оставляющая шансов конкурентам. Все компилируется в нативный код и вся идеология нацелена на максимальную скорость пережевывания больших объемов.

  • Без ООП практически нельзя браться за написание больших проектов.

    Только теоретики могут рассказывать сказки про "все могу, смотрите на C". К сожалению, большая часть С кода в мире - это жутко воняющая куча, которую предпочитают не трогать. Фактически эти завалы процедурного С абсолютно не поддерживаемы. Только переводом их на ООП/классы ты получаешь хоть минимальную гарантию инкапсуляции/защиты данных этого кода.

  • Как раз для обработки финансовой информации MQL5 подходит лучше всего за счет полной интеграции с торговой платформой.

    У нас нет костылей или промежуточных врапперов, теряющих скорость. Данные предоставляются автоматически, их инициализация и докачка производится асинхронно. Ну и плюс сотни прямых функций...


Квик и Метасток никогда не были быстрыми и уже не будут. Это одни из самых медленных систем с халтурными языками автоматизации. В реальности они давно уже технологические зомби. Tradestation тоже близок к могиле после перепродаж компании - там все очень печально с экономической стороны.

В ближайшие полгода вы увидите массу новых возможностей MetaTrader 5 - у нас высвобождаются ресурсы и мы нацелены на скорую реализацию своих задумок.

Причина обращения: