Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.01.16;
Скачать: CL | DM;

Вниз

Что такое корректность в построении программы?   Найти похожие ветки 

 
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 -$03


for 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;
Скачать: CL | DM;

Наверх




Память: 0.56 MB
Время: 0.047 c
3-1102693499
Fedor
2004-12-10 18:44
2005.01.16
Вычисляемые поля


14-1104383875
КаПиБаРа
2004-12-30 08:17
2005.01.16
Вера в разум тоже религия?


8-1097048026
V-Isa
2004-10-06 11:33
2005.01.16
Слои в DXDraw.


14-1104374973
Думкин
2004-12-30 05:49
2005.01.16
С днем рождения! 30 декабря


1-1104226035
Pavelkq
2004-12-28 12:27
2005.01.16
Что-то с памятью моей стало, то, что было не со мной помню.