Вопросы по ООП в MQL5

 

Вчера возник вопрос, решил с братьями по разуму посоветоваться)

В субботу 21.05.2016 объяснял человеку основы ООП, на примере стандартной библиотеки. Раньше товарищ программировал на MQL4, потом был перерыв 5 лет, и вот решил вернуться. Я его стал ориентировать на хеджинг МТ5, ибо сам там сейчас все свое переделываю.

Как ни странно, человек (Максим, это я про тебя, если читаешь :)) понял основы ООП и на примере стандартной библиотеки мы даже успели пройтись под отладчиком по наиболее важным частям.

Но!! Я обещал запись, а по тех. причинам все улетело в мяу((

Я пообещал, что сделаю видеошпаргалки именно по ООП, я думаю, минут по 10 каждая

Вопрос:

Подскажите темы по ООП на MQL5 на 10 минут, я выложу на ютуб, то есть для всех будет полезно 

------------------

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

Успехов )) 

 
Alexey Volchanskiy:

Вчера возник вопрос, решил с братьями по разуму посоветоваться)

В субботу 21.05.2016 объяснял человеку основы ООП, на примере стандартной библиотеки. Раньше товарищ программировал на MQL4, потом был перерыв 5 лет, и вот решил вернуться. Я его стал ориентировать на хеджинг МТ5, ибо сам там сейчас все свое переделываю.

Как ни странно, человек (Максим, это я про тебя, если читаешь :)) понял основы ООП и на примере стандартной библиотеки мы даже успели пройтись под отладчиком по наиболее важным частям.

Но!! Я обещал запись, а по тех. причинам все улетело в мяу((

Я пообещал, что сделаю видеошпаргалки именно по ООП, я думаю, минут по 10 каждая

Вопрос:

Подскажите темы по ООП на MQL5 на 10 минут, я выложу на ютуб, то есть для всех будет полезно 

------------------

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

Успехов ))

Алексей, делай примеры по наименее освещенным местам в справке - указатели, указатели на функции, работа с шаблонными классами и т.д. Хотя если честно по моему мнению, то подобного видео по С++ навалом и оно ни как не увеличит знания, для их увеличения нужна литература, вебсеминары и усердие.
 
coderex:
Алексей, делай примеры по наименее освещенным местам в справке - указатели, указатели на функции, работа с шаблонными классами и т.д. Хотя если честно по моему мнению, то подобного видео по С++ навалом и оно ни как не увеличит знания, для их увеличения нужна литература, вебсеминары и усердие.
Нет в MQL указателей, есть дескрипторы)) Указатели (условные) на функции недавно ввели, некоторый костыль под всеобщую концепцию ""все алго-трейдеры самоубийцы, указатели им давать низззззя" 
 
Alexey Volchanskiy:
Нет в MQL указателей, есть дескрипторы)) Указатели (условные) на функции недавно ввели, некоторый костыль под всеобщую концепцию ""все алго-трейдеры самоубийцы, указатели им давать низззззя" 

Алексей, не цепляйся к словам :) Если я написал бы "дескрипторы", то почему то уверен, что ты не сразу меня понял бы. А насчет того, что ввели недавно, а что давно, так сути это не меняет, эти вопросы по справке подвисли в воздухе, о них там ни слова либо чуть-чуть. И эти названия, как бы они там внутри не вели себя по разному применительно к С++ и MQL, в итоге внешне они себя ведут одинаково, по крайней мере разработчики пытаются так сделать. Даже смотрю уже сравнение указателей ввели :) Хотя если честно, то для МТ я не могу представить где это использовать.

Но все равно думаю, что если ты эти вопросы осветишь, то многие начинающие кодеры будут тебе благодарны. Я как то смотрел твое видео, ты умеешь объяснять людям доходчиво :)

 
coderex:

Алексей, не цепляйся к словам :) Если я написал бы "дескрипторы", то почему то уверен, что ты не сразу меня понял бы. А насчет того, что ввели недавно, а что давно, так сути это не меняет, эти вопросы по справке подвисли в воздухе, о них там ни слова либо чуть-чуть. И эти названия, как бы они там внутри не вели себя по разному применительно к С++ и MQL, в итоге внешне они себя ведут одинаково, по крайней мере разработчики пытаются так сделать. Даже смотрю уже сравнение указателей ввели :) Хотя если честно, то для МТ я не могу представить где это использовать.

Но все равно думаю, что если ты эти вопросы осветишь, то многие начинающие кодеры будут тебе благодарны. Я как то смотрел твое видео, ты умеешь объяснять людям доходчиво :)

Имхо, ни в коем случае нельзя делать из обучающего видео расширенную версию справки. Задача обучить, а не освятить недостоющие детали. 
 
Alexey Volchanskiy:

Вопрос:

Подскажите темы по ООП на MQL5 на 10 минут, я выложу на ютуб, то есть для всех будет полезно 

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

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

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

 
Vasiliy Sokolov:
Имхо, ни в коем случае нельзя делать из обучающего видео расширенную версию справки. Задача обучить, а не освятить недостоющие детали. 

Алексей спросил мнение форумчан, я ему написал свое мнение, а что там будет, известно только Алексею :)

И к слову, как можно обучиться, если об этом ни где ни сказано? Я об этом знаю т.к. пишу на С++, а те кто учат только MQL5, не узнают об этих тонкостях, ведь в справке об этом ни слова :)  

 
Хотите грамотно освоить ООП? - учите UML
 

Vasiliy Sokolov:

Затем, когда каша в голове из функций, переменных и if'ов формирует какую-то более менее упорядоченную структуру, ученику говорят: "Смотри: есть такая вещь ООП. Забудь, чему тебя учили до этого, и снова начни мыслить по-человечески". Далее следует разрыв шаблонов, только что полученный с таким трудом "багаж знаний" выбрасывается на помойку и человек попадает куда-то между небом и землей.

Ну, эт вы хватили. Человек уже изначально только ООП и занимается. Хотя-бы просто заваривая чашку кофе. Откуда разрывы каких-то шаблонов? ИМХО, бред неумных учителей, перекладывающих свои проблемы на учащихся.
 

Не надо людей пугать с ООП.

Для создания хороших экспертов или других вещей на MQL5, совсем не обязательно знать ООП. Даже не нужно знать слово class или указатель.

ООП в основном используется для создания больших задач и комплексов, особенно когда идет командная работа.  

А в MQL5 можно обойтись и без ООП.

Добавлю, что более 10 лет занимался тренингом для тех программистов, которые хотели работать в иностранных фирмах, где основное требование знание ООП.

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

 

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

// file_1.mqh
int name1_counter = 0;
int name1_data = 0;
double name1_value = 0;
void name1_action() {name1_counter++; name1_data = ;}
int name1_get() {return }

// file_2.mqh
int name2_counter = 0;
int name2_data = 0;
double name2_value = 0;
void name2_action() {}
int name2_get() {}


Я даже не знал ни о каком ООП, но это уже было почти оно (да, лишь один экземпляр, но скелет уже готов). Я бы провёл обучающихся через эти этапы. Начать с простыни int'ов и if'ов и постепенно структурировать код. В конце человек почти сам выйдет на ООП и главное то, что будет понимать как он до этого докатился.

Вспоминаю как давно читал одну книгу про это "магическое" ООП. Кульминацией книги была демонстраций виртуальных функцией, мол в этом и заключается вся сила ООП. Руки бы отрывать таким авторам. Так ни одной приличной книги и не встретил.

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