Форум: "Потрепаться";
Текущий архив: 2005.01.16;
Скачать: [xml.tar.bz2];
ВнизЧто такое корректность в построении программы? Найти похожие ветки
← →
Ego (2004-12-24 12:52) [0]Сегодня у меня произошел на работе инцедент из-за "некорректного" использования цикла.Я в теле цикла увеличивал его параметр по условию.И, теперь, меня пытаются убедить в том, что этого делать нельзя( точнее, можно - доказано практикой, но нежелательно ).Я считал, что понятие корректности записи возникло в программировании, только, для удобства чтения чужих программ, а так как основным, все-таки, является результат, то, пусть меня считают некультурным, но писать я буду так, как мне удобней.Но работать и общаться приходиться с разными людьми, поэтому и возник вопрос: а что, вообще, для кого является некорректным?
← →
КаПиБаРа © (2004-12-24 12:58) [1]Ego (24.12.04 12:52)
Я в теле цикла увеличивал его параметр по условию.
А зачем?
← →
PVOzerski © (2004-12-24 13:00) [2]А ты можешь предсказать последствмя программной оптимизации такого кода? Тогда уж лучше его на while или repeat переделать, IMHO. А некорректным я бы считал всё, что использует частные особенности данной версии компилятора или ОС.
← →
Суслик © (2004-12-24 13:00) [3]
> Я в теле цикла увеличивал его параметр по условию
Об этом идет речь?for i := 0 to 100
begin
if ... then i := i + 1;
...
end;
Насколько мне хватает моих знаний. Компилятор волен вообще не ползоваться ячейкой памяти, соответствующей i. Он может для этого использовать регистры. Т.е. вроде так нельзя делать.
← →
DiamondShark © (2004-12-24 13:01) [4]
> Я в теле цикла увеличивал его параметр по условию
Цикла for?
Так это запрещено правилами языка.
В одном случае сработает, а в другом нет.
← →
Ego (2004-12-24 13:11) [5]Да наплевать на for!Я говорю, вообще, об идиотском понятии корректности.Например, многострадальный оператор goto.Я начинал программировать на Бейсике и использовал goto - там без него просто не обойтись.Перешел на Паскаль, и его использование оказалось некорректным.Я знаю, что давно доказано, что можно обойтись без безусловного перехода, я прекрасно понимаю, что такую программу читать легче.Но почему я должен затрачивать свои усилия и свое время на то, что бы переделать программу, и, вообще, "чесать левой ногой правое ухо", оттого, что ее кто-то читать будет, когда можно сделать все гораздо быстрее и проще?!Я программы не для конкурса пишу, где цениться игра ума и изящество, и задачи у меня не академические а, вполне, практические.Таких примеров можно сотни привести, а если не полениться и взять учебник, то там на каждый оператор есть по поправке - как его не надо использовать( но можно! ).
← →
PVOzerski © (2004-12-24 13:15) [6]А если с твоим кодом придется иметь дело еще кому-то?
← →
KSergey © (2004-12-24 13:17) [7]> [5] Ego (24.12.04 13:11)
> Да наплевать на for!
Напрасно. Эо прнципиальный момент для рассматриваемого языка.
Если же вопрос "вообще" - то и ответить на него нечего. Вас обидели, вы поделились - вот и все. Принять или не принять чью-либо сторону без знания деталей - просто невозможно!
А обсуждать религиозные убеждения - и вовсе бесполезно, а возможно - даже глупо, на то они и религиозные, т.е. не подлежащие обсуждению.
← →
TUser © (2004-12-24 13:27) [8]
> Я начинал программировать на Бейсике и использовал goto
> - там без него просто не обойтись.
Смотря на каком. На Q/Quick или на Turbo - вполне нормально можно было без goto писать. Не говоря уже про VB/VBA.
← →
TUser © (2004-12-24 13:29) [9]Кстати, если перфиксовать названия переменных - то даже в GWBASIC"е goto совершенно не нужен.
← →
Anatoly Podgoretsky © (2004-12-24 13:29) [10]Сейчас наплевать на for, потом наплюют на тебя как программиста.
И будешь улицы подметать.
← →
Ego (2004-12-24 13:29) [11]Прошу прощения - это был всплеск эмоций.Но все-таки, возвращаясь к тому с чего начал:почему такая конструкция как в посте [3] не может использоваться?Она же работает!У меня правда не совсем так - я организовал таким образом экстренный выход из тела цикла: параметру сразу присваивалось максимальное значение.
И, тогда, сразу возник вопрос: при использовании компилятором регистров, что произойдет с программой - цикл до конца выполниться?
← →
TUser © (2004-12-24 13:30) [12]
> Сейчас наплевать на for, потом наплюют на тебя как программиста.
Может он на асме ...
← →
TUser © (2004-12-24 13:31) [13]
> Она же работает
Кто тебе сказал?
Если надо менять счетчик цикла - пиши while/repeat
← →
KSergey © (2004-12-24 13:34) [14]> [11] Ego (24.12.04 13:29)
> почему такая конструкция как в посте
> [3] не может использоваться?
Так в документации сказано. Какая разница почему работает или не работает? Так сказано в доке. Нельзя.
> я организовал таким образом экстренный выход
> из тела цикла: параметру сразу присваивалось максимальное
> значение.
Ужас... А break - для чего, по-вашему??
← →
Sandman25 © (2004-12-24 13:37) [15][11] Ego (24.12.04 13:29)
меня правда не совсем так - я организовал таким образом экстренный выход из тела цикла: параметру сразу присваивалось максимальное значение.
break + F1
← →
TUser © (2004-12-24 13:37) [16]Да не будет оно работать - в 7й версии, по крайней мере. Проверял когда-то.
← →
boriskb © (2004-12-24 13:40) [17]Ego (24.12.04 12:52)
но писать я буду так, как мне удобней.
Да ради бога!!
Только если ты присвоил себе право коверкать и стандарты языка и неписанные правила, то уж не отказывай другим в праве не соглашаться с тобой?
Разве не справедливо?
А так... пиши как хочешь, морду пару раз разобъешь - научишься..
← →
Ego (2004-12-24 13:42) [18]Я не буду вдаваться в подробности самой программы( тем более, я её, разумеется, давно "перелопатил" ).Но вопрос остался, хотя, похоже, стал риторическим: почему я не могу использовать то, что работает?Все возражения только на уровне трёпа:
Так в документации сказано. Какая разница почему работает или не работает? Так сказано в доке. Нельзя.
На заборе тоже написано, а за ним дрова.
Ужас... А break - для чего, по-вашему??
Мне так удобнее.Это презумция использования - использую, пока не докажут, что этого нельзя.
← →
Sandman25 © (2004-12-24 13:46) [19][18] Ego (24.12.04 13:42)
Если в документации сказано, что нельзя, значит работает не всегда или разработчики компилятора не гарантируют, что будет работать в следующей версии.
Нравится переделывать - рискуйте.
← →
Slider007 © (2004-12-24 13:48) [20]Ego (24.12.04 13:42) [18]
почему я не могу использовать то, что работает?
ты можешь
← →
Sandman25 © (2004-12-24 13:50) [21][20] Slider007 © (24.12.04 13:48)
Если фирменные стандарты запрещают (судя по "гонениям", так и есть), то не может.
← →
Суслик © (2004-12-24 13:56) [22]
> [18] Ego (24.12.04 13:42)
Ты тупой что ли?
Сказали тебе - в документации написано нельзя. Значит нельзя. Или ты тупой - им все можно.
:))
← →
vecna © (2004-12-24 13:57) [23]2Ego
А можно пример в студию вашего вашего "некорректного" использования цикла. Я вот например не телепат.
← →
Sandman25 © (2004-12-24 13:58) [24][22] Суслик © (24.12.04 13:56)
Нельзя преклоняться перед авторитетами, необходимо мыслить самостоятельно, всё проверять самому. Ведь работает же! (смайлик по желанию)
← →
Суслик © (2004-12-24 13:59) [25]
> [24] Sandman25 © (24.12.04 13:58)
Волен работать, а волен и не работать.
Это дело оптимизатора :)))
← →
Slider007 © (2004-12-24 14:01) [26]Чего докапались до маинького ? детям всё разрешать надо ! а то неполноценным варастет ..
← →
Sandman25 © (2004-12-24 14:03) [27][25] Суслик © (24.12.04 13:59)
Именно так. И проверять каждый цикл запаришься, уж лучше следовать правилам и рекомендациям :)
← →
Суслик © (2004-12-24 14:04) [28]
> И проверять каждый цикл запаришься
После каждой компиляции :)))
← →
Ego (2004-12-24 14:08) [29]Да нет уже кода - переделал я все.Вообще, просто, хотелось узнать я один такой баран, что видете ли не в ногу шагаю, или вокруг меня все такие упертые, потому что положено.Спасибо всем, что, хоть, поучать не начали...
← →
Суслик © (2004-12-24 14:09) [30]
> Да нет уже кода - переделал я все.Вообще, просто, хотелось
> узнать я один такой баран
Ну и как?
Один?
← →
Slider007 © (2004-12-24 14:11) [31]Ego (24.12.04 14:08) [29]
Да нет уже кода - переделал я все.
отмазался ..
← →
pasha_golub © (2004-12-24 14:13) [32]Суслик © (24.12.04 13:59) [25]
Ну чего ты человеку не объяснишь, что ты иммешь ввиду?
2Автор
пример
for i:=1 to 10 do
<действие не связанное с использованием i>
Так вот при таком обороте, и при квлюченном оптимизаторе в Делфе, на самом деле цикл будет выглядеть так:
for i:=10 downto 1 do
<действие не связанное с использованием i>
← →
Суслик © (2004-12-24 14:14) [33]
> [32] pasha_golub © (24.12.04 14:13)
> Ну чего ты человеку не объяснишь, что ты иммешь ввиду?
[3] сматлель?
> Так вот при таком обороте, и при квлюченном оптимизаторе
> в Делфе, на самом деле цикл будет выглядеть так:
Это то какое отношение имеет к вопросу?
с уважением,
Тимохов Д.
← →
MrCorp1 (2004-12-24 14:26) [34]
> pasha_golub © (24.12.04 14:13) [32]
Не совсем так.for i:=1 to 10 do
<действие не связанное с использованием i>
в CPU:mov eax,$0000000a
dec eax
jnz -$03for i:=10 downto 1 do
<действие не связанное с использованием i>
в CPU:mov eax,$fffffff6
inc eax
jnz -$03
← →
KSergey © (2004-12-24 14:31) [35]> [18] Ego (24.12.04 13:42)
> На заборе тоже написано, а за ним дрова.
Если для вас нет разницы между забором и документацией...
← →
pasha_golub © (2004-12-24 14:33) [36]Суслик © (24.12.04 14:14) [33]
Действительно. Не выспался я наверно. :)
← →
DiamondShark © (2004-12-24 14:40) [37]
> Спасибо всем, что, хоть, поучать не начали...
Так ведь верёвка и мыло копейки стоят, сам достанешь.
← →
Суслик © (2004-12-24 15:01) [38]
> Так ведь верёвка и мыло копейки стоят, сам достанешь.
;^)
← →
Anatoly Podgoretsky © (2004-12-24 15:17) [39]Не учите меня жить, лучше помогите материально.
Страницы: 1 вся ветка
Форум: "Потрепаться";
Текущий архив: 2005.01.16;
Скачать: [xml.tar.bz2];
Память: 0.54 MB
Время: 0.037 c