Неточность в языке. - страница 2

 
переменные имеют осмысленные названия,

Одно только пересечение переменных с одним и тем же именем (да еще вперемешку с глобальными переменными) есть _смертный_ грех программирования. Это в чистом виде "могила для самого себя". И гарантировать результат уже мало кто сможет (достаточно усложнить задачу, выставить "программист в данном куске подразумевал вместо одной переменной другую" и теперь опять виноват компилер).

Тот, кто пишет:
string s="aaaa";
.....
if (i > 5) {int s = i*i;}
Print(" S = ", s);

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

Жизнь сложнее простых формул, и может случиться всякое.
Например часто в качестве переменной цикла используют один и тот же набор переменных (i,j,...)
а в качестве промежуточных результатов другой (R, t, ...).
При модификации программы в один блок могут вставить другой и переменные могут пересечся и т.д.

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

Если же область видимости всегда ограничена блоком, то я смело могу писать
{int i = 0; ... R = Close[i]; ... }

Никаких подобных проблем с переменными у меня возникнуть не может.

Тот, кто пишет .... Точно не понимает ...

Так 99% так и пишут.
Часто не нарочно, просто так у них получается.
Вы что, хотите чтобы на вашей системе работали только сертифицированные программисты высочайшего класса?

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

 
А Я согласен с МАКом такие вещи лучше сразу исправить. Есть еще другой вариант - писать свою спецификацию языка, а не отправлять изучать С, тогда никаких вопросов не будет.

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

Нет, даже в этом случае этот вопрос остается.
Такая "фича" делает любой язык потенциально опасным.

В языке либо должны строго и везде соблюдаться области видимости (наверное все компиляторы), либо областью видимости всегда является вся программа или модуль (некоторые интерпретаторы).

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