Почему в MQL5 нет исключений? - страница 2

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Alexey Volchanskiy
28236
Alexey Volchanskiy  
Andrey Dik:
Если ПО падает - значит это хреново написанное ПО, а не отсутствие исключений.

А Если ексепшинить, то заэксепшенить всю программу надо, чего уж тут, ведь мало ли чего случится то может. Заэксепшенить всю программу, распечатать код на А4 бумаге и положить в ящик стола - так надёжнее, ничего не случится ни с кодом ни с деньгами на счете...

Такого падучего ПО полно в Маркете. Я летом проводил исследования, был удивлен, сколько советников за сотни $ падают в тестере на 2-3-й день прогона.

Теперь про эксепшены. Вы пишете на чем-нибудь, кроме MQL? Вероятно нет, иначе не было бы написанного выше.

Вот живой недавний пример, правда на Матлабе, но не суть.

Надо было считать котировки в формате csv и преобразовать их в числовой формат Матлаб. Парсить надо строку в таком формате

2014.07.02 14:15:43.000,1.36480,1.36481

Время парсится встроенной матлабовской функцией, аналог StringToTime в MQL, числа double аналогом StringToDouble.

И все было бы замечательно, но в файле по неизвестным причинам очень-очень редко встречаются мелкие бяки типа

2014.$%.02 14:15:43.000%1.36480,1.364;1

 По одной бяке на 5000 строк. Если проверять строку на бяки, скорость работы программы падает в 1000 раз. Если не проверять, падает программа на матлабовской функции преобразования. В данном случае выгодно завернуть код в try и в случае исключения просто пропустить строку. Понятен смысл?

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

Хреново, что тут 98% кроме MQL ничего не знают и знать не хотят... 


 



 

Maxim Kuznetsov
15683
Maxim Kuznetsov  
Отсутствие исключение не позволяет на полную использовать ОО и писать более компактный удобный код. К примеру foo().bar().baz() оно и сейчас возможно, но вытащить оттуда ошибку "сущий ад и израИль".


А отсутствуют исключения скорее не от отсутствия потребностей, а из-за сложности их реализации. В тех-же компиляторах C++  exception`ы перестали смертельно тормозить не так давно на моей памяти.
Alexey Volchanskiy
28236
Alexey Volchanskiy  
Maxim Kuznetsov:
Отсутствие исключение не позволяет на полную использовать ОО и писать более компактный удобный код. К примеру foo().bar().baz() оно и сейчас возможно, но вытащить оттуда ошибку "сущий ад и израИль".


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

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

Andrey Dik
12164
Andrey Dik  
Alexey Volchanskiy:

Такого падучего ПО полно в Маркете. Я летом проводил исследования, был удивлен, сколько советников за сотни $ падают в тестере на 2-3-й день прогона.

Теперь про эксепшены. Вы пишете на чем-нибудь, кроме MQL? Вероятно нет, иначе не было бы написанного выше.

Вот живой недавний пример, правда на Матлабе, но не суть.

Надо было считать котировки в формате csv и преобразовать их в числовой формат Матлаб. Парсить надо строку в таком формате

2014.07.02 14:15:43.000,1.36480,1.36481

Время парсится встроенной матлабовской функцией, аналог StringToTime в MQL, числа double аналогом StringToDouble.

И все было бы замечательно, но в файле по неизвестным причинам очень-очень редко встречаются мелкие бяки типа

2014.$%.02 14:15:43.000%1.36480,1.364;1

 По одной бяке на 5000 строк. Если проверять строку на бяки, скорость работы программы падает в 1000 раз. Если не проверять, падает программа на матлабовской функции преобразования. В данном случае выгодно завернуть код в try и в случае исключения просто пропустить строку. Понятен смысл?

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

Хреново, что тут 98% кроме MQL ничего не знают и знать не хотят...

Битые данные использовать не проверяя? И Вы говорите, что разрабатываете софт для рынка? Хе хе....
И не надо думать, что Вы выше 98% здешних в программировании. Так думать и тем более заявлять по меньшей мере нескромно, а по большей - глупо.
Sergey Dzyublik
3971
Sergey Dzyublik  
Andrey Dik:
Битые данные использовать не проверяя? И Вы говорите, что разрабатываете софт для рынка? Хе хе....
Андрей, к сожалению, вы не компетентны в данном вопросе.
Alexey Volchanskiy
28236
Alexey Volchanskiy  
Andrey Dik:
Битые данные использовать не проверяя? И Вы говорите, что разрабатываете софт для рынка? Хе хе....
И не надо думать, что Вы выше 98% здешних в программировании. Так думать и тем более заявлять по меньшей мере нескромно, а по большей - глупо.
С дукаса данные, умненький вы наш. Написал же по русски - если проверять, скорость падает в 1000 раз. 
Andrey Dik
12164
Andrey Dik  
Alexey Volchanskiy:
С дукаса данные, умненький вы наш. Написал же по русски - если проверять, скорость падает в 1000 раз. 
И что, если стоит лейбл дукаса, значит можно данные не проверять? 
Andrey Dik
12164
Andrey Dik  
Sergey Dzyublik:
Андрей, к сожалению, вы не компетентны в данном вопросе.
Ок, Вы компетентны. Объясните мне пожалуйста, как можно использовать данные в программе, оперирующей деньгами, не проверяя их?!

Полагаю, Вашей компетентности вполне хватит, что бы объяснить, как это можно сделать.
Yuriy Asaulenko
7032
Yuriy Asaulenko  
Кошмар какой.
Sergey Dzyublik
3971
Sergey Dzyublik  
Чего-то вспомнилось о эффекте Даннинга — Крюгера))

По моему мнению, тут все верно сказано (конечно битою строку лучше попробовать восстановить - но не суть важно):

Если проверять строку на бяки, скорость работы программы Матлаб падает в 1000 раз.
Если не проверять, падает программа на матлабовской функции преобразования.
В данном случае выгодно завернуть код в try и в случае исключения просто пропустить строку.
Понятен смысл?

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

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий