Re[12]: Выйти из двух циклов сразу
От: Patalog Россия  
Дата: 06.06.02 05:25
Оценка:
Здравствуйте VladD2, Вы писали:

VD>Здравствуйте Patalog, Вы писали:


VD>>>Ну, а как ошибочка в тоем замечательном монолите? А ты ркутой goto-шник на goto-зил и свалил в другую контору. Что делать тем беднягам которым приказано исправить ошибку и выложить в Inet патч?


P>>Какой такой Inet в городе Мухосранске? Мсье не допонял исходную посылку. И какая такая ошибка, если монолдит замечательный?


VD>Нормальный такой. Если нет, то на диске припрут или на дискетах. Не смотреть же на бездыханную железку за которые деньги плочены.


Мсье был в городе Мухосранске? А ежели стоимость доставки дискетки сравнима по стоимости с железкой?

P>>Ежели в моем "замечательном монолите" будет критическая ошибка меня и так уволят


VD>А толку, то? Исправить то твой монлит уже никто не сможет.


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

P>>И не только меня. А если на этапе эксплуатации обнаружится не критическая ошибка, то баги перековываются в фичи


Ты не представляешь, сколько _не_ критических ошибок (скорее ляпов) в таких вот железках. Может именно потому, что критических ошибок там _нет_ и быть не может.

VD>Вот именно так (судя по коду) думают многие программеры из MS. И именно из-за такого отношения в ворде вот уже 4 версии подряд сидят один и теже глюки.


VD>Приятно только одно... Так хамить могут только очень богатые контры. Маленьким это грозит разорением. Вот Гупта не смогла вовремя переписать энжин своего SQLBase и нету боьше гупты.


P>>ЗЫж Что будут делать те "бедняги" меня нисколько не волнует, ибо в человеколюбии замечен не был. Да и самому не раз приходилось оказываться в такой ситуации. Хотя все зависит от ситуации.


VD>Ну, кичись, кичись. По крайней мере когда в следующий раз попадешь в эту шкуру, будешь вспоминать.


Я уже был в этой шкуре. А думать за "того парня" — увольте, я не мать тереза. Кичится здесь нечему, это способ выживания.

P>>ЗЗЫж Вот я и говорю, после ваших ответов у меня складывается впечатление, что все ето замечательное "граммотное структурное программирование" нужно людям дабы править баги после релиза.


VD>Да. И для этого тоже. Потому, что ни твои, ни мои, не MS-ные, ни чьи другие коды без ошибок не бывают (если это не ХаляваВолд). И порой пролежают и критичные, или не критичные, но сильно действующие на нервы.


VD>Я вот все время пользовался ERWin-ом, но теперь видимо больше не буду. Количесвто глюков в 4-й версии меня в этом убедила.


P>>А не проще то время, которое нужно чтобы каждый чих обернуть в "объектную обертку" (sorry за тафтологию), пытаться вместо одного goto городить кучу if'ов\флагов\и т.д. потратить на то чтбы просто нормально написать\отладить.


VD>Если было проще, то IT и я сдесь не матерились бы. Он тебе уже сказал, что именно такой подход как ты описываешь тормозит развитие этого сайта. Да и вранье это, что создание оберток замедляет процесс разработки. В программе 10-15 типов ресурсов которые нужно контролировать. Для 70% обертки уже есть. Так что из года ты убьешь на это занятие две недели. Зато потом, тебе не придется убивать кучу времени на встраивания такого же кода после меток от goto и отлаживать каждое такое место. Не придется так же и следить за последовотельностю освобождения этих ресурсов.


Vlad, мы говорим о разных вещах. Я думаю нужно ставить точку на этом. Одно я знаю точно, что везде нужен\возможен компромисс. И называть всех людей, которые используют в своих программах не тривиальные приемы, тем самым затрудняя чтение\понимание кода среднестатистическим программерам, воинствующими ламерами, которых просто необходимо гнать поганой метлой, весьма неправильно, и более того, иногда может оказаться вредно для здоровья
Почетный кавалер ордена Совка.
Re[9]: Пример монолитной программы :)
От: Patalog Россия  
Дата: 06.06.02 05:31
Оценка:
Здравствуйте Vi2, Вы писали:

Vi2>Как прикол — пример "монолитного" кода, полученного как "издевательство" над исходным примером Patalog (прошу простить), но работоспособный также как и исходный. Захочешь, а не исправишь.


Vi2>И что самое главное — такой примерно код я и видел собственными глазами. Жаль не сохранил для истории. Ей богу не вру.


Vi2>
Vi2>equal:for(SDirectoryRecord* pRecord3 = pRecord1->m_pFirstRecord; pRecord3 != NULL; pRecord3 = pRecord3->m_pNextDirectory) {
Vi2>if(pRecord3 != pRecord2 && pRecord2->m_nLevel == pRecord3->m_nLevel) { nRes = CompareRecord(pRecord2, pRecord3, nType)
Vi2>== 0 ? CCB_ERR_EQUAL_ID : CCB_ERR_NOERROR; if(nRes != CCB_ERR_NOERROR) { pCheckControl->m_data1 =
Vi2>reinterpret_cast<long>(pRecord2); pCheckControl->m_data2 = reinterpret_cast<long>(pRecord3); nCallBackRes =
pCheckControl->>DoControl(nRes); //Передается юзеру, который должен как-то отреагировать на ошибку
Vi2>nErrorCount++; if(nCallBackRes == CCB_RES_MAKEAUTO || nCallBackRes == CCB_RES_IGNORE) continue; //OK, продолжаем дальше
Vi2>else if(nCallBackRes == CCB_RES_ABORT) return nErrorCount; //Failed, отмена
Vi2>else goto equal; //Юзер попытался исправить ошибку, надо проверить заново
Vi2>}}}
Vi2>


Так чего ж ты комментарии то оставил? 8-[ ] И приведения нужно в стиле С.
Всему вас учить приходится

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

Взято из фидо.
----------------------------------------------------------------------
>> но разбираться с горой чужих исходников у меня до этого получалось
>> всегда. А пёрл — не идет, со страшной силой не идет.

FK> А в чем проблема-то? Приведи пример куска кода, который не идет.


Hу, типа такого... Код работающий.

$\='`'|"'";$\++;$;='/'|'`';$;++;$;++;$;++;$,=$;;$,++;$/=$,;$/++;$:=$/;$:++;$
_='
%'|'`';$_.='`'|'#';$_.=$\;$_.='`'|'/';$_.=$".'"';$_.='@'|'*'&~'!';$_.="$:$,$
/".
$";$_.='`'|'!';$_.='`'|'.';$_.='/'|'`';$_.=$/.$\;$_.='%'|'`';$_.=$;.$";$_.='
@'|
':'&~'*';$_.='`'|'%';$_.=$;;$_.='`'|',';$_.=$".$\;$_.='`'|'!';$_.='#'|'`';$_
.='
+'|'`';$_.='`'|'%';$_.=$;.'"'.$".'>&';$_.=$,&':';`$_`;
----------------------------------------------------------------------
Почетный кавалер ордена Совка.
Re[10]: Выйти из двух циклов сразу
От: Patalog Россия  
Дата: 06.06.02 05:48
Оценка:
Здравствуйте IT, Вы писали:

IT>Здравствуйте Patalog, Вы писали:


P>>Я — за


IT>Создавай голосование, посмотрим результаты.


IT>>>Ты говоришь как типичный одиночка...


P>>Может быть. Скорее даже так и есть...


IT>Всё понятно, дальше можно не объяснять. Частенько у одиночек вырабатывается комплекс "Первый парень на деревне". Симптомы просматриваются. Просто один маленький совет, когда будешь менять работу помни, что кое-кто может не захотеть подстраиваться под твои взгляды.


Ну, вот, меня уже обвинили в мании величия...
Давай не будем затевать фаллометрию и переходить на личности.
А насчет советов, можно и не маленький. Я создал ветку в прочем, хотелось бы услышать твое (и не только твое) мнение более подробно, и без ненужного сарказма\ехидства.

P>>ЗЗЫж У нас был один менеджер, который пытался уволить одного как ты выразился одиночку (не меня), дело закончилось тем что выгнали менеджера. И, имхо, это правильно.


IT>Раз выгнали, значит был плохой менеджер, вот и всё. Никакой связи с использованием goto я тут не вижу
Почетный кавалер ордена Совка.
Re[13]: А такие варианты
От: Patalog Россия  
Дата: 06.06.02 06:10
Оценка:
Здравствуйте Vi2, Вы писали:

Vi2>Здравствуйте Patalog, Вы писали:


P>>Vlad, а ты не думаешь, что изменение переменной цикла внутри цикла вешь более взрывоопасная, чем goto?


Vi2>Ну хорошо, а такие варианты?


Vi2>Пример А (приемлемый, с goto, улучшенный вариант исходного: изменено имя метки, метка помещена внутрь блока как используемая "локально" (это, конечно, фигня — всё равно она видима "глобально", но, по крайней мере, такая техника имеет право на жизнь)


Похоже ты не входишь в 80%...
Видимо Vlad все таки прав в том, что у каждого свои "правила чтения исходников". _Мне_ 2-й вариант читать труднее.

[skip]
Почетный кавалер ордена Совка.
Re[30]: Выйти из двух циклов сразу
От: The Lex Украина  
Дата: 06.06.02 06:19
Оценка: +1
Здравствуйте George_Seryakov, Вы писали:

GS>Автоматизация программирования для предметной области. Мне такое не интересно. Хотя коммерчески может быть весьма успешным: САПР Бухгалтерия! САПР Отчеты по бухгалтерии! САПР Отчеты в налоговую! САПР Левая бухгалтерия! САПР Кадры! САПР Крупный банк! САПР Мелкий банк! и т.д. и т.п., и за все бабки.


По моему скромному мнению уже есть подобные прецеденты. Далеко ходить не надо: что вы скажете насчет систем управления веб-контентом? САПР сайта. Кто сказал, что HTML/DHTML/ServerScripts — это не программирование?
Голь на выдумку хитра, однако...
Re[11]: Выйти из двух циклов сразу
От: Patalog Россия  
Дата: 06.06.02 06:29
Оценка:
Здравствуйте Patalog, Вы писали:

[skip]

P>А насчет советов, можно и не маленький. Я создал ветку в прочем, хотелось бы услышать твое (и не только твое) мнение более подробно, и без ненужного сарказма\ехидства.


Sorry, в работе.
Почетный кавалер ордена Совка.
Re[17]: Выйти из двух циклов сразу
От: Аноним  
Дата: 06.06.02 06:38
Оценка:
Здравствуйте VladD2, Вы писали:

S>>Не, не надо путать причину со следствием. Тут не готу у человека отбирать надо, а конкретно дать ему по башке, чтоб выучил новый язык.


VD>Если бы это было возможно... А вот если отнять гоуту, то он сам будет вынужден выучить язык.


S>>Задачи разные, я думаю.


VD>Это же в какой задаче увеличение скорости программы на порядок и более может быть не нужна?


Во-первых, применение оптимизатора не дает увеличение скорости программы на порядок (десятичный порядок, по крайней мере). Во-вторых, моя фраза о разных задачах относилось к "А нагромаждение циклов... Мы как то обходится".

S>>1) STL без исключений — не STL. Просто потому, что vector<T>::at обязан кидать out_of_range при выходе за границы.

S>>2) Привязка исключений к CRT действительно зависит конкретной версии компилятора. У меня версия вполне конкретная :) Да и ценность реализации исключений С++ (не SEH) вне CRT довольна сомнительна — примерно как CRT статически линковать. (возможно, тут я ошибаюсь).
S>>3) Статью читал. Только вот про самое интересное там не написано (детально про fp, например). Очевидно, потому что нафиг это никому не надо — трахаться с плавающей точкой без CRT.

VD>Значит плохо читал. А про флоат без CRT... Не просто можно но и очень даже ничего получаетя.

Нормально читал :) Там, если ты помнишь, про fp всего пара абзацов, которые кратко пересказать можно так: "Если вам надо использовать fp вычисления без CRT, сами разбирайтесь, какая функция что за собой тянет, мне влом этим заниматься".
Да и совет линковаться с LIBC.LIB вполне однозначен — это ж просто использование части CRT.

VD>Это я тебе говорю, так как мы с БД без CRT работаем, а там флоаты частенько поадаются.

И что вы с ними делаете? Юзеру показываете? А логарифм взять?

VD>Тащить за собой лишний мегобайт нам не охота (именно столько набегает если CRT использовать). К тому же есть еще один плюс. Наш код лучше использует настройки нет.


Что такое "настройки нет"?

S>>Вообще-то, я пару программок без CRT писал, но только там, где это реально было надо. Но это все был равно не С++ :)


VD>Мы пишим COM-библиотеки и нужно распространять их по сети.


Я не отрицаю, что есть класс задач, где CRT нафиг не нужна. Просто C++ без CRT — и не C++, и не C. И фиг его знает, что там после выхода очередного сервиспака глючить начнет.

S>>Вот я и говорю — это не С++. Хотя подобным образом извращаться, конечно, иногда приходится.


VD>Изваращаться все равно по какому-нибудь поводу придется. :) Мы на вычистку CRT один раз потратили две недели и не жалеем.


А начал использовать тяжеленный wxWindows и тоже не жалею :)

S>>Я sprintf и имел в виду. А реализация wsprintf, wvsprintf и вообще любого форматирующего вывода в WinAPI не поддерживает плавающую точку (что, впрочем, не удивительно).


VD>Плавающую точку поддерживает automation API. Причем на порядок лучше чем CRT. Многие программы вообще флоат не используют.


Если wsprintf еще можно хоть как-то замаскировать под sprintf, то с automation API этот номер не пройдет и код (вполне безразличная к операционке его часть) станет windows-only. Да и геморроя с ним на порядок больше, чем с sprintf и иже с ними.
Re[9]: Выйти из двух циклов сразу
От: The Lex Украина  
Дата: 06.06.02 07:02
Оценка:
Здравствуйте Patalog, Вы писали:

P>ЗЫж Помниться я в одном из ответов Vlad'у срошивал All — какие у кого корпоративные правила кодирования. Ибо мне это действительно интересно, и я прекрасно знаю, что с о своим уставом, в чужой монастырь вредно для здоровья. Может все таки поговорим об этом?


Неплохо. Принимаю предложение. Если еще никто не завел подобную тему, заведу сам. Мне тоже интересны примеры корпоративных правил кодирования, документирования и т.д. и т.п.

P>ЗЗЫж У нас был один менеджер, который пытался уволить одного как ты выразился одиночку (не меня), дело закончилось тем что выгнали менеджера. И, имхо, это правильно.


Я менеджеров тоже не очень... Только вот Vlad — не менеджер.
Голь на выдумку хитра, однако...
Re[11]: Выйти из двух циклов сразу
От: Sergey Россия  
Дата: 06.06.02 07:16
Оценка:
Здравствуйте m.a.g., Вы писали:

VD>>>>Повторюь еще раз. goto не структурированный оператор. И его ипользование вност хаотичность в код.


...>>>Про схемы Янова слышал? Посмотри — потом будешь говорить насчет неструктурированности. Все зависит от контекста.


VD>>Нет. Не слыхал. А они помогут мне при чтении кода утыконого безсмысленными goto?


...>Нет. Но при написании программ в стиле схем Янова применение goto ни к чему плохому не приводит, код остается читабельным. Споры насчет goto бессмысленны вне контекста. Для структурного программирования это плохо — где-то в другой ветке этого топика я доказал чем.


Оно, конечно, не слишком сложно чего-то доказать, если оппоненты даже со способом записи доказательства не знакомы. Вот я, например, слабо себе представляю, что именно подразумевается под написанием программ на C++ в стиле схем Янова. А если бы речь шла о записи изначально С++'ной программы на языке схем Янова, тогда о каком-таком goto (и вреде) идет речь? Об отсылающей полускобке? Или об условная полускобке? И вообще, тогда речь надо вести не о вреде goto, а о вреде схем Янова, потому как нормальный программист в этих кракозябрах нифига не поймет :)

А вообще, у оператора goto есть одна неприятная особенность — он потенциально может передать управление куда угодно, "вверх" или "вниз", в отличие от return или break. Струкутурно программа написана или как-то иначе, роли не играет — тупо увеличивается время на поиск метки. Чеолвек мыслит в основном идиомами, а неоправданное применение goto эти идиомы разбивает (оправданным я считаю, например, применение goto для очистки ресурсов в C++, совершенно идеоматическое, кстати, особенно если метку называть как-нибудь вроде cleanup).

...>>>Единственное условие применения структурных конструкций — "правило отсутствия неожиданностей".

VD>>Именно. У программисто вообще должно быть правило "не удивляй!".

...>Я имел в виду формальное "правило приятной неожиданности", разрушающее конструктивизм структурного программирования.
Одним из 33 полных кавалеров ордена "За заслуги перед Отечеством" является Геннадий Хазанов.
Re[7]: Выйти из двух циклов сразу
От: m.a.g. Мальта http://dottedmag.net/
Дата: 06.06.02 07:17
Оценка:
Здравствуйте Patalog, Вы писали:

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


Не непосредственно. За любым языком стоит некоторая теория. Эмпирическое наблюдение, не претендующее на строгость и полноту: удобство языка прямо пропорционально силе теории, стоящей за ним. А естественный вывод я взял только потому, что для него теорема доказывается короче всего.

P>Pls, обьясни поподробней. Если подкинешь ссылки, будет просто Только, как говориться, для чайников.


В электронном виде мало чего есть. Так что могу посоветовать только

Н.Н.Непейвода "Прикладная логика", Новосибирск, издательство НГУ 2000.

Ну не теоретик я И методологию не учил

А ее и учить не нужно. И методология к языку не имеет отношения, это язык может быть более или менее пригоден для методологии.

...>>Переписать код так, чтобы этой проблемы не возникало.


P>Так у меня никакой проблемы и не возникает. Похоже она возникает у тех кто пытается переписать код в соответствии с "правильным теоретическим проектированием".


Это не вопрос проектирования вообще. Все сводится к изменению алгоритма или даже реализации алгоритма.
Re[7]: Выйти из двух циклов сразу
От: m.a.g. Мальта http://dottedmag.net/
Дата: 06.06.02 07:17
Оценка:
Здравствуйте Patalog, Вы писали:

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


Не непосредственно. За любым языком стоит некоторая теория. Эмпирическое наблюдение, не претендующее на строгость и полноту: удобство языка прямо пропорционально силе теории, стоящей за ним. А естественный вывод я взял только потому, что для него теорема доказывается короче всего.

P>Pls, обьясни поподробней. Если подкинешь ссылки, будет просто Только, как говориться, для чайников.


В электронном виде мало чего есть. Так что могу посоветовать только

Н.Н.Непейвода "Прикладная логика", Новосибирск, издательство НГУ 2000.

Ну не теоретик я И методологию не учил

А ее и учить не нужно. И методология к языку не имеет отношения, это язык может быть более или менее пригоден для методологии.

...>>Переписать код так, чтобы этой проблемы не возникало.


P>Так у меня никакой проблемы и не возникает. Похоже она возникает у тех кто пытается переписать код в соответствии с "правильным теоретическим проектированием".


Это не вопрос проектирования вообще. Все сводится к изменению алгоритма или даже реализации алгоритма.
Re[12]: Выйти из двух циклов сразу
От: m.a.g. Мальта http://dottedmag.net/
Дата: 06.06.02 07:27
Оценка:
Здравствуйте Sergey, Вы писали:

S>Оно, конечно, не слишком сложно чего-то доказать, если оппоненты даже со способом записи доказательства не знакомы. Вот я, например, слабо себе представляю, что именно подразумевается под написанием программ на C++ в стиле схем Янова.


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

А если бы речь шла о записи изначально С++'ной программы на языке схем Янова, тогда о каком-таком goto (и вреде) идет речь? Об отсылающей полускобке? Или об условная полускобке? И вообще, тогда речь надо вести не о вреде goto, а о вреде схем Янова, потому как нормальный программист в этих кракозябрах нифига не поймет

Почему? Если данные глобальны и преобразования этих данных тоже глобальны, то функция, использующая goto, читабельна даже более, чем соответствующая структурная.

S>А вообще, у оператора goto есть одна неприятная особенность — он потенциально может передать управление куда угодно, "вверх" или "вниз", в отличие от return или break. Струкутурно программа написана или как-то иначе, роли не играет — тупо увеличивается время на поиск метки. Чеолвек мыслит в основном идиомами, а неоправданное применение goto эти идиомы разбивает (оправданным я считаю, например, применение goto для очистки ресурсов в C++, совершенно идеоматическое, кстати, особенно если метку называть как-нибудь вроде cleanup).


На самом деле, упоминание схем Янова было только в связи с безаппеляционным заявлением "goto considered harmful".
Re[8]: Выйти из двух циклов сразу
От: Patalog Россия  
Дата: 06.06.02 07:29
Оценка:
Здравствуйте m.a.g., Вы писали:

[skip]

...>В электронном виде мало чего есть. Так что могу посоветовать только


...>Н.Н.Непейвода "Прикладная логика", Новосибирск, издательство НГУ 2000.


Thanks.

...>Ну не теоретик я И методологию не учил


...>А ее и учить не нужно. И методология к языку не имеет отношения, это язык может быть более или менее пригоден для методологии.


...>>>Переписать код так, чтобы этой проблемы не возникало.


P>>Так у меня никакой проблемы и не возникает. Похоже она возникает у тех кто пытается переписать код в соответствии с "правильным теоретическим проектированием".


...>Это не вопрос проектирования вообще. Все сводится к изменению алгоритма или даже реализации алгоритма.


В одном из ответов http://www.rsdn.ru/forum/message.asp?mid=60994&amp;only
Автор: Patalog
Дата: 06.06.02
я уже описал проблему (применительно к тому примеру который я приводил). Посмотри, может предложишь другой алгоритм, кроме тупого перебора? Реализацию уже предложил Vi2, по этому поводу я уже высказался.
Почетный кавалер ордена Совка.
Re[2]: Выйти из двух циклов сразу
От: The Lex Украина  
Дата: 06.06.02 07:37
Оценка:
Здравствуйте Whisperer, Вы писали:

W>Ау знатоки программирования :wow: может вы другие темы смотреть будете и помогать желающим, а

W>вы обсасываете старую избитую тему (вчем прикол — поговорить, для этого chat существует).
W>Я смотру если появляется хороший вопрос — ответов или 0 или <10 . Зато на такие темы вы кидаетсесь
W>как голодные ... (извеняюсь вырвалось). И необежайтесь если я неправ. Мне здесь тоже помогали.
W>Но активность — только из-за таких тем. :user:

Ну надо же как-то развлекаться? Мы вот как-то развлекались над фразой "кошка Мебиуса — это кошка, которая гуляет сама по себе". Где-то час после обеда пытались представить, как могла бы выглядеть "Кошка Мебиуса"... :)))
Голь на выдумку хитра, однако...
Re[9]: Выйти из двух циклов сразу
От: m.a.g. Мальта http://dottedmag.net/
Дата: 06.06.02 07:42
Оценка:
Здравствуйте Patalog, Вы писали:

...>>Это не вопрос проектирования вообще. Все сводится к изменению алгоритма или даже реализации алгоритма.


P>В одном из ответов http://www.rsdn.ru/forum/message.asp?mid=60994&amp;only
Автор: Patalog
Дата: 06.06.02
я уже описал проблему (применительно к тому примеру который я приводил). Посмотри, может предложишь другой алгоритм, кроме тупого перебора? Реализацию уже предложил Vi2, по этому поводу я уже высказался.


Да. Похоже, что в данном случае один черт. Но проблема это классическая — называется "exception с повторением" — возврат в точку ошибки после ее исправления. Стандартная схема эмуляции с помощью обычных исключений:

for(;;)
{
   try
   {
       action();
       break;
   }
   catch(/*what you want*/)
   {
   }
}
Re[13]: Выйти из двух циклов сразу
От: Sergey Россия  
Дата: 06.06.02 07:50
Оценка:
Здравствуйте m.a.g., Вы писали:

S>>Оно, конечно, не слишком сложно чего-то доказать, если оппоненты даже со способом записи доказательства не знакомы. Вот я, например, слабо себе представляю, что именно подразумевается под написанием программ на C++ в стиле схем Янова.


...>Написать программу на C++ для решения задачи, которая естественным образом раскладывается в глобальные действия над глобальными данными.


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

...>А если бы речь шла о записи изначально С++'ной программы на языке схем Янова, тогда о каком-таком goto (и вреде) идет речь? Об отсылающей полускобке? Или об условная полускобке? И вообще, тогда речь надо вести не о вреде goto, а о вреде схем Янова, потому как нормальный программист в этих кракозябрах нифига не поймет :)


...>Почему? Если данные глобальны и преобразования этих данных тоже глобальны, то функция, использующая goto, читабельна даже более, чем соответствующая структурная.


Я так понял, подразумевается ровно одна функция (main)? Тогда абсолютно никакой разницы между локальными и глобальным данными, в рамках С/С++ и обсуждаемой проблемы, нет. И необоснованное использование goto так же вредно, как и в других случаях.

S>>А вообще, у оператора goto есть одна неприятная особенность — он потенциально может передать управление куда угодно, "вверх" или "вниз", в отличие от return или break. Струкутурно программа написана или как-то иначе, роли не играет — тупо увеличивается время на поиск метки. Чеолвек мыслит в основном идиомами, а неоправданное применение goto эти идиомы разбивает (оправданным я считаю, например, применение goto для очистки ресурсов в C++, совершенно идеоматическое, кстати, особенно если метку называть как-нибудь вроде cleanup).


...>На самом деле, упоминание схем Янова было только в связи с безаппеляционным заявлением "goto considered harmful".


Угу, типа "в огороде бузина, в Киеве дядька" :))
Одним из 33 полных кавалеров ордена "За заслуги перед Отечеством" является Геннадий Хазанов.
Re[10]: Выйти из двух циклов сразу
От: Patalog Россия  
Дата: 06.06.02 07:55
Оценка:
Здравствуйте m.a.g., Вы писали:

...>Здравствуйте Patalog, Вы писали:


...>>>Это не вопрос проектирования вообще. Все сводится к изменению алгоритма или даже реализации алгоритма.


P>>В одном из ответов http://www.rsdn.ru/forum/message.asp?mid=60994&amp;only
Автор: Patalog
Дата: 06.06.02
я уже описал проблему (применительно к тому примеру который я приводил). Посмотри, может предложишь другой алгоритм, кроме тупого перебора? Реализацию уже предложил Vi2, по этому поводу я уже высказался.


...>Да. Похоже, что в данном случае один черт. Но проблема это классическая — называется "exception с повторением" — возврат в точку ошибки после ее исправления. Стандартная схема эмуляции с помощью обычных исключений:


...>
...>for(;;)
...>{
...>   try
...>   {
...>       action();
...>       break;
...>   }
...>   catch(/*what you want*/)
...>   {
...>   }
...>}
...>


Не совсем понял, как это прикрутить в моем случае?
И потом, при больших итерациях, накладые расходы на исключения могу оказаться критичными. Правда это из более другой области.
Почетный кавалер ордена Совка.
Re[12]: Выйти из двух циклов сразу
От: The Lex Украина  
Дата: 06.06.02 07:58
Оценка:
Здравствуйте VladD2, Вы писали:

VD>Здравствуйте Patalog, Вы писали:


P>>И не только меня. А если на этапе эксплуатации обнаружится не критическая ошибка, то баги перековываются в фичи


VD>Вот именно так (судя по коду) думают многие программеры из MS. И именно из-за такого отношения в ворде вот уже 4 версии подряд сидят один и теже глюки.


Есть такое... Попробуйте в Word ввести "уточнение наличия запасов м.с.;" — интересно, как ваш Word на это отреагирует?

VD>Приятно только одно... Так хамить могут только очень богатые контры. Маленьким это грозит разорением. Вот Гупта не смогла вовремя переписать энжин своего SQLBase и нету боьше гупты.


Вот и я о том же. И насчет постоянного добавления новых фич тоже. Может конечно сфера деятельности компании Patalog-а столь специфична, что этого не требуется, только что-то я в этом сомневаюсь. Вы уж меня простите, господин Patalog.

P>>ЗЫж Что будут делать те "бедняги" меня нисколько не волнует, ибо в человеколюбии замечен не был. Да и самому не раз приходилось оказываться в такой ситуации. Хотя все зависит от ситуации.


VD>Ну, кичись, кичись. По крайней мере когда в следующий раз попадешь в эту шкуру, будешь вспоминать.


P>>ЗЗЫж Вот я и говорю, после ваших ответов у меня складывается впечатление, что все ето замечательное "граммотное структурное программирование" нужно людям дабы править баги после релиза.


P>>А не проще то время, которое нужно чтобы каждый чих обернуть в "объектную обертку" (sorry за тафтологию), пытаться вместо одного goto городить кучу if'ов\флагов\и т.д. потратить на то чтбы просто нормально написать\отладить.


VD>Если было проще, то IT и я сдесь не матерились бы. Он тебе уже сказал, что именно такой подход как ты описываешь тормозит развитие этого сайта. Да и вранье это, что создание оберток замедляет процесс разработки. В программе 10-15 типов ресурсов которые нужно контролировать. Для 70% обертки уже есть. Так что из года ты убьешь на это занятие две недели. Зато потом, тебе не придется убивать кучу времени на встраивания такого же кода после меток от goto и отлаживать каждое такое место. Не придется так же и следить за последовотельностю освобождения этих ресурсов.


Поддерживаю...

P.S. Если кто-нибудь думает, что я подлизываюсь к Vlad-у — это не так. Могу сказать, что с некоторыми статьями на optim.ru я несогласен...
Голь на выдумку хитра, однако...
Re[13]: Выйти из двух циклов сразу
От: LeonGorbachev Россия  
Дата: 06.06.02 08:02
Оценка:
Здравствуйте The Lex, Вы писали:

TL> Есть такое... Попробуйте в Word ввести "уточнение наличия запасов м.с.;" — интересно, как ваш Word на это отреагирует?


да в общем как всега — вывел на экран буковки. И ничего более... А в чем прикол?
Re[16]: Выйти из двух циклов сразу
От: The Lex Украина  
Дата: 06.06.02 08:03
Оценка:
Здравствуйте Sergey, Вы писали:

S>Не, не надо путать причину со следствием. Тут не готу у человека отбирать надо, а конкретно дать ему по башке, чтоб выучил новый язык.


Я всегда считал, что для того чтобы выучить новый язык, необходимо научиться думать на нем, мыслить его категориями. Разве не так?
Голь на выдумку хитра, однако...
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.