Самообучение языку MQL5 с полного нуля - страница 17

 
Roman:

Абсолютно противоположного с вами мнения!
Определяющим в программировании, является знание языка, по возможности на низом уровне!
Для новичков пояснение, низкий уровень это синтаксис языка без дополнительных обёрток кода.
То что касается как вы выразились декомпозиции, это есть понимание как составляются блок-схемы.
По этому программист ценится не философскими фантазиями, а практическими знаниями языка.
Как можно фантазировать, без основ языка? Где простая логика?
Равносильно, на языке электронщика, кем является автор топика, сперва подать вольтаж на плату, а потом удивляться, почему сгорела плата ))

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

 
Roman:

... Равносильно, на языке электронщика, кем является автор топика, сперва подать вольтаж на плату, а потом удивляться, почему сгорела плата ))

Здравствуте, Роман! Отличное сравнение. Сейчас в программировании, как раз нахожусь примерно на том же уровне электронщика, когда переходил от знания принципа работы транзисторов к познанию принципа работы цифровых микросхем серии К155.

Хотя многие мои коллеги по работе в 1983 году умудрялись ремонтировть компьютеры серии ЕС ЭВМ, абсолютно не понимая, как работают транзисторы. Им было достаточно того, что они знали алгебру логики. Это маленькое отступление - ностальгия по советским временам!

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

 
Valeriy Yastremskiy:

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

Так а как вы поймёте возможности, если не знаете этих возможностей ))
Постановка задачи, это крайняя стадия освоения основ языка, когда ты уже понимаешь что такое переменная, каких размеров она может быть, области видимости и т.д.
Я так же был на распутии, когда не знал с чего начать, какой язык учить, чтоб всё понять и научиться. Это была просто мука, потому что я перепробовал несколько языков, чтоб найти истину.
Но когда  я окончательно понял, что mql это Си подобный язык, то целенаправленно начал изучать именно Си, с самых основ.
И когда я закончил базовое обучение, я с удивлением для себя обнаружил, что mql я уже практически знаю, и мне всё понятно, только синтаксис и специфику подтянуть по докам, это уже особенность mql.
Поняв процедурный подход программирования, через годик начал вникать в ООП. Долго он мне был не понятен, из за других названий того же самого.
Например, метод и функция, чем отличается )) переменная и член класса )) и т.д. 
Но чтобы к этому прийти, нужно понять саму основу процедурного подхода, а когда начинаешь постепенно понимать ООП терминологию, то понимание открывается мгновенно.
Вот в чем разница, выбора пути начального изучения. Как можно писать на Русском языке, не зная буквы и знаки препинания?
Вспомните с чего вы начинали, с крючков и палочек.

 
Roman:

Абсолютно противоположного с вами мнения!
Определяющим в программировании, является знание языка, по возможности на низом уровне!

И что даст такое знание? Вот знаете Вы язык на сверх-низком уровне. Знаете какими ассемблерными командами заменяется if, как преобразуется в goto цикл for. Знаете ассемблер. А где от этого профит? Посмотрите на программистов Python. Они ничего такого не знают. Зато очень хорошо умеют обращаться с функциями, умеют в Map/Reduce. Умеют их композировать и подавать на вход друг другу. И где сейчас MQL на котором пишут не так и много по сравнению с Python?

Roman:

Как можно фантазировать, без основ языка? Где простая логика?
Равносильно, на языке электронщика, кем является автор топика, сперва подать вольтаж на плату, а потом удивляться, почему сгорела плата ))

В Вашем понимании простая логика, это махровая процедурщина. В моем понимании логики там как в ассемблере: "о чем вижу, о том пою". Нет там логики, это тупое умении набивание команд. С этим машинистка может справится после двухнедельного инструктажа. Это не программирование.

Roman:

То что касается как вы выразились декомпозиции, это есть понимание как составляются блок-схемы.

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

И что даст такое знание? Вот знаете Вы язык на сверх-низком уровне. Знаете какими ассемблерными командами заменяется if, как преобразуется в goto цикл for. Знаете ассемблер. А где от этого профит? Посмотрите на программистов Python. Они ничего такого не знают. Зато очень хорошо умеют обращаться с функциями, умеют в Map/Reduce. Умеют их композировать и подавать на вход друг другу. И где сейчас MQL на котором пишут не так и много по сравнению с Python?

В Вашем понимании простая логика, это махровая процедурщина. В моем понимании логики там как в ассемблере: "о чем вижу, о том пою". Нет там логики, это тупое умении набивание команд. С этим машинистка может справится после двухнедельного инструктажа. Это не программирование.

Блок-схема - это схема для процедурных ЯП. "Вот здесь цикл фор вбиваем, вот здесь if делаем". Сейчас на процедурных языках не пишут. Это нонсенс для пользовательского приложения выбрать например  Си или Паскаль. Для ядра ОС там, или платы какой процедурный ЯП самое оно. Но это исчезающий малый процент задач и он явно не входит в предметную область обсуждаемой здесь задачи.
Василий, ну как ты себе представляешь с ходу обучить ТС программировать в ООП-парадигме, обойдя элементарщину, которой у него еще нет?))) Не, ну может такое и возможно, но не представляю...

Типа обьясняем: "программировать алгоритмы (порядки действий) = неверный подход. Нужно программировать концептуально целостные, иерархически структурированные, шаблонируемые системы, именуемые "обьектами", наследующие свойства и методы друг друга внутри программной среды".???

А он сразу: "Аааа, чего ж раньше не сказали! Все понятно.".)))
 
Vasiliy Sokolov:

И что даст такое знание? Вот знаете Вы язык на сверх-низком уровне. Знаете какими ассемблерными командами заменяется if, как преобразуется в goto цикл for. Знаете ассемблер. А где от этого профит? Посмотрите на программистов Python. Они ничего такого не знают. Зато очень хорошо умеют обращаться с функциями, умеют в Map/Reduce. Умеют их композировать и подавать на вход друг другу. И где сейчас MQL на котором пишут не так и много по сравнению с Python?

В Вашем понимании простая логика, это махровая процедурщина. В моем понимании логики там как в ассемблере: "о чем вижу, о том пою". Нет там логики, это тупое умении набивание команд. С этим машинистка может справится после двухнедельного инструктажа. Это не программирование.

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

Для вашего просвещения, язык Python написан на языке Си.
И Python разрабатывался для упрощения написания кода. Но превратившись в популярный язык из за своей на первый взгляд простоты, знания кодеров остаются на уровне Python.
И только программисты знающие язык Си, пишут к нему библиотеки и дополнительные плюшки. Это и есть программисты а не кодеры.
Вот в том то и дело, что простая машинистка по набиванию кода, уделает своим пониманием предмета теперешних кодеров.  
Вы просто С#-ник, по этому у вас такой взгляд, но даже не задумываетесь на каком языке написан этот ваш C#  ))

 
Roman:

Так а как вы поймёте возможности, если не знаете этих возможностей ))
Постановка задачи, это крайняя стадия освоения основ языка, когда ты уже понимаешь что такое переменная, каких размеров она может быть, области видимости и т.д.
Я так же был на распутии, когда не знал с чего начать, какой язык учить, чтоб всё понять и научиться. Это была просто мука, потому что я перепробовал несколько языков, чтоб найти истину.
Но когда  я окончательно понял, что mql это Си подобный язык, то целенаправленно начал изучать именно Си, с самых основ.
И когда я закончил базовое обучение, я с удивлением для себя обнаружил, что mql я уже практически знаю, и мне всё понятно, только синтаксис и специфику подтянуть по докам, это уже особенность mql.
Поняв процедурный подход программирования, через годик начал вникать в ООП. Долго он мне был не понятен, из за других названий того же самого.
Например, метод и функция, чем отличается )) переменная и член класса )) и т.д. 
Но чтобы к этому прийти, нужно понять саму основу процедурного подхода, а когда начинаешь постепенно понимать ООП терминологию, то понимание открывается мгновенно.
Вот в чем разница, выбора пути начального изучения. Как можно писать на Русском языке, не зная буквы и знаки препинания?
Вспомните с чего вы начинали, с крючков и палочек.

Не знаю что и сказать. У каждого свой видимо путь. Я не настаиваю. Но цели можно решать на разных языках, и при выборе цели можно не знать синтаксиса, а только возможности. Что в питон есть библиотеки для сайтов, и сайт можно сделать на питон, пхп, джумле, тупо на хтмл или каком другом, вопрос цены и наличия готового функционала (скриптов), а это уже постановка задачи и требует более глубокого знания языка. Для работы с рядами мы можем выбрать библы МКЛ, питон, R, матлаб. Для выставления ордеров по МАшкам хватит и родного МКЛ. 

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

К тому же каждому свое, часто хороший кодер не самый хороший алгоритмист и наоборот. Если вместе эти качества хороши, это круто и дорого обычно, но не так часто.))))

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

И что даст такое знание? Вот знаете Вы язык на сверх-низком уровне. Знаете какими ассемблерными командами заменяется if, как преобразуется в goto цикл for. Знаете ассемблер. А где от этого профит? Посмотрите на программистов Python. Они ничего такого не знают. Зато очень хорошо умеют обращаться с функциями, умеют в Map/Reduce. Умеют их композировать и подавать на вход друг другу. И где сейчас MQL на котором пишут не так и много по сравнению с Python?

В Вашем понимании простая логика, это махровая процедурщина. В моем понимании логики там как в ассемблере: "о чем вижу, о том пою". Нет там логики, это тупое умении набивание команд. С этим машинистка может справится после двухнедельного инструктажа. Это не программирование.

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

Многое, правильный выбор путей решения. В идеале заказчик должен быть хорошего уровня кодером))) Сколько бы нервов было сохранено)))

Знание языка на низком уровне не отменяет знание высокоуровневых языков, и дает просто дает более глубокое понимание как работает программа. И если знает как гоуту цикл делает и скока памяти жрет, то сможет оптимизировать если нужно будет. Не более того.

И если честно не понимаю сути спора.

 
Valeriy Yastremskiy:

...

И если честно не понимаю сути спора.

Думаю, Василий хочет попробывать с ходу обучить новичка ООП-мышлению, где все кроме самого ООП вторично. Начать не с переменных, операторов, массивов, а сразу с классов, наследования свойств, построение иерархий обьектов и подключения мощных библиотек. Перевести из "яслей" и сразу в университет.)))
Причина обращения: