Что бы я хотел от "терминала" как профессональный программист. Еще одна тема с пожеланиями к MQL5. - страница 6

 
Korey писал (а) >>
примерно четверть численных алгоритмов использует goto, как быть есть алгоритм проврен, утвержден, испытан, но его нельзя
перенести в МТ не имея goto?

Запихнуть функционал в длл или убирать goto.

Мне все еще интересно, про какие алгоритмы Вы говорите.

 

Присоединяюсь к Korey. Никто не видел изящных алгоритмов, реализованных с помощью goto? Вся эта истерия вокруг goto - это просто некая религия, а не актуальная потребность. Грамотный кодер сможет и с goto написать ясный и четкий код, который может оказаться читабельнее эквивалентного кода с условными переходами.

P.S. Кажись, и сам Вирт, критиковавший goto, все равно оставил его в своем детище. Да и в С++, "самом структурном из структурных" языков, goto вроде как не исчез. Возражения по поводу обратной совместимости с С не принимаю.

 
TheXpert писал (а) >>

Вообще-то использование goto это плохой стиль программирования и в 99% случаев код с ним можно заменить на аналогичный с имеющимися условными операторами.

Я не согласен.

Переписать-то можно. Но так же можно сказать, что отсутствие в языке goto - это плохой стиль и 99% кода можно переписать на основе его использования.

Мне, например, оч. не хватало goto для выхода из сложных вложенных структур if-else с циклами. Если где-то глубоко в структуре вычисляется необходимость выхода из анализа, то по всем этим вложениям приходится прописывать дополнительный анализ флагов на выход, что на мой взгляд неудобно. Это загромождает код. Куда проще запомнить состояние флага и - goto за пределы анализа.

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

 

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

 
TheXpert писал (а) >>

Запихнуть функционал в длл или убирать goto.

Мне все еще интересно, про какие алгоритмы Вы говорите.

так это про Fortran как основной источник численных методов.
все что на нем - апробировано и утверждено американской ассоциацией инженеров.
и здесь проблемы как бы нет - работаем с DLL и все)))
и как бы она есть - хочется вставить непосредсвенно в код MQ, но приходится перепахивать алгоритм, что весьма долго.

P.S. и главное - опасно

 
Mathemat писал (а) >>

Присоединяюсь к Korey. Никто не видел изящных алгоритмов, реализованных с помощью goto? Вся эта истерия вокруг goto - это просто некая религия, а не актуальная потребность. Грамотный кодер сможет и с goto написать ясный и четкий код, который может оказаться читабельнее эквивалентного кода с условными переходами.

P.S. Кажись, и сам Вирт, критиковавший goto, все равно оставил его в своем детище. Да и в С++, "самом структурном из структурных" языков, goto вроде как не исчез. Возражения по поводу

обратной совместимости с С не принимаю.

Возражать не собираюсь. Все верно.

SK. писал (а) >>

Я не согласен.

Переписать-то можно. Но так же можно сказать, что отсутствие в языке goto - это плохой стиль и 99% кода можно переписать на основе его использования.

Мне, например, оч. не хватало goto для выхода из сложных вложенных структур if-else с циклами. Если где-то глубоко в структуре вычисляется необходимость выхода из анализа, то по всем этим вложениям приходится прописывать дополнительный анализ флагов на выход, что на мой взгляд неудобно. Это загромождает код. Куда проще запомнить состояние флага и - goto за пределы анализа.

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

Break не подойдет?


В общем и в целом -- у каждого свой стиль и понимание, на этом тему и закроем.

SK. Если у Вас возникнут с этим проблемы, обращайтесь, обязательно Вам помогу, при наличии времени.

 
TheXpert писал (а) >> Break не подойдет?

Это только для циклов или switch (кстати, не очень-то и нужная конструкция, которую можно так же изящно заменить цепочкой if...else). Все относительно.

 
TheXpert писал (а) >>

Break не подойдет?

В общем и в целом -- у каждого свой стиль и понимание, на этом тему и закроем.

SK. Если у Вас возникнут с этим проблемы, обращайтесь, обязательно Вам помогу, при наличии времени.

Break не подойдёт. Его действие ограничено.

А грубить не стоит.

 
SK. писал (а) >>

А грубить не стоит.

И не думал.

 
Korey писал (а) >>

так это про Fortran как основной источник численных методов.
все что на нем - апробировано и утверждено американской ассоциацией инженеров.
и здесь проблемы как бы нет - работаем с DLL и все)))
и как бы она есть - хочется вставить непосредсвенно в код MQ, но приходится перепахивать алгоритм, что весьма долго.

P.S. и главное - опасно

Фортран, там было goto. Но связано это не с эффективностью численных методов. В MatLab реализовано не меньше (даже больше) и никакого goto там нет. Goto своей историей уходит к стилю программирования на ассемблере (переход к метке). Кажущаяся простота этого оператора приводит в заблуждение. Допустим есть пять вложений if else. И сделал goto где тебе нужно и все, но ведь есть локальные и глобальные переменные, стек, указатели, массивы и т.д. С ними как быть? Реализовывать корректный выход из вложений на ассемблере с учетом всех мыслимых ошибок (((. Тут и на языке высокого уровня не сразу сообразишь, как грамотно это сделать, а на ассемблере совсем каюк.

На месте разработчиков я бы постарался в MQL5 сделать возможность прикреплять программы написанные на MathCad (MatLab). Что бы это было просто и легко (а не правой рукой за левое ухо). Это же миллиарды человеко-часов экономятся + гигантский шаг в возможности обработки данных. Дать эту возможность, и основные усилия направить на совершенствование терминала

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