Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 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 -$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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.54 MB
Время: 0.031 c
1-1104426871
Batus
2004-12-30 20:14
2005.01.16
Системная горячая клавиша


1-1104186402
WebBrowser1
2004-12-28 01:26
2005.01.16
Почему иногда после постановки точки меню не появляется ?


1-1104239927
Anonimus
2004-12-28 16:18
2005.01.16
Картинки


1-1104044743
ReNEG@T 344
2004-12-26 10:05
2005.01.16
Delphi 8


3-1102714041
Zlod3y
2004-12-11 00:27
2005.01.16
Нужны ли генераторы?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский