Прощаи робот-да здравствует маразм - страница 12

 
simpleton:

Кстати, по поводу опыта руководства. 5 лет назад мы спорили на форуме mql5 по поводу перспектив MT5, я тогда сказал, что время покажет. Прошло 5 лет, и мы видим, что сообщество отвергло MT5.

У вас недостаток информации. Мы никогда не афишируем базу своих клиентов и внедрения.


Я не перевожу, общие принципы, теория, - не для самой теории, а для применения на практике. Вы не найдёте таких серьёзных "огрехов" в тех же компиляторах C/C++.

И находили и даже репортили авторам о них.


Если вы говорите, что в данном случае "статический метод класса не имеет права лазать в содержимое класса", то почему при динамическом создании объекта он это право уже имеет?

Я говорил "перестарались с защитой, исправим". В теории условия звучат просто, а на практике static/dynamic реализации работают по разному, что приводит к расхождениям.


А как быть с тем, что точно так же себя ведёт и нестатический?

То же самое, правило "приватный, значит приватный" пересилило нюанс "для конструктора/деструктора делаем исключение".  Это поправим.


Если же в реализации языка ошибки, - ну, да, ошибки. Вы говорите о тотальном контроле качества, - так избавьтесь на практике от ошибок реализации компилятора MQL4++, чтобы ошибки найти было почти так же сложно, как в компиляторах C++, раз у вас есть такой контроль. Я по-прежнему считаю, что синтаксический анализатор не поможет избавиться от ошибок типа тех, которые я продемонстрировал.

Правильно, это ошибки/недосмотр в компиляторе, который мы сами с нуля написали. Так что это обычный путь собирания граблей.

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



Дело не в нравится или не нравится. Есть инструмент. Почему я должен отказываться пользоваться всеми его возможностями?

В данном случае дело даже не в "мне нравится". Это, если уж на то пошло, Майерсу так нравится. И почему-то никто не пытается его обвинить в том, что он пытается "ставить заведомые подножки" компиляторам C++.

У нас есть хорошее объяснение - "это не С++ язык, а специализированный MQL4/MQL5. Поэтому мы не обязаны поддерживать все". Но в любом случае, поведение будет максимально сводить к привычном C/C++.


Это непростая задача, навскидку не решается. Тут усилия приложить надо и немалые. Пользователи MQL в подавляющем большинстве не являются программистами. И при проектировании языка это в существенной степени должно учитываться. Но задача, уверен, решаемая.

Если уж на то пошло, достаточно было добавить в старый MQL4 структуры, подчистить кое что, вроде приоритета операций, как это было сделано для MQL4++, - это был бы разумный компромисс. Успех MT4 в достаточной степени был обусловлен в том числе и отсутствием "навороченности" языка. Теперь это не так. И ошибок в реализации компилятора стало значительно больше, потому что MQL4++ намного сложнее старого MQL4, а команда разработчиков вряд ли сильно изменилась.

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

Мы 5 раз с нуля переписали 5 торговых платформ за последние 14 лет.

Это лучший способ создать что-то реально крутое, чем нагружать старого ослика падучими кирпичами. Поэтому и выпуск МТ5 и новый MQL5 дали нам огромное будущее еще на 10 лет вперед.

А вот те, кто сидит и пилит старый проект с мыслью "пусть синица в руках, главное что меня не уволят, если я начну новый и провалю его", теряют уважение руководства, их списывают в импотенты и они медленно уходят со сцены.

 
Renat:
У вас недостаток информации. Мы никогда не афишируем базу своих клиентов и внедрения.

Я сужу по открытой информации и по поддержке предыдущей версии, то есть, MT4.

Когда появился MT4, MT3 довольно быстро перестал поддерживаться и предлагаться - все перешли на MT4. Для пары MT4 - MT5 такого не произошло, хотя сроки прошли немалые. И до сих пор наблюдается явный перекос в сторону MT4.

Вы даже обратное портирование наработок из MT5 в MT4 выполнили, включая компилятор. А из MT4 в MT3 разве что-то переносилось, да ещё и по прошествии 4-х лет после релиза?

Renat:
И находили и даже репортили авторам о них.

Но есть разница: найти ошибку в современных компиляторах C/С++, наверное, в сотни, если не в тысячи раз сложнее, чем в MQL4++.

Renat:

Я говорил "перестарались с защитой, исправим". В теории условия звучат просто, а на практике static/dynamic реализации работают по разному, что приводит к расхождениям.

То же самое, правило "приватный, значит приватный" пересилило нюанс "для конструктора/деструктора делаем исключение".  Это поправим.

Правильно, это ошибки/недосмотр в компиляторе, который мы сами с нуля написали. Так что это обычный путь собирания граблей.

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

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

Renat:
Вы же в противоположность заявляете, что вы против принуждения и не хотите жесткого контроля с помощью технических средств.

Это - не в противоположность. По умолчанию можно было бы сделать так, чтобы в компиляторе MQL для программ MQL были включены и предупреждения, и то, что в некоторых компиляторах C++ называется ремарками. Я же "заявляю" только о том, что, по крайней мере, ремарки должны быть отключаемыми. В компиляторе MQL для программ MQL. А сейчас ничего отключить в этом смысле в компиляторе MQL4++ нельзя.

Контроля качества не хватает при реализации, в частности, самого компилятора MQL, раз в нём так легко обнаруживаются ошибки. При чём здесь жёсткий контроль качества программ MQL?

Renat:
У нас есть хорошее объяснение - "это не С++ язык, а специализированный MQL4/MQL5. Поэтому мы не обязаны поддерживать все". Но в любом случае, поведение будет максимально сводить к привычном C/C++.

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

Контроль доступа к членам классов/структур поддерживаете? Поддерживайте безошибочно хотя бы все основные случаи в простейших базовых конструкциях.

Возьмём тот же контроль доступа - в простейших же базовых конструкциях:

/******************************************************************************/
class A {
private:
  class B { };
};

/******************************************************************************/
void OnStart() {
  A a;
  B b;
}

Это компилируется без ошибок:

'3.mq4' 3.mq4   1       1
0 error(s), 0 warning(s)                1       1

Однако, видим, что в C++ данный код не компилируется по двум причинам:

$ clang -c 3.cpp
3.cpp:10:3: error: unknown type name 'B'
  B b;
  ^
1 error generated.

Класс B определён внутри класса A, поэтому на него следует ссылаться в OnStart() как A::B:

class A {
private:
  class B { };
};

/******************************************************************************/
void OnStart() {
  A a;
  A::B b;
}

Но это ещё не всё, модифицированный код все равно не компилируется компилятором C++:

$ clang -c 3.cpp
3.cpp:10:6: error: 'B' is a private member of 'A'
  A::B b;
     ^
3.cpp:4:9: note: declared private here
  class B { };
        ^
1 error generated.

Почему-то контроль доступа в MQL4++, в целом, работает для методов и данных - членов класса, а для типов - нет.

При указании области видимости для класса B как A::B компилятор MQL4++ выдаёт следующие ошибки:

'3.mq4' 3.mq4   1       1
'B' - struct member undefined   3.mq4   12      6
'b' - undeclared identifier     3.mq4   12      8
'b' - some operator expected    3.mq4   12      8
expression has no effect        3.mq4   12      6
3 error(s), 1 warning(s)                4       2

Это ещё почему "struct member undefined"?

И опять, компиляторы C++ как-то не имеют проблем и с типами внутри классов. А компилятор MQL4++ - имеет.

Данные ошибки были найдены случайно при попытке реализовать синглтон Майерса, никто за ошибками в данном случае специально не охотился. Часть ошибок была найдена мной, часть - другими участниками обсуждения. Это показывает, как легко наткнуться на ошибки реализации компилятора при программировании на MQL4++. И, чтобы наткнуться на ошибки, не надо ничего специально искать, достаточно просто пытаться решить задачу.

Подчеркну, что это всё - критичные ошибки для серьёзного использования MQL4++.

Очевидно, что регрессионных тестов упоминаемого выше мной типа хотя бы на простую проверку работоспособности хотя бы контроля доступа для проверки компилятора MQL4++ - нет. Иначе бы это всё было уже выявлено и исправлено.

Renat:
Мы 5 раз с нуля переписали 5 торговых платформ за последние 14 лет.

Это лучший способ создать что-то реально крутое, чем нагружать старого ослика падучими кирпичами. Поэтому и выпуск МТ5 и новый MQL5 дали нам огромное будущее еще на 10 лет вперед.

А вот те, кто сидит и пилит старый проект с мыслью "пусть синица в руках, главное что меня не уволят, если я начну новый и провалю его", теряют уважение руководства, их списывают в импотенты и они медленно уходят со сцены.

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

Одна из таких ложек дёгтя - явно недостаточное качество. Смысл в создании чего-либо на MQL пропадает из-за этого.

 

Я про SSE2, может не в тему, но тоже с удовольствием, чёт послушал.

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

 
МТ5 Супер! На нëм пирамиды волшебно строить.
 

Привет,форумчане!

я перехожу на МТ5 и хотел бы пару вопросов

задать павлику.

Павлик если  увидиш то пошли весточку

r.klassen.ruit@web.de

pansa

 
TimeMaster:
 

Если у Вас имеется большая база индюков, сов и т.д, которые не компилятся в новых билдах, значит имеет смысл присмотреться и "перетряхнуть свой сундук". Оставить полезное, и не пожалеть времени переписать и отладить под новые билды.

В какой-то момент надоело)

TimeMaster:
 

Настоящие матёрые программисты или те кто хочет ими стать, всегда следуют за нововведениями, баги и глюки их хлеб. Именно написание кода без ошибок считается хорошим программированием. Если нет сил, времени, возможности или желания вникать во все нововведения "Метаквотов", пользуйтесь тем языком, коим владеете в совершенстве. DLL не отменили, подключайте свои отлаженные алгоритмы.

А настоящие трейдеры или те кто хочет ими стать за чем следуют? ) Доступный автотрейдинг, основная фишка МТ, - канул в лету и потерялся среди постоянных нововведених бесчисленных билдов...  Вариантов автотрейдинга доступных через более серьезные подход к программированию, скажем так, - "есть".  У самого на МТ остался лишь небольшой фактически забытый счет. Сегодня потратил 2 часа на реабилитации МТшных инструментов, судя по всему надо раз 10 больше. Не уверен, что оно  мне надо, может еще поковыряюсь чуток, но скорее так  "по старой памяти". В принципе, для себя я все решил.

 
Figar0:

Доступный автотрейдинг, основная фишка МТ, - канул в лету и потерялся среди постоянных нововведених бесчисленных билдов...  Вариантов автотрейдинга доступных через более серьезные подход к программированию, скажем так, - "есть".  У самого на МТ остался лишь небольшой фактически забытый счет. Сегодня потратил 2 часа на реабилитации МТшных инструментов, судя по всему надо раз 10 больше. Не уверен, что оно  мне надо, может еще поковыряюсь чуток, но скорее так  "по старой памяти". В принципе, для себя я все решил.

Вообще-то и сейчас все работает если использовать только прежние возможности. Некоторые вещи можно сделать гораздо проще и надежнее, например, учет разрывов в истории: у меня до этого (мкл++) возможность расчета по истории с разрывами вызывала некоторую "головную боль" (следствие того, что сначала подгружается "хвост"истории, потом внутрь вписываются пропущенные бары) приходилось пользоваться "костылями". Сейчас все намного проще. Доп.возможности можно не использовать и  пользоваться, как и раньше, МКЛ в его прежней/упрощенной форме. Исключение составляют программы в которых был выход за пределы массивов (неверно рассчитан индекс или не выделена память) - так те и раньше работали негарантированно и, скорее всего, неверно.
 
Figar0:

В какой-то момент надоело)

А кто-же виноват в том, что кто-то наплодил говнокода???

Figar0:

В принципе, для себя я все решил.

Разве кто-то пытается удержать? Лассо накинули и держат???

 
AlexeyVik:

А кто-же виноват в том, что кто-то наплодил говнокода???

При чем здесь говнокод? Поменялись некоторые фундаментальные вещи
 
TheXpert:
При чем здесь говнокод? Поменялись некоторые фундаментальные вещи
Просто интересно (я старым кодом пользуюсь, он работает): какие фундаментальные вещи?