О MetaEditor-e

 
Одной из основных проблем программирования на MQL4, как мне представляется, является использование циклов begin - end, чаще всего обозначаемых в виде фигурных скобок { }.

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

Чтобы этого не происходило, желательно индексировать эти циклы. Можно это делать вручную через слэш //

Например,

{ // 1
{ // 2
{ // 3
{ // 4
{ // 5

} // 5
} // 4
} // 3
} // 2
} // 1

Так вот, необходимо, чтобы MetaEditor производил индексацию этих циклов в автоматическом режиме.

Не знаю, каким образом, не знаю, как обозначать (конечно, лучше в виде степени числа - небольшие цифирки справа сверху над каждой фигурной скобкой, плюс еще цветовая дифференциация). Но допускаю, что количество ошибок при написании кода снизится и возрастет производительность программирования.
 
Здесь как бы два момента:
1. вид, форма обозначения индекса;
2. алгоритм, логика самой индексации (откуда вести расчет, куда какой цикл вложен).
 
Насколько я помню, это уже предлагали...Хотя бы как в Excel-е сделать - подсветку скобочек....
Разработчики скзали, что если и будут делать, то не скоро
 
Я бы сказал по другому - просто пишите правильно структурируемый и форматированный код. Если ставить скобки где хочешь, то потом конечно же выходят вопросы "может подсветку сделать"? К сожалению, большинство кода представлено в отвратительном форматировании.

ps: мы пишем сотни тысяч строк кода и ничего - никаких подсветок и не надо.
 
Хотя бы как в Excel-е сделать - подсветку скобочек....
Разработчики скзали, что если и будут делать, то не скоро


А может подсветку скобочек сложнее запрограммировать? То есть, Вы хотите, чтобы в реал-тайм при программировании скобки открывались...

Мне пришла в голову более простая идея - подсветка фона или типа Toggle Bookmark, чтобы слева появлялось. Написал немного когда (или много :-)), нажал на кнопочку и на панели слева появились метки, значки, цвет поля изменился? соответственно тому, как расположены циклы. Причем циклы анализируются от вложенного к внешнему. Например так:

http://reniki777.narod.ru/MetaEditor.gif

И необязательно, чтобы это отображалось постоянно во время написания самого кода, а включать по необходимости при проверке ошибок, пусть для этого будет такая специальная фунция Check Cycles (или Show Cycles).

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

Это легко запрограммировать в MetaEditor, а жизнь программеру можно значительно облегчить. А еще я бы добавил затем вообще продвинутую (или двинутую по фазе? :-)) опцию - "скрытие вложенных циклов". Как бы это могло работать? После того, как появились на экране обозначения циклов (указаны на рисунке), то щелкаем по какому-либо обозначению цикла и он оказывается скрыт (код становится прозрачным). Что это дает программисту? Наглядное представление части кода, относящегося к тому или иному конкретному циклу.

http://reniki777.narod.ru/MetaEditor1.gif

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

Также добавил бы следующую опцию: "Отображение/скрытие кода" и "Отображение/скрытие комментариев".
Как бы это работало?

Скрытие комментариев (становится невидимым все, что за двойным слэшем //):

http://reniki777.narod.ru/MetaEditor_noComments.gif

Скрытие кода (становится невидимым код, комментарии остаются видимыми):

http://reniki777.narod.ru/MetaEditor_noCode.gif

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

Что мы получаем в результате? Очень легко становится читать и анализировать код. Ведь язык программирования - это тоже язык. С помощью этого языка мы сообщаем определенную информацию. Чтобы быть понятым и самому хорошо понимать, необходимо уметь различать. Сейчас в MetaEditor-е есть выделение по цвету тех или иных операторов. Но не хватает очень важного - выделения циклов, иначе работает классическая ситуация "Казнить нельзя помиловать" ;-))
 
Я бы сказал по другому - просто пишите правильно структурируемый и форматированный код.

Абсолютно согласен.
Просто соблюдайте формальные правила - сдвигать вложенный блок на величину табуляции.
В случае, если советник получается большим, разбивайте на несколько коротких функций по 50-100 строк.
Используя эти простые правила я написал советник, содержащий ок. 10 тыс. строк на MQL4 без проблем.
 
Я бы сказал по другому - просто пишите правильно структурируемый и форматированный код. Если ставить скобки где хочешь, то потом конечно же выходят вопросы "может подсветку сделать"? К сожалению, большинство кода представлено в отвратительном форматировании.

ps: мы пишем сотни тысяч строк кода и ничего - никаких подсветок и не надо.


Уважаемый Ренат. Есть такое понятие, как Дао :-))

То есть, то самое "большинство" (будь то окружающее нас общество или цена на рынке, против которой не попрешь) и от нас не зависящие явления природы. Мы можем только сами измениться, чтобы лучше соответствовать обстоятельствам. Поэтому, если большинство программистов отвратительно форматируют, то эту ситуацию Вам будет очень сложно изменить - КПД окажется очень низким. В то же самое время можно "приспособиться" к имеющимся обстоятельствам. Конечно, важно различать, где Дао, а где не надо тормозить, иначе успеха в жизни не добьешься. Но вот что касается общей ситуации с большим количеством людей, то там обычно и есть Дао. И если "большинство" фигово программируют, то вот работайте с этим Дао, не стараясь его изменить :-)
 
Вы никогда не ошибётесь, если скобки будете вставлять парами. Причём закрывающая скобка сразу встанет с нужным отступом. А потом уже внутри скобок писать программу дальше. И точно так же вставлять скобки парами.
 
Я бы сказал по другому - просто пишите правильно структурируемый и форматированный код.

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

Абсолютно не согласен! ;-))

МетаТрейдер вообще для кого? Для профессиональных программистов, или же в том числе для трейдеров, которые готовы изучить основы программирования для проверки своих торговых идей? Ведь есть большая разница между машинисткой, печатающей быстро слепым методом и первоклассником, который ищет по несколько минут, где находится буква на клавиатуре, чтобы ее нажать, но в итоге при должном желании добивается своей цели. Так нужно ему в этом помочь! Облегчить задачу...
 
Вы никогда не ошибётесь, если скобки будете вставлять парами. Причём закрывающая скобка сразу встанет с нужным отступом. А потом уже внутри скобок писать программу дальше. И точно так же вставлять скобки парами.


Да ну? НИКОГДА не ошибусь? Спасибо за самый смешной анекдот, который я услышал в этом году! :-)))))
 
Вы никогда не ошибётесь, если скобки будете вставлять парами. Причём закрывающая скобка сразу встанет с нужным отступом. А потом уже внутри скобок писать программу дальше. И точно так же вставлять скобки парами.


Да ну? НИКОГДА не ошибусь? Спасибо за самый смешной анекдот, который я услышал в этом году! :-)))))

Год только начался.
Уточню: "никогда не ошибётесь с парностью скобок".
Лично я уже лет 15 так поступаю.