Респект и уважуха создателям языка, Но...

 

Добавление ООП потребовало от создателей языка изменения синтаксиса, для введения классов и структур и много-го чего. И моё мнение они выбрали неверный путь. А именно пошли по пути создания C++ подобного языка, с концепцией указателей (которые и указателями не являются), глобальных констант (в которых чёрт ногу сломает) , кучей include и т.д.

Помимо того что C++ сложен для понимания новичкам, эти * или & для непосвящённого сплошная головная боль. Зачем их было вводить если и так указатель это дескриптор объёкта, а наличие символа & для массивов и структур при передаче в качестве параметра функции является обязательным при описании функции?

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

Я уверен, что многие меня не поймут, будут обзывать плохими словами и что я тупой. Потому что в спорах типа что лучше Pascal или C++, MSSQL или Oracle никто никогда не выходит победителем.  Я могу одно сказать, что я как программист с 20 летним стажем программировал на несчётном количестве языков и диалектов. И я уверен, что синтаксис С++ для новичка сложен для понимания. Почему нельзя было использовать в качестве языка на пример C#, которые даже стандартизирован (ECMA-334). Скорее всего потому, что он ближе разработчикам.

Но как говориться дело сделано и поздно что-то менять. Жаль.

 
cpp.forex писал(а)  :

Добавление ООП потребовало от создателей языка изменения синтаксиса, для введения классов и структур и много-го чего. И моё мнение они выбрали неверный путь. А именно пошли по пути создания C++ подобного языка, с концепцией указателей (которые и указателями не являются), глобальных констант (в которых чёрт ногу сломает) , кучей include и т.д.

Помимо того что C++ сложен для понимания новичкам, эти * или & для непосвящённого сплошная головная боль. Зачем их было вводить если и так указатель это дескриптор объёкта, а наличие символа & для массивов и структур при передаче в качестве параметра функции является обязательным при описании функции?

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

Я уверен, что многие меня не поймут, будут обзывать плохими словами и что я тупой. Потому что в спорах типа что лучше Pascal или C++, MSSQL или Oracle никто никогда не выходит победителем.  Я могу одно сказать, что я как программист с 20 летним стажем программировал на несчётном количестве языков и диалектов. И я уверен, что синтаксис С++ для новичка сложен для понимания. Почему нельзя было использовать в качестве языка на пример C#, которые даже стандартизирован (ECMA-334). Скорее всего потому, что он ближе разработчикам.

Но как говориться дело сделано и поздно что-то менять. Жаль.

согласен.

ваше по идее любой язык сложен для меня вот французкий аше пипец

но для другова это не так уж и трудно


 

 

 

cpp.forex писал(а)  :

... И я уверен, что синтаксис С++ для новичка сложен для понимания.

Но как говориться дело сделано и поздно что-то менять. Жаль.

 

Поверьте на слово. Последний раз программировал 17 лет назад. Язык Паскаль. И впридачу Latex при оформлении дипломных работ. Далее была деятельность, с програмированием не связанная ни разу.

Теперь познакомился с MQL5. Язык понравился сразу. Сложностей для понимания синтаксиса MQL5 не замечал.

Было бы желание и подробный справочник, а остальное - дело времени.

P.S. Учебник - вообще предел мечтаний :)

 
cpp.forex писал(а)  :

Помимо того что C++ сложен для понимания новичкам, эти * или & для непосвящённого сплошная головная боль. Зачем их было вводить если и так указатель это дескриптор объёкта, а наличие символа & для массивов и структур при передаче в качестве параметра функции является обязательным при описании функции?

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

MQL5 по сути является аналогом .NET языков, компилируется в байт код, а потом во время исполнения докомпилируется в нативный x86 или x64 код(скоро выйдет 64 битный MetaTrader 5 - он уже в тестировании). Это позволяет нам проводить очень ресурсоемкие вычисления в разумное время.

Второй момент - защита среды исполнения. Мало кто согласится запустить у себя код, созданный на паскале или .NET, а MQL5 при отключенной поддержке DLL гарантирует безопасность исполнения (никто не вылезет за пределы жесткой песочницы и не украдет чужие данные).

 
Renat:

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

MQL5 по сути является аналогом .NET языков, компилируется в байт код, а потом во время исполнения докомпилируется в нативный x86 или x64 код(скоро выйдет 64 битный MetaTrader 5 - он уже в тестировании). Это позволяет нам проводить очень ресурсоемкие вычисления в разумное время.

Второй момент - защита среды исполнения. Мало кто согласится запустить у себя код, созданный на паскале или .NET, а MQL5 при отключенной поддержке DLL гарантирует безопасность исполнения (никто не вылезет за пределы жесткой песочницы и не украдет чужие данные).

Я не до конца понял суть вашего ответа в свете поднятой темы. Может я не до конца толково донёс суть, сорри. Я говорю о необходимости использования более простых и понятных языковых конструкций, которым C++ не является. C# намного проще в понимании, там нет понятия указателя, и это не мешает быть ему быть очень мощным языком во всех смыслах.

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

Я это всё к тому, что в новом продукте я ожидал увидеть простой для понимания язык, с хорошей библиотекой, с которыми легко программировать. В MQL5 я этого не увидел. Жалко. 

Например, (может я конечно не до конца разобрался), но мне необходимо написать функцию, у которой на входе массив, а результат массив тоже. Массив не может быть результатом функции поэтому приходится писать метод

void NeuronNetwork::NetworkCompute(const float &inputs[], float &outputs) {

Что является результатом работы этого метода? Видимо параметр outputs, поскольку у него нет модификатора const. На мой взгляд не очень интуитивно понятно. Было-бы намного понятнее если это была бы функция, которая возвращала массив.

Я вот думаю многие непрофессиональные программисты поймут необходимость освобождать память? Зачем этим нагружать программиста?

Я уже высказал разработчикам большое спасибо за работу - она огромна. Но ожидал что-то попроще и современнее увидеть - жить было-бы проще.

PS. У меня почему MQL5 + Metatrader5 вызвал ассоциации c Delphi1 - революционный продукт, но недоделанный.

 

Лично мой многолетний опыт MQL/MQL2/MQL4 показывает, что ориентация не "непрофессиональных" программистов провальна.

В долгосрочной перспективе с точки зрения развития платформы имеет смысл ориентироваться на разработчиков, которые имеют опыт написания программ. Ибо только они в состоянии создавать работающие и полезные другим решения. Это я повторяю много лет.


Язык MQL5, будучи уже четвертой версией нашего языка программирования торговых стратегий, является хорошо продуманным решением, рожденным многолетней практикой. Это специализированный прикладной язык, а не язык общего назначения.

MQL5 очень простой, производительный и мощный. Странно вообще говорить о его сложности, когда MQL5 по сути является "Managed C with Classes". Это не С++. В языке нет никаких сложных конструкций: ни эксепшенов, ни шаблонов, ни перегрузки операторов, ни прямых ссылок. Чтобы писать на MQL5, достаточно иметь базовые знания о синтаксисе языков программирования.

Задача языка - эффективно решать расчетные и аналитические задачи, а не быть языком для начинающих.

 
cpp.forex писал(а)  :

Почему нельзя было использовать в качестве языка на пример C#, которые даже стандартизирован (ECMA-334). Скорее всего потому, ...

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

В качестве аргумента: вы знаете что такое язык программирования 1С версии 7.0? С точки зрения "честных программистов" - это настоящая жуть. Но это совершенно не помешало 1С стать стандартом де-факто для всех бизнеприложений всего бывшего СССР! ;) Вот они недавно (хотя - точнее уже давно) сделали версию 8. Там тоже сделали ООП... но те базовые объекты которые есть в платформе 1С и методы работы с ними и не снились вашему академическому С#. А все потому что он написан для специальной предметной области - бух и фин учета. И равных ему там сегодня нет.

у MQL5 таже ситуация. он написан для достаточно узкой предметной области - торговли на финрынках. отсюда - и "особенности реализации". Так что если вам торговать надо - то учите MQL5 "в подлиннике", а если вы "программировать" хотите - то забудьте про MQL и работайте в С# ;)

 
Renat:

MQL5 по сути является "Managed C with Classes". Это не С++. В языке нет никаких сложных конструкций: ни эксепшенов, ни шаблонов, ни перегрузки операторов, ни прямых ссылок.

Очень не хватает всего перечисленного. И не вяжется в вашими же словами относительно ориентации на профессиональных программистов.
 
marketeer:
Очень не хватает всего перечисленного. И не вяжется в вашими же словами относительно ориентации на профессиональных программистов.

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

Ну а прямые ссылки никто не даст - прикладной и распространяемый (EX5) язык должен быть максимально безопасным, иначе на нем сразу надо ставить крест.

 
Renat писал(а)  :

Лично мой многолетний опыт MQL/MQL2/MQL4 показывает, что ориентация не "непрофессиональных" программистов провальна.

В долгосрочной перспективе с точки зрения развития платформы имеет смысл ориентироваться на разработчиков, которые имеют опыт написания программ. Ибо только они в состоянии создавать работающие и полезные другим решения. Это я повторяю много лет.


Язык MQL5, будучи уже четвертой версией нашего языка программирования торговых стратегий, является хорошо продуманным решением, рожденным многолетней практикой. Это специализированный прикладной язык, а не язык общего назначения.

MQL5 очень простой, производительный и мощный. Странно вообще говорить о его сложности, когда MQL5 по сути является "Managed C with Classes". Это не С++. В языке нет никаких сложных конструкций: ни эксепшенов, ни шаблонов, ни перегрузки операторов, ни прямых ссылок. Чтобы писать на MQL5, достаточно иметь базовые знания о синтаксисе языков программирования.

Задача языка - эффективно решать расчетные и аналитические задачи, а не быть языком для начинающих.

Извините, но не могу пройти мимо таких сообщений… 

Задача языка - эффективно решать расчетные и аналитические задачи, а не быть языком для начинающих. 

Про какие расчетные и аналитические задачи вы говорите ? Бедность языка просто поражает. Sin и Cos + пара простейших  и все (((  

где матричные  операции ?

где статистические ?

где операции с комплексными числами ?

где ЦОС (цифровая обработка сигналов) ?

так на всякий случай хотя бы откройте Excel и посмотрите, сколько там прежде чем такое утверждать. 

Эффективно проводить анализ. Единственный показатель эффективности это время затраченное для получение результата. На MQL5  один день пишешь функцию. 2 дня её отлаживаешь. И потом в течении 5 минут получаешь результат.

Эффективнее 1 час пишешь код. 2 часа тестируешь. Расчеты занимают пусть 20 мин. Сложите затраты и посчитайте во сколько раз второй способ эффективнее.

 

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

 

Отлично. Давайте протестируем. Я на Матлабе лет 10 не программировал. Но уверен, что быстрее там решу систему уравнений порядка 30*30 чем Вы с прекрасным знанием MQL. (кстати, не думаю что написанная процедура обращения матриц на MQL для этой задачи будет быстрее встроенной в Матлаб).

Или вот еще, какая торговая система лучше. Построенная на машках или фильтрах Батерворта 5-го порядка, можно фильтр Чебышева (http://ru.wikipedia.org/wiki/Фильтр_Баттерворта) ?

 

То что язык не для начинающих, это да согласен. Особенно MQL5.

95% труда при создании АТС это отработка различных ошибок и реакций на сообщения сервера котировок – это по опыту (MQL4). Сейчас их стало больше. Значит и труда больше.

Вы что думаете мне Трейдеру это нужно ? Ковыряться во всех этих ошибках ?

В первую очередь нужно быстро создать и проверить торговую идею. А не лезть в  дебри ООП. Вы бы еще ассемблер предложили. Там еще быстрее программы выполняються…

 

З.Ы. Успех Матлаба предрекла политика создателей «…полная открытость Matlab, его неприхотливость и простота программирования…» http://www.emanual.ru/download/www.eManual.ru_4579.html

 

А вот еще пример В чём же причина их феноменального успеха? Если бы IBM PC был сделан так же, как другие…. http://ru.wikipedia.org/wiki/История_персональных_компьютеров.

 

З.З.Ы. Я понимаю что это обидно когда ругают твоё детище. Но я из лучших побуждений. Мне очень хочется, что бы MQL стал таким же стандартом в биржевой торговле как и матлаб в инженерной области. Слишком много времени потрачено на него… 

Я искренне надеюсь, что Вы создаете терминал и язык программирования все таки для Трейдеров, а не программистов.

 

 

 

 

 

 

 


 

Сравнивать Матлаб и MQL5 нельзя, так как это сильно разные системы.

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

MQL5 дает отличную возможность писать свои библиотеки, с помощью которых можно решать любые задачи. В июне выйдут новые сервисы MQL5.community и серьезно ускорят развитие всей экосистемы MQL5 и МетаТрейдер 5.


По поводу обработки ошибок Вы неправы.

Когда Вы пишите задачу, которая не взаимодействует ни с кем, то можно не обращать внимания на ошибки. Но если работаете с кем-то очень далеким, запрашиваете огромные массивы данных, торгуете, а ситуация меняется ежесекундно, то половина кода неминуемо будет обработкой ошибок.

Желание "не хочу обрабатывать ошибки" понятно, но оно неосуществимо. Но все равно, мы раз за разом уменьшаем объем необходимой реакции трейдеров на изменение рыночного окружения, переделывая поведение системы в автоматический вид.

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