Новички, с какими трудностями в программировании на MQL вы сталкиваетесь в 2025 году? - страница 19

 
lynxntech #:
интересует мнение, реально используются все эти системные библиотеки или все забили и берут в свой код только ,то что нужно в данный момент? Без виртуальных функций, без шаблонов, и прочей не "френдли юзер" функционала
Пишу в процедурном стиле. В ООП код разбухает в разы, быстро начинает теряться контекст. К тому же не везде ООП полезно и кроме него есть куча других, все зависит от целей
 
Rorschach #:
Пишу в процедурном стиле. В ООП код разбухает в разы, быстро начинает теряться контекст. К тому же не везде ООП полезно и кроме него есть куча других, все зависит от целей
Значит Вы не научились писать в функциональном стиле. Пропущен важный шаг. Без него обсуждать ООП не имеет смысла. Говорю же, ООП является следствие глубокого понимания принципов композиции, проектирования и разработки с помощью функций. 
 
Vasiliy Sokolov #:
Совершенно верно, указатели на функции не относятся к ООП. Это более фундаментальное понятие. Но не ООП единым. Однако, понятие полиморфизм не монополия ООП. Напротив, полиморфизм в понимании ООП, очень местечковый и ограниченный. Чистую и мощную концепцию полиморфизма представляют из себя именно указатели на функции. Учите их.

Как по мне, вы не можете отрывать полиморфизм от ООП. Либо вообще без ООП, либо полиморфизм важен.

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

[edit] Да, можно в полиморфизм без ООП (хотя я не пробовал; ну шаблонный разве-что😁). Этот случай я отношу к "вообще без ООП".
 
Rorschach #:
Пишу в процедурном стиле
Надо было добавить «и легко могу разобраться в 2-3 тысячах строк кода без проблем.»👀
 
Alexey Viktorov #:

Вот тебе код с закомментированой виртуальной функцией.

Это класс CmyTrade потомок класса CTrade

Если пошагово в отладчике посмотреть, то несмотря на то, что вызывается самописный класс строка

открывается библиотека Trade\Trade.mqh

Но потом раскомментируй строку, получится так

И запустив этот код будет напечатано 

Это виртуальная функция.

То-есть твоя самописная функция. 

Алексей, мне кажется, это неправильный пример для демонстрации понятия виртуальная функции. Так как если вы уберёте только слово "virtual" в этом коде, то по идее получите точно такие же результаты. И тогда не понятно, что привносит указание virtual.
 
Rorschach #:
Пишу в процедурном стиле. В ООП код разбухает в разы, быстро начинает теряться контекст. К тому же не везде ООП полезно и кроме него есть куча других, все зависит от целей
Поправка: у Вас разбухает в разы, у Вас начинает теряться контекст. Почему: ответил в предыдущем посте. Но важное уточнение: это управление сложностью. Сложность постоянно растет и никуда не девается. Вы можете лишь эту сложность равномерно распределять, так что бы в каждой отдельной единицы программы она была не высока, настолько, что бы ее можно было понять достаточно просто. Весь секрет. ООП для этого не нужен. Но дальше, после определенного уровня сложности, композиции по функциям становится уже не достаточно. Но все равно нужно вначале хорошо так упереться на первом уровне, что бы понять следующий.
 

Сначала хэндл, он же дескриптор, потом полиморфизм, сейчас инкапсуляция. Просто пипец!

Ещё нужно объяснять с какими трудностями в программировании на MQL новички сталкиваются в 2025 году? ))))

С уважением, Владимир.

 
Vladislav Boyko #:

Как по мне, вы не можете отрывать полиморфизм от ООП. Либо вообще без ООП, либо полиморфизм важен.

Вот нет. Спросите лучше ChatGPT. Нет противопоставления "или/или". Полиморфизм использовали еще наши деды, как говорится. А потом пришел ООП и сказал, что на самом деле полиморфизм, это когда наследуемый класс переопределяет метод базового. Что?!!
 
MrBrooklin #:

Сначала хэндл, он же дескриптор, потом полиморфизм, сейчас инкапсуляция. Просто пипец!

Ещё нужно объяснять с какими трудностями в программировании на MQL новички сталкиваются в 2025 году? ))))

С уважением, Владимир.

Для этого тема и создавалась:)
 
Yuriy Bykov #:
Алексей, мне кажется, это неправильный пример для демонстрации понятия виртуальная функции. Так как если вы уберёте только слово "virtual" в этом коде, то по идее получите точно такие же результаты. И тогда не понятно, что привносит указание virtual.
Мне кажется вообще не надо это демонстрировать. Вот реально.