Чемпионат Automated Trading Championship 2011 стартовал! - страница 5

 
stringo:

Это из области эффективного программирования.

...никакой оптимизатор не может сказать, насколько инвариантым является вызов той или иной функции.

...для упрощения расчётов (если программист - не параноик) необходимо предположить, что она инвариантна и перед первым использованием (которым обязательно должна быть проверка на 0) возвращённое значение необходимо закешировать

Наверное, мы немного о разном. Лично мне работа оператора for(выражение1; выражение2; выражение3) представлялась так: при запуске цикла программа сама запоминает (кэширует) значения выражений 1-3 и далее при каждой новой итерации цикла неявно обращается именно к этим запомненным значениям. Поскольку на примере выражения2 это оказалось не так, и был задан вопрос, касающийся особенностей оператора for(), а не особенностей вызываемых им функций:  "в каких ещё местах цикла for() вызовы  функций подразумеваются инвариантными? В каких ещё операторах имеет место быть инвариантность вызова функций".

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

Документация по MQL5: Основы языка / Операторы / Оператор цикла for
Документация по MQL5: Основы языка / Операторы / Оператор цикла for
  • www.mql5.com
Основы языка / Операторы / Оператор цикла for - Документация по MQL5
 
papaklass:
Вопрос не в подходе, а в снятии конкурентов с пробега:)
Дошло, но не сразу ..:) Снятие с пробега путём дисквалификации за "инвалид_стопы"? А стандартной библиотекой там эксперт случайно не пользуется?
Документация по MQL5: Стандартная библиотека
Документация по MQL5: Стандартная библиотека
  • www.mql5.com
Стандартная библиотека - Документация по MQL5
 
Yedelkin:
Дошло, но не сразу ..:) Снятие с пробега путём дисквалификации за "инвалид_стопы"? А стандартной библиотекой там эксперт случайно не пользуется?
У Матуса Германа, тот который в текущий момент является лидером, в журнале много сообщений [invalid volume]. Тоже надо снять с дистанции.)))) 
 
tol64:
У Матуса Германа, тот который в текущий момент является лидером, в журнале много сообщений [invalid volume]. Тоже надо снять с дистанции.)))) 
До тех пор пока эксперт работает не показательно.
 
Yedelkin:

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

Ну конечно же не запоминают. Иначе про это было бы написано в документации. А там чётко показана структура-эквивалент, из которой всё доходчиво видно.

И в C++ также, и в Pascal'е, Delphi, и в Java'е. Про другие языки не в курсе...

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

 
MaxZ:

Ну конечно же не запоминают. Иначе про это было бы написано в документации. А там чётко показана структура-эквивалент, из которой всё доходчиво видно.

И в C++ также, и в Pascal'е, Delphi, и в Java'е. Про другие языки не в курсе...

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

 

Да, спасибо за показательные примеры! ...А в документации иногда много чего "не написано", поэтому приходится крутиться-спрашивать.
 
tol64:
... в журнале много сообщений [invalid volume]. Тоже надо снять с дистанции.)))) 
Неужели ненормализованные объёмы? Или забыл установить ограничения на 5 литров?
 
Yedelkin:
Неужели ненормализованные объёмы? Или забыл установить ограничения на 5 литров?

Причина непонятна. В журнале значения объёмов по нулям:

 

А куда кстати делся первый лидер? Вроде из Испании. Забыл его ник. Либо слился и уже далеко внизу. Либо дисквалифицирован. Не могу найти его теперь.)))

 

Про дисквалификацию объявляют официально и редко. Чуть ли не раз в месяц.

А по объёмам нулевое значение - это уже зона ответственности программиста. Причём, не обязательно ошибка. Так как используется стандартная библиотека, то на печать отправляется результат выполнения функции OrderCheck(), а само обращение эксперта к серверу с запросом на нулевой объём может и отсутствовать.

 
tol64:

А куда кстати делся первый лидер? Вроде из Испании. Забыл его ник. Либо слился и уже далеко внизу. Либо дисквалифицирован. Не могу найти его теперь.)))

Наберите в фильтре слово "Испания" и всё увидите. Испанцев всего трое на Чемпионате. Наш экс-лидер теперь внизу.


Yedelkin:
Да, спасибо за показательные примеры! ...А в документации иногда много чего "не написано", поэтому приходится крутиться-спрашивать.

Не за что. А иногда Мы не внимательно читаем! :))) Или не пытаемся вникнуть и идём за помощью к "Старшим".