<?xml version='1.0' encoding="utf-8"?>
      <rss version='2.0'>
      <channel>
      <title>Форум на Исходниках.RU</title>
      <link>https://forum.sources.ru</link>
      <description>Форум на Исходниках.RU</description>
      <generator>Форум на Исходниках.RU</generator>
  	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=9088&amp;view=findpost&amp;p=1030275</guid>
        <pubDate>Wed, 01 Mar 2006 10:15:36 +0000</pubDate>
        <title>Нелюбовь к goto</title>
        <link>https://forum.sources.ru/index.php?showtopic=9088&amp;view=findpost&amp;p=1030275</link>
        <description><![CDATA[BlackSnake: <div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <span class='tag-quote__quote-info'>Lucifer, 28.02.2006, 22:55:44, 1029801</span><div class='quote '><div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <span class='tag-quote__quote-info'>BlackSnake @ 28.02.06, 10:03</span><div class='quote '><div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <span class='tag-quote__quote-info'>Lucifer, 27.02.2006 21:24:41</span><div class='quote '>Про исключения один я здесь слышал?&#33; </div></div>исключения, как ни странно, придуманы для ИСКЛЮЧИТЕЛЬНЫХ операций (конкретнее - обычно для обработки ошибок).</div></div>А ошибка и есть исключительная ситуация </div></div><br>
<br>
<strong class='tag-b'>Lucifer</strong>, мы про одно и то же говорим :) ...<br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <span class='tag-quote__quote-info'>BlackSnake, 28.02.2006, 08:03:04, 1028882</span><div class='quote '>исключения придуманы для ИСКЛЮЧИТЕЛЬНЫХ операций (<strong class='tag-b'>конкретнее - обычно для обработки ошибок</strong>).</div></div>]]></description>
        <author>BlackSnake</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=9088&amp;view=findpost&amp;p=1028912</guid>
        <pubDate>Tue, 28 Feb 2006 06:39:56 +0000</pubDate>
        <title>Нелюбовь к goto</title>
        <link>https://forum.sources.ru/index.php?showtopic=9088&amp;view=findpost&amp;p=1028912</link>
        <description><![CDATA[mo3r: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=9088&view=findpost&p=1028882'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>BlackSnake &#064; <time class="tag-quote__quoted-time" datetime="2006-02-28T06:03:04+00:00">28.02.06, 06:03</time></span><div class='quote '>будьте любезны, пример кода, тупо ищущего максимальное значение ТОЛЬКО по ячейкам, обе координаты которых кратны 3. (РАЗУМЕЕТСЯ, БЕЗ ВЛОЖЕННЫХ ЦИКЛОВ&#33;)</div></div><br>
На паскале (хотя, ИМХО, идиотизм это делать без вложенных циклов):<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">const</div><div class="code_line">&nbsp;&nbsp;MaxN = 100;</div><div class="code_line">&nbsp;&nbsp;MaxM = 100;</div><div class="code_line">&nbsp;</div><div class="code_line">function max(a,b: integer): integer; begin if a&#62;=b then max := a else max := b; end;</div><div class="code_line">&nbsp;</div><div class="code_line">var</div><div class="code_line">&nbsp;&nbsp;a: array[1..MaxN,1..MaxM] of integer;</div><div class="code_line">&nbsp;</div><div class="code_line">function maxa: integer;</div><div class="code_line">var</div><div class="code_line">&nbsp;&nbsp;i,j,r: integer;</div><div class="code_line">begin</div><div class="code_line">&nbsp;&nbsp;i := 3;</div><div class="code_line">&nbsp;&nbsp;j := 3;</div><div class="code_line">&nbsp;&nbsp;r := -MaxInt;</div><div class="code_line">&nbsp;&nbsp;while true do</div><div class="code_line">&nbsp;&nbsp;begin</div><div class="code_line">&nbsp;&nbsp; &nbsp;r := max(r,a[i,j]);</div><div class="code_line">&nbsp;&nbsp; &nbsp;inc(j,3);</div><div class="code_line">&nbsp;&nbsp; &nbsp;if j &#62; MaxM then begin inc(i,3); j := 3; end;</div><div class="code_line">&nbsp;&nbsp; &nbsp;if i &#62; MaxN then break;</div><div class="code_line">&nbsp;&nbsp;end;</div><div class="code_line">&nbsp;&nbsp;maxa := r;</div><div class="code_line">end;</div></ol></div></div></div></div><script>preloadCodeButtons('1');</script><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=9088&view=findpost&p=1028882'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>BlackSnake &#064; <time class="tag-quote__quoted-time" datetime="2006-02-28T06:03:04+00:00">28.02.06, 06:03</time></span><div class='quote '>будьте любезны, пример парсера БЕЗ РЕКУРСИИ, способного разобрать код, где вложенность достигает, к примеру, ста тысяч элементов. (пример конечно надуман, но исключительно ради наглядности. справка: рекурсию на 20 тысяч уровней вложенности я видел в реальном коде.)</div></div><br>
Ну, допустим, рекурсию на столько (и даже больше, порядка 10^6) я тоже видел в реальном коде.<br>
Допустим, у нас есть грамматика следующего вида (задана БНФ):<br>
<br>
number ::== number|number digit<br>
digit ::== 0|1|2|3|4|5|6|7|8|9<br>
expression ::== number|leftparen expression rightparen<br>
leftparen ::== (<br>
rightparen ::== )<br>
<br>
Где expression --- интересующее нас выражение.<br>
Теперь, возьмем выражение с требуемой вложенностью 10^5: ((((....(((123)))....)))). Я утверждаю, что для того, чтобы распарсить выражения, задаваемые такой грамматикой, рекурсия не нужна.<br>
(Хотя, опять же, ИМХО, бред не использовать goto в коде парсера; к тому же, парсеры обычно генерируются по грамматике, и их код не нужно отлаживать, поэтому там можно почти все, что угодно)]]></description>
        <author>mo3r</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=9088&amp;view=findpost&amp;p=1028882</guid>
        <pubDate>Tue, 28 Feb 2006 06:03:04 +0000</pubDate>
        <title>Нелюбовь к goto</title>
        <link>https://forum.sources.ru/index.php?showtopic=9088&amp;view=findpost&amp;p=1028882</link>
        <description><![CDATA[BlackSnake: <div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <span class='tag-quote__quote-info'>Lucifer, 27.02.2006, 21:24:41, 1028652</span><div class='quote '>Правила некоторых компаний запрещают использование вложенных циклов</div></div><br>
хм... есть массив (100,100)...<br>
будьте любезны, пример кода, тупо ищущего максимальное значение ТОЛЬКО по ячейкам, обе координаты которых кратны 3. (РАЗУМЕЕТСЯ, БЕЗ ВЛОЖЕННЫХ ЦИКЛОВ&#33;)<br>
<br>
<br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <span class='tag-quote__quote-info'>Lucifer, 27.02.2006, 21:24:41, 1028652</span><div class='quote '>Отрывать лапы авторам таких функций</div></div><br>
будьте любезны, пример парсера БЕЗ РЕКУРСИИ, способного разобрать код, где вложенность достигает, к примеру, ста тысяч элементов. (пример конечно надуман, но исключительно ради наглядности. справка: рекурсию на 20 тысяч уровней вложенности я видел в реальном коде.)<br>
<br>
<br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <span class='tag-quote__quote-info'>Lucifer, 27.02.2006, 21:24:41, 1028652</span><div class='quote '>Про исключения один я здесь слышал?&#33; </div></div>исключения, как ни странно, придуманы для ИСКЛЮЧИТЕЛЬНЫХ операций (конкретнее - обычно для обработки ошибок).<br>
Повсеместное применения исключений просто ещё раз иллюстрирует мой пример, когда goto как таковой есть, но назван другим словом, просто &quot;чтобы не было goto&quot;. Сама идея команды безусловного перехода в определённое (как-то помеченное) место кода всё равно остаётся.]]></description>
        <author>BlackSnake</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=9088&amp;view=findpost&amp;p=1028841</guid>
        <pubDate>Tue, 28 Feb 2006 04:19:20 +0000</pubDate>
        <title>Нелюбовь к goto</title>
        <link>https://forum.sources.ru/index.php?showtopic=9088&amp;view=findpost&amp;p=1028841</link>
        <description><![CDATA[BlackSnake: <div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <span class='tag-quote__quote-info'>LuckLess, 27.02.2006, 15:42:31, 1028197</span><div class='quote '>совершенно нечитаемо для варианта без функции.<br>
моэно конечно выделить этот кусок кода коментариями.<br>
Но зачем ?? Для таких случаев придуманы функции. </div></div><br>
<br>
Функции придуманы не для таких случаев, а для выноса ПОВТОРЯЮЩИХСЯ вычислений (действий).<br>
<br>
в данном случае - всё-таки правильнее написать два коммента, типа &quot;//тут мы будем вычислять какую-то ерунду&quot; в начало вычислений и &quot;//ну вот мы её и вычислили&quot;.<br>
Вынос подобного кода, если он не периодичен, не имеет смысла и противоречит принципам структурного программинга.<br>
<br>
<br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <span class='tag-quote__quote-info'>LuckLess, 27.02.2006, 15:42:31, 1028197</span><div class='quote '>это не лишняя , а совершенно обычная для компилятора работа.<br>
компилятор без нормального оптимизатора - редкость , которая никому не нужна.</div></div>нормальность оптимизера - вещь спорная. если ты, например, зачем-то применишь неподходящий тип для данных (например Integer вместо Long), то компилер вероятнее всего этого не заметит, если это не вызовет ошибок, но оптимальность от этого пострадает. В данном случае, вероятно, уменьшится скорость.<br>
<br>
<br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <span class='tag-quote__quote-info'>Ho Im, 27.02.2006, 17:03:12, 1028315</span><div class='quote '>А я предпочитаю. Ибо не люблю напрягаться. Пусть лошковатый компилер за меня понапрягается, пока я еще одно пивцо наверну.  </div></div><br>
Пивцо это канешна харашо, но... я предпочитаю потратить час своего времени на оптимизацию кода, чем терять 5 минут в сутки на протяжении полугода, пока прогой пользуюсь...<br>
<br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <span class='tag-quote__quote-info'>LuckLess, 27.02.2006, 15:42:31, 1028197</span><div class='quote '>PS:перенечите плз тему в холи варзз )) </div></div>Да там уже есть такая тема.]]></description>
        <author>BlackSnake</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=9088&amp;view=findpost&amp;p=1028672</guid>
        <pubDate>Mon, 27 Feb 2006 19:39:44 +0000</pubDate>
        <title>Нелюбовь к goto</title>
        <link>https://forum.sources.ru/index.php?showtopic=9088&amp;view=findpost&amp;p=1028672</link>
        <description><![CDATA[Kheor: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=9088&view=findpost&p=1028652'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Lucifer &#064; <time class="tag-quote__quoted-time" datetime="2006-02-27T19:24:41+00:00">27.02.06, 19:24</time></span><div class='quote '>Правила некоторых компаний запрещают использование вложенных циклов</div></div><br>
Бугага, а как тот же алгоритм флойда без вложенных циклов писать?]]></description>
        <author>Kheor</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=9088&amp;view=findpost&amp;p=1028664</guid>
        <pubDate>Mon, 27 Feb 2006 19:33:16 +0000</pubDate>
        <title>Нелюбовь к goto</title>
        <link>https://forum.sources.ru/index.php?showtopic=9088&amp;view=findpost&amp;p=1028664</link>
        <description><![CDATA[Gregory Petrosyan: <div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>Правила некоторых компаний запрещают использование вложенных циклов</div></div><br>
И языков программирования, надо полагать, тоже?<br>
<br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>Про исключения один я здесь слышал?&#33; </div></div><br>
Если в языке С -- то да ;-)]]></description>
        <author>Gregory Petrosyan</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=9088&amp;view=findpost&amp;p=1028608</guid>
        <pubDate>Mon, 27 Feb 2006 18:45:19 +0000</pubDate>
        <title>Нелюбовь к goto</title>
        <link>https://forum.sources.ru/index.php?showtopic=9088&amp;view=findpost&amp;p=1028608</link>
        <description><![CDATA[amk: Лично я goto уважаю за то, что этот оператор иногда позволяет упростить логику программы. Вот несколько ситуаций когда самому приходилось пользоваться (чистый C). <br>1. Выход из вложенных циклов. Кстати, использование return здесь не всегда оправданно, так как если он расположен где-нибудь в середине цикла, глубоко среди остального текста, то его не видно. Из-за чего обычно делаются неправильные выводы о работе функции. Что не есть хорошо.<br>2. Имитация рекурсивного вызова функции. Многим это кажется излишним, но иногда встречаются функции, которые при рекурсивном вызове махом съедают стек, а на компилятор надеяться непереносимо, мало ли на каком старье решат откомпилировать (Встречаются еще компиляторы, которые концевую рекурсию не оптимизируют).<br>3. Небольшой трюк в switch. Иногда бывает, что несколько из case&#39;ов подразумевают практически одинаковую обработку. Отличие в начальном присваивании одной-двум переменным. Тогда бывает имеет смысл вместо объединения их в один блок case&#39;ов и проверки, по какому же из них произошел вход, пометить общую часть меткой и сделать из всех case&#39;ов на нее переход. Правда это имеет смысл только в том случае, если по каким-то причинам не подходит обработка в отдельной функции, что было-бы поудобнее.<br>4. Ситуация описанная в одном из топиков выше. В парсерах в начале обработки одной из веток case (состояние автомата) иногда выясняется, что мы попали не в ту ветку (находимся не в том состоянии). Лучшим выходом было бы пересмотреть таблицу переходов, чтобы всегда попадать туда, куда нужно, но иногда из-за этого раздувается код парсера. Если таких ситуаций немного, проще бывает сделать прыжок на нужную ветку.<br>5. Прыжок к блоку обработки ошибок. Если не подходит обработка на месте возникновения, несколько ошибок требуют одинаковой обработки и при этом не годится вызов функции. Можно вынести обработку ошибки в конец функции и дать ей нормальную метку с &quot;говорящим&quot; именем.<br>Причем всегда приходится объяснять, для чего эта метка нужна.<br><br>К сожалению некоторые этим оператором злоупотребляют. В моей работе был случай. Надо было внести в общем-то пустяковое изменение в программу ввода (редактирования) и обработки некоторых данных. Исходник был оформлен в виде одного файла длиной около двух с половиной тысяч строк. Кроме функции main в нем присутствовало еще с десяток функций длиной строк по десять и одна функция строк на двести. Автор недавно перешел с фортрана (хотя наверно с год уже с языком С был знаком). По этой причине функция была полна переходов, на них была построена львиная доля циклов, они использовались для организации переходов между полями таблицы и т.д. и т.п. Перед внесением этого изменения пришлось перерыть всю программу, вынести в функции некоторые повторяющиеся операции (последствия операции копирования-вставки в редакторе), переписать циклы и еще кучу всякой всячины, иначе я не мог представить, что у меня перестает работать. В результате, на работу, которая должна была занять часа два (ну может день), было потрачено больше полумесяца. И то, мне было проще чем остальным - я хоть в общих чертах знал, что эта программа должна была делать, застал время ее написания.]]></description>
        <author>amk</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=9088&amp;view=findpost&amp;p=1028429</guid>
        <pubDate>Mon, 27 Feb 2006 16:15:20 +0000</pubDate>
        <title>Нелюбовь к goto</title>
        <link>https://forum.sources.ru/index.php?showtopic=9088&amp;view=findpost&amp;p=1028429</link>
        <description><![CDATA[BlackSnake: <div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <span class='tag-quote__quote-info'>Gregory Petrosyan, 26.02.2006, 20:45:15, 1027495</span><div class='quote '>BlackSnake, если не секрет, что ты пишешь?(на чём?)<br>
<br>
Просто никогда ранее не встречал людей, так... увлечённых оптимизацией :-)</div></div><br>
<br>
Сейчас основная моя работа на VBA (не VB, а VBA - который встроен в МС-Оффис).<br>
<br>
Увлечённость оптимизацией происходит, вероятно со времён Спектрума... когда у компа тактовая частота что-то порядка 2 МГц - тут хошь-нехошь думаешь об оптимизации.]]></description>
        <author>BlackSnake</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=9088&amp;view=findpost&amp;p=1028315</guid>
        <pubDate>Mon, 27 Feb 2006 15:03:12 +0000</pubDate>
        <title>Нелюбовь к goto</title>
        <link>https://forum.sources.ru/index.php?showtopic=9088&amp;view=findpost&amp;p=1028315</link>
        <description><![CDATA[Ho Im: <div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>Я предпочитаю не нагружать компилер лишней работой</div></div><br>
А я предпочитаю. Ибо не люблю напрягаться. Пусть лошковатый компилер за меня понапрягается, пока я еще одно пивцо наверну. :)]]></description>
        <author>Ho Im</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=9088&amp;view=findpost&amp;p=1028197</guid>
        <pubDate>Mon, 27 Feb 2006 13:42:31 +0000</pubDate>
        <title>Нелюбовь к goto</title>
        <link>https://forum.sources.ru/index.php?showtopic=9088&amp;view=findpost&amp;p=1028197</link>
        <description><![CDATA[LuckLess: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=9088&view=findpost&p=1027492'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>BlackSnake &#064; <time class="tag-quote__quoted-time" datetime="2006-02-26T18:39:16+00:00">26.02.06, 18:39</time></span><div class='quote '>хм. ты хотел сказать &quot;хорошо написанный компилер сделает их встроенными&quot;, наверное?<br>
Я предпочитаю не нагружать компилер лишней работой, особенно если не уверен в интеллектуальности его оптимизации.<br>
</div></div><br>
это не лишняя , а совершенно обычная для компилятора работа.<br>
компилятор без нормального оптимизатора - редкость , которая никому не нужна.<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=9088&view=findpost&p=1027537'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>nvm &#064; <time class="tag-quote__quoted-time" datetime="2006-02-26T19:48:19+00:00">26.02.06, 19:48</time></span><div class='quote '>Второй вариант читаемее, т.к. сразу видно, в чем зло.</div></div><br>
не видно ничего , в том то и дело. я для примера привел простое вычисление , имееться ввиду что оно большое , скажем в пол экрана кода.<br>
<br>
совершенно нечитаемо для варианта без функции.<br>
моэно конечно выделить этот кусок кода  коментариями.<br>
Но зачем ?? Для таких случаев придуманы функции. <br>
<br>
<span class="tag-color tag-color-named" data-value="gray" style="color: gray"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2006-02-27T13:44:19+00:00">27.02.06, 13:44</time></span></span><br>
PS:перенечите плз тему в холи варзз ))]]></description>
        <author>LuckLess</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=9088&amp;view=findpost&amp;p=1027537</guid>
        <pubDate>Sun, 26 Feb 2006 19:48:19 +0000</pubDate>
        <title>Нелюбовь к goto</title>
        <link>https://forum.sources.ru/index.php?showtopic=9088&amp;view=findpost&amp;p=1027537</link>
        <description><![CDATA[nvm: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=9088&view=findpost&p=1027381'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>LuckLess &#064; <time class="tag-quote__quoted-time" datetime="2006-02-26T16:13:38+00:00">26.02.06, 16:13</time></span><div class='quote '>представь тебе надо пощитать злую формулу..<br>
и есть выбор между<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">y = CountZlo(x);</div></ol></div></div></div></div><br>
и<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">y = sqrt(x*66 -77 %x -94 +x*cos(x+7));</div></ol></div></div></div></div><br>
что будет читаемее?</div></div><br>
Второй вариант читаемее, т.к. сразу видно, в чем зло.<br>
<br>
Функция здесь оправдана, только если выражение вычисляется более одного раза.]]></description>
        <author>nvm</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=9088&amp;view=findpost&amp;p=1027503</guid>
        <pubDate>Sun, 26 Feb 2006 18:57:35 +0000</pubDate>
        <title>Нелюбовь к goto</title>
        <link>https://forum.sources.ru/index.php?showtopic=9088&amp;view=findpost&amp;p=1027503</link>
        <description><![CDATA[mo3r: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=9088&view=findpost&p=1027492'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>BlackSnake &#064; <time class="tag-quote__quoted-time" datetime="2006-02-26T18:39:16+00:00">26.02.06, 18:39</time></span><div class='quote '>Я предпочитаю не нагружать компилер лишней работой, особенно если не уверен в интеллектуальности его оптимизации.</div></div><br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <span class='tag-quote__quote-info'>Э.Дейкстра</span><div class='quote '>Premature optimization is the root of all evil</div></div>]]></description>
        <author>mo3r</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=9088&amp;view=findpost&amp;p=1027495</guid>
        <pubDate>Sun, 26 Feb 2006 18:45:15 +0000</pubDate>
        <title>Нелюбовь к goto</title>
        <link>https://forum.sources.ru/index.php?showtopic=9088&amp;view=findpost&amp;p=1027495</link>
        <description><![CDATA[Gregory Petrosyan: BlackSnake, если не секрет, что ты пишешь?(на чём?)<br><br>Просто никогда ранее не встречал людей, так... увлечённых оптимизацией :-)]]></description>
        <author>Gregory Petrosyan</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=9088&amp;view=findpost&amp;p=1027492</guid>
        <pubDate>Sun, 26 Feb 2006 18:39:16 +0000</pubDate>
        <title>Нелюбовь к goto</title>
        <link>https://forum.sources.ru/index.php?showtopic=9088&amp;view=findpost&amp;p=1027492</link>
        <description><![CDATA[BlackSnake: <div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <span class='tag-quote__quote-info'>LuckLess, 26.02.2006, 18:13:38, 1027381</span><div class='quote '>представь тебе надо пощитать злую формулу..<br>
и есть выбор между<br>
y = CountZlo(x);<br>
и<br>
y = sqrt(x*66 -77 %x -94 +x*cos(x+7));<br>
что будет читаемее? </div></div><br>
если такое вычисление встречается многократно - то да, функция рулит, т.к. есть смысл запомнить мозгом, что она делает и зачем. иначе - мне намного удобнее не ходить в ту функцию посмотреть (запоминать-то её незачем, если она всего пару раз встречается) что она такое, а потратить 10 секунд на визуальный анализ строки sqrt(x*66 -77 %x -94 +x*cos(x+7)). (более того, если меня в опр. момент не интересует математика, то и читать эту строку я не стану.), а если написано y = CountZlo(x); , то если я не помню, что такое CountZlo, придётся идти читать её, причём в любом случае.<br>
<br>
<br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <span class='tag-quote__quote-info'>LuckLess, 26.02.2006, 18:13:38, 1027381</span><div class='quote '>хорошо написанные функции станут встраиваемыми ,и вызова не будет вообще.<br>
и даже если он будет то push, pop,call,ret особой роли в производительности не играют.<br>
если уж думать о таких вещах -- то проще прогить на асме. </div></div><br>
<br>
хм. ты хотел сказать &quot;хорошо написанный компилер сделает их встроенными&quot;, наверное?<br>
Я предпочитаю не нагружать компилер лишней работой, особенно если не уверен в интеллектуальности его оптимизации.]]></description>
        <author>BlackSnake</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=9088&amp;view=findpost&amp;p=1027381</guid>
        <pubDate>Sun, 26 Feb 2006 16:13:38 +0000</pubDate>
        <title>Нелюбовь к goto</title>
        <link>https://forum.sources.ru/index.php?showtopic=9088&amp;view=findpost&amp;p=1027381</link>
        <description><![CDATA[LuckLess: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=9088&view=findpost&p=1027358'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>nvm &#064; <time class="tag-quote__quoted-time" datetime="2006-02-26T15:52:05+00:00">26.02.06, 15:52</time></span><div class='quote '>Само по себе введение новой функции - это минус к читаемости программы, как и введение любого нового объекта.</div></div><br>
зы. категорически не согласен.<br>
 представь тебе надо пощитать злую формулу..<br>
и есть выбор между<br>
<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">y = CountZlo(x);</div></ol></div></div></div></div><br>
<br>
и<br>
<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">y = sqrt(x*66 -77 %x -94 +x*cos(x+7));</div></ol></div></div></div></div><br>
<br>
что будет читаемее? <br>
<br>
<span class="tag-color tag-color-named" data-value="gray" style="color: gray"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2006-02-26T16:17:06+00:00">26.02.06, 16:17</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=9088&view=findpost&p=1025584'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>BlackSnake &#064; <time class="tag-quote__quoted-time" datetime="2006-02-24T15:28:41+00:00">24.02.06, 15:28</time></span><div class='quote '>в time-critical функциях это ОЧЕНЬ оправдано, т.к. вызов функции (даже из этого проекта) занимает достаточно много времени. </div></div><br>
хорошо написанные функции станут встраиваемыми ,и вызова не будет вообще.<br>
и даже если он будет то push, pop,call,ret особой роли в производительности не играют.<br>
если уж думать о таких вещах -- то проще прогить на асме.]]></description>
        <author>LuckLess</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=9088&amp;view=findpost&amp;p=1027358</guid>
        <pubDate>Sun, 26 Feb 2006 15:52:05 +0000</pubDate>
        <title>Нелюбовь к goto</title>
        <link>https://forum.sources.ru/index.php?showtopic=9088&amp;view=findpost&amp;p=1027358</link>
        <description><![CDATA[nvm: Использование goto и размер функций - лишь косвенные признаки структурированности кода.<br><br>Само по себе введение новой функции - это минус к читаемости программы, как и введение любого нового объекта. Поэтому функцию вводить оправдано, только если плюсы перевешивают. Золотая середина здесь в каждом конкретном случае своя.<br>..Но список функций на 2 экрана часто гораздо менее читаем, чем функция на 2 экрана (потому что для функций подразумевается некоторый сценарий их взаимодействия, который из самого списка никак не виден, в то время как код имеет логику).<br><br>При этом в разный языках оптимальный размер функций разный. Так в Паскале он меньше, поскольку Паскаль допускает локальные функции, но не допускает переменных в блоке. В С - соответствено больше, поскольку функцию можно разбить на полностью изолированные блоки. Правда, в языке С не хватает прагмы отмены видимости глобальных переменных в локальном блоке.]]></description>
        <author>nvm</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=9088&amp;view=findpost&amp;p=1025891</guid>
        <pubDate>Fri, 24 Feb 2006 22:29:56 +0000</pubDate>
        <title>Нелюбовь к goto</title>
        <link>https://forum.sources.ru/index.php?showtopic=9088&amp;view=findpost&amp;p=1025891</link>
        <description><![CDATA[BlackSnake: <strong class='tag-b'>Ho Im</strong>, скажем так: разобраться в чужом коде часто нелегко, но зависит это не от длинны функций, а ОТ СТИЛЯ ВООБЩЕ.<br>
Грамотно комментированный линейный код намного понятнее, чем сотни плохо комментированных функций.<br>
<br>
<span class="tag-color tag-color-named" data-value="gray" style="color: gray">короче, народ, надоело мне с вами спорить... и вааще, здесь не место для холивара. кто хочет продолжать - в холиварах есть тема про goto, там поддержу беседу...</span>]]></description>
        <author>BlackSnake</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=9088&amp;view=findpost&amp;p=1025847</guid>
        <pubDate>Fri, 24 Feb 2006 21:51:13 +0000</pubDate>
        <title>Нелюбовь к goto</title>
        <link>https://forum.sources.ru/index.php?showtopic=9088&amp;view=findpost&amp;p=1025847</link>
        <description><![CDATA[Ho Im: <div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>Ещё такие вещи оправданы в пхп-скриптах, когда необходимо всю функциональность разместить в одном файле.</div></div><br>
Патологоанатому расскажешь, хорошо? Мне хочется удушить своего бывшего сотрудника, оставившего на меня одну такую макаронную фабрику.]]></description>
        <author>Ho Im</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=9088&amp;view=findpost&amp;p=1025584</guid>
        <pubDate>Fri, 24 Feb 2006 15:28:41 +0000</pubDate>
        <title>Нелюбовь к goto</title>
        <link>https://forum.sources.ru/index.php?showtopic=9088&amp;view=findpost&amp;p=1025584</link>
        <description><![CDATA[BlackSnake: <div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <span class='tag-quote__quote-info'>Kheor, 24.02.2006, 11:00:52, 1025261</span><div class='quote '>- убили функции по 800 строк</div></div>в time-critical функциях это ОЧЕНЬ оправдано, т.к. вызов функции (даже из этого проекта) занимает достаточно много времени. Ещё такие вещи оправданы в пхп-скриптах, когда необходимо всю функциональность разместить в одном файле.<br>
<br>
<br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <span class='tag-quote__quote-info'>Kheor, 24.02.2006, 11:00:52, 1025261</span><div class='quote '>- тут приводился пример case и говорилось, почему же не заменить break на goto + label, это какое-то программирование недовысокого уровня получается. </div></div><br>
речь шла не о том, чтоб так писАть, а о том, что с с точки зрения компилера это АБСОЛЮТНО идентичные вещи, просто написанные разными буквами.<br>
<br>
<br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <span class='tag-quote__quote-info'>Kheor, 24.02.2006, 11:00:52, 1025261</span><div class='quote '>Ведь вроде бы защитники goto кричали, про убогость неиспользование всех возможностей языка. </div></div>ну, я никогда не стану пользоваться какой-то возможностью языка, просто потому, что она есть, если она мне не нужна :)]]></description>
        <author>BlackSnake</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=9088&amp;view=findpost&amp;p=1025261</guid>
        <pubDate>Fri, 24 Feb 2006 09:00:52 +0000</pubDate>
        <title>Нелюбовь к goto</title>
        <link>https://forum.sources.ru/index.php?showtopic=9088&amp;view=findpost&amp;p=1025261</link>
        <description><![CDATA[Kheor: Решил сутра почитать какой-нить холивар, позабавило)<br>А теперь немного по теме:<br>- убили функции по 800 строк<br>- сам использовал goto только для выхода из большого кол-ва вложенных циклов, сейчас в основном на java пишу, где goto слово, конечно, зарезервированное, но благо не компилящееся. Ибо сделали нормальный способ эти циклы покинуть.<br>- тут приводился пример case и говорилось, почему же не заменить break на goto + label, это какое-то программирование недовысокого уровня получается. Ведь вроде бы защитники goto кричали, про убогость неиспользование всех возможностей языка. К тому ж если так тяготеете к безусловным переходом и расшифровкой того, что было выделено в отдельный оператор (как continue, break, etc.),  пишите на асме, вам никто слово не скажет. :D]]></description>
        <author>Kheor</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=9088&amp;view=findpost&amp;p=1025039</guid>
        <pubDate>Thu, 23 Feb 2006 21:31:37 +0000</pubDate>
        <title>Нелюбовь к goto</title>
        <link>https://forum.sources.ru/index.php?showtopic=9088&amp;view=findpost&amp;p=1025039</link>
        <description><![CDATA[Ho Im: <div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>a1, a2, b1, b2 -- вовсе не обязательно константы</div></div><br>
Это не имеет значения. Можешь убедиться, что для всех возможных значений a* и b* функции выполняют одинаковое действие.<br>
<br>
Кстати о топике. Еще я вижу смысл в goto в том случае, если интерпретатор не имеет понятия о хвостовых вызовах, а &quot;наглядная&quot; в таких случаях рекурсия отъедает слишком много памяти. Тогда метка в самом начале функции и понеслась...]]></description>
        <author>Ho Im</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=9088&amp;view=findpost&amp;p=1025036</guid>
        <pubDate>Thu, 23 Feb 2006 21:19:24 +0000</pubDate>
        <title>Нелюбовь к goto</title>
        <link>https://forum.sources.ru/index.php?showtopic=9088&amp;view=findpost&amp;p=1025036</link>
        <description><![CDATA[Gregory Petrosyan: a1, a2, b1, b2 -- вовсе не обязательно константы, кроме того, после elif a2 и до cleanup() вполне может идти ещё какой-то код, etc etc etc. Само собой, этот пример не несёт никакого  _практичесого_  смысла, его единственная цель -- донести до людей идею о том, что при наличии nested functions значительная область применения goto переходит, вполне естественным образом, к этим самым вложенным функциям.]]></description>
        <author>Gregory Petrosyan</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=9088&amp;view=findpost&amp;p=1025029</guid>
        <pubDate>Thu, 23 Feb 2006 21:02:13 +0000</pubDate>
        <title>Нелюбовь к goto</title>
        <link>https://forum.sources.ru/index.php?showtopic=9088&amp;view=findpost&amp;p=1025029</link>
        <description><![CDATA[Ho Im: А так разве не проще?<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">def f():</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; def g(): do stuff</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; def h(): do other stuff</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; def cleanup(): do cleanups &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; if (a and a1): g()</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; elif (b and b1): h()</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; else: cleanup()</div></ol></div></div></div></div>]]></description>
        <author>Ho Im</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=9088&amp;view=findpost&amp;p=1024751</guid>
        <pubDate>Thu, 23 Feb 2006 14:28:44 +0000</pubDate>
        <title>Нелюбовь к goto</title>
        <link>https://forum.sources.ru/index.php?showtopic=9088&amp;view=findpost&amp;p=1024751</link>
        <description><![CDATA[Gregory Petrosyan: Кстати, некоторые языки поддерживают nested functions. Для них ИМХО goto не нужен. Пример:<br>
<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">def f():</div><div class="code_line">&nbsp;&nbsp; &nbsp;def g(): do_stuff</div><div class="code_line">&nbsp;&nbsp; &nbsp;def h(): do_some_other_stuff</div><div class="code_line">&nbsp;&nbsp; &nbsp;def cleanup(): perform_cleanup</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;if a:</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;if a1:</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;g()</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;elif a2:</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;cleanup()</div><div class="code_line">&nbsp;&nbsp; &nbsp;elif b:</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;if b1:</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;h()</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;elif b2:</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;cleanup()</div><div class="code_line">&nbsp;&nbsp; &nbsp;else:</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;cleanup()</div></ol></div></div></div></div>]]></description>
        <author>Gregory Petrosyan</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=9088&amp;view=findpost&amp;p=1024557</guid>
        <pubDate>Thu, 23 Feb 2006 10:37:01 +0000</pubDate>
        <title>Нелюбовь к goto</title>
        <link>https://forum.sources.ru/index.php?showtopic=9088&amp;view=findpost&amp;p=1024557</link>
        <description><![CDATA[SCINER: <div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>часть:<br>
<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">Case 34, 39</div><div class="code_line">&nbsp;&nbsp; If OpenQuote &#60;&#62; B(i) Then GoTo CASE_ELSE</div><div class="code_line">&nbsp;&nbsp; OpenQuote = B(i)</div></ol></div></div></div></div><br>
<br>
в приведённом примере, ненужна, и вообще бессмысленна<br>
уж лучше в Case Else проверку на равенство выполнить</div></div><br>
1. как ненужна :blink:<br>
если встретилась открывающая кавычка, тогда закрываем ее, иначе надо добавить в буфер параметра тега, а для этого чтобы не дублировать код необходимо переместиться на другую ветку Select Case&#39;а<br>
<br>
2. И как интересно выглядит проверка переменной OpenQuote в Select Case ?]]></description>
        <author>SCINER</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=9088&amp;view=findpost&amp;p=1024358</guid>
        <pubDate>Thu, 23 Feb 2006 04:36:44 +0000</pubDate>
        <title>Нелюбовь к goto</title>
        <link>https://forum.sources.ru/index.php?showtopic=9088&amp;view=findpost&amp;p=1024358</link>
        <description><![CDATA[Ho Im: <div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '><strong class='tag-b'>асс</strong>мом</div></div><br>
Таки по Фрейду :)<br>
<br>
Я не знаю, очень ли ты внимательно читал сорцы ядра Linux, но там есть правило: если функция больше 50 строк, переписать так, чтобы было меньше, а если нельзя, то написать объяснительную с доказательством, что иначе не получится. Линус, тот самый Линус, которому на мнение Вирта плевать и который оправдывает goto, утверждает, что ему искренне влом разбираться с неструктурированным кодом.<br>
<br>
goto в коде ядра обычно стоят там, где сам по себе код устаканен (так, что рефакторить его наверняка не придется), и где остальные практики просто не имеют смысла. Тем более, у нас там задействовано системное программирование, оно осложнено несколько более другими понятиями.<br>
<br>
С другой стороны, перл и пхп позволяют выйти из цикла на любой уровень вложенности. С пхп, если мне предстоит писать гигантский switch, я его никогда не пишу, а вместо этого создаю много функций и вызываю их по табличке. Кстати, я когда-то тоже асмом баловался, так что понятие &quot;таблица переходов&quot; очень оказалось кстати. А это нам дает удобство тестирования (как хочешь, так юнит-тесты и дробишь), и удобство рефакторинга -- перестраивай вызовы функций как хочешь, а сами функции, если они работают как надо, рефакторить не надо вообще. Использование goto лишает напрочь код такой гибкости.]]></description>
        <author>Ho Im</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=9088&amp;view=findpost&amp;p=1024350</guid>
        <pubDate>Thu, 23 Feb 2006 03:46:06 +0000</pubDate>
        <title>Нелюбовь к goto</title>
        <link>https://forum.sources.ru/index.php?showtopic=9088&amp;view=findpost&amp;p=1024350</link>
        <description><![CDATA[BlackSnake: <div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <span class='tag-quote__quote-info'>Gregory Petrosyan, 23.02.2006, 01:08:25, 1024283</span><div class='quote '>BlackSnake, а вы не с ЛОРа ли будете с такой безапелляционностью, самоуверенностью и лексикой? </div></div><br>
<span class='tag-size' data-value='8' style='font-size:8pt;'>нет.<br>
1. безапелляционность??? наоборот, я - то сторонник свободного подхода... это некоторые граждане тут <em class='tag-i'>безапелляционно </em> орут &quot;goto плохо&quot;... а я смотрю на проблему спокойно, хочу, буду юзать goto, нехочу - обойдусь без него... в каждом конкретном случае я рашаю &quot;по месту&quot;...<br>
(зы: просмотрев свои сорцы за последние месяцы, не нашёл ни одного goto. но это не значит, что &quot;гото мастдай&quot;...)<br>
<br>
2. самоуверенность? отсутствует. есть совершенно нормальная (не чрезмерная) уверенность в себе. Я вовсе не считаю себя правым всегда и во всём, как, например, один человек с явно китайско-вьетнамским именем :) Я живой человек, иногда я ошибаюсь, иногда мои сведения неточны, и я признаю свои ошибки, когда узнаю о них. Но есть темы, скаждем так, религиозного плана, в котрых ни я, ни мои оппоненты не могут ДОКАЗАТЬ свою правоту. вопрос &quot;goto or not goto&quot; относится как раз к этим темам. <br>
<br>
3. лексика? что не так в моей лексике?</span><br>
<span class="tag-color tag-color-named" data-value="gray" style="color: gray"><strong class='tag-b'>Ho Im</strong>, я тебя уважаю, но ты совершенно невыносимый тип.</span><br>
<br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <span class='tag-quote__quote-info'>Ho Im, 23.02.2006, 03:07:01, 1024332</span><div class='quote '>Недопрограммистов, пишущих функции по 800 строк, надо рефакторить на пилораме. Чтобы другим неповадно было. Почему? Чтобы такие команде день не портили, ежели им придется в нормальном коллективе работать.</div></div><br>
Ho Im, почитай сорцы ядра твоей любимой ОСи, там и не такое есть.<br>
<br>
Реально, такие длинные функции для меня всё-таки не правило, а исключение, и применяю я их, как уже говорилось, только в маленьких проектах, ибо там в этом есть смысл. В больших - действительно, такие вещи применять смысла <em class='tag-i'>обычно</em> нет.<br>
<br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <span class='tag-quote__quote-info'>Ho Im, 23.02.2006, 03:07:01, 1024332</span><div class='quote '>Ради Аллаха, не требуй только с такой &quot;гениальностью&quot; повысить тебе зарплату, если хочешь остаться в живых при нормальном начальнике. Ибо твоя гениальность не гребет никого, если код пишет более одного человека. </div></div>свой уровень, как программерский, так и IQ, я считаю <em class='tag-i'>средним</em> (т.е. неглуп, но не гений :)), но человек, которому тяжело понять пару сотен строк относительно линейного кода, на мой взгляд, стоит на лестнице развития где-то между лягушкой и ёжиком. ниже только те, кто считают грамотное комментирование кода излишеством.<br>
<br>
насчёт &quot;повысить зарплату&quot; - уже второй год, слава богу, не работодатель решает, хочет ли он меня нанять, а я решаю, хочу ли на него работать... Я работаю с командой, которая полностью разделяет мои взгляды, и ставит на первое место собственное удобство, а не абстрактные &quot;правила&quot; (это не означает нигелизма, просто отсутствие комплексов типа &quot;goto юзать нельзя&quot;. если это экономит рантайм или объём - значит можно. Отдельно хочу добавить, что, возможно, столь спокойное отношение к goto происходит от наличия некоторого опыта работы с ассмом, что накладывает нокоторый отпечаток на стиль программинга.)]]></description>
        <author>BlackSnake</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=9088&amp;view=findpost&amp;p=1024338</guid>
        <pubDate>Thu, 23 Feb 2006 02:09:40 +0000</pubDate>
        <title>Нелюбовь к goto</title>
        <link>https://forum.sources.ru/index.php?showtopic=9088&amp;view=findpost&amp;p=1024338</link>
        <description><![CDATA[Shaggy: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=9088&view=findpost&p=1024045'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>SCINER &#064; <time class="tag-quote__quoted-time" datetime="2006-02-22T17:37:06+00:00">22.02.06, 17:37</time></span><div class='quote '><div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">Sub Parce(B() As Byte)</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;Dim i As Integer</div><div class="code_line">&nbsp;&nbsp;Dim OpenQuote As Byte</div><div class="code_line">&nbsp;&nbsp;Dim Pos As Long</div><div class="code_line">&nbsp;&nbsp;Dim Buffer() As Byte</div><div class="code_line">&nbsp;&nbsp;</div><div class="code_line">&nbsp;&nbsp;ReDim Buffer(UBound(B))</div><div class="code_line">&nbsp;&nbsp;</div><div class="code_line">&nbsp;&nbsp;For i = 0 To UBound(B)</div><div class="code_line">&nbsp;&nbsp; &nbsp;Select Case B(i)</div><div class="code_line">&nbsp;&nbsp; &nbsp;Case 34, 39</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;If OpenQuote &#60;&#62; B(i) Then GoTo CASE_ELSE</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;OpenQuote = B(i)</div><div class="code_line">&nbsp;&nbsp; &nbsp;Case 60</div><div class="code_line">&nbsp;&nbsp; &nbsp;Case 62</div><div class="code_line">&nbsp;&nbsp; &nbsp;Case Else</div><div class="code_line">CASE_ELSE:</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;Buffer(Pos) = B(i)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;Pos = Pos + 1</div><div class="code_line">&nbsp;&nbsp;Next</div><div class="code_line">&nbsp;</div><div class="code_line">End Sub</div></ol></div></div></div></div><br>
<br>
Т.е. суть, как перейти с одного ветвления select case в другой ???<br>
Без нагрузки процессора лишними условиями&#33; т.к. для парсера время критично.</div></div><br>
<br>
часть:<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">Case 34, 39</div><div class="code_line">&nbsp;&nbsp; If OpenQuote &#60;&#62; B(i) Then GoTo CASE_ELSE</div><div class="code_line">&nbsp;&nbsp; OpenQuote = B(i)</div></ol></div></div></div></div><br>
в приведённом примере, ненужна, и вообще бессмысленна<br>
уж лучше в Case Else проверку на равенство выполнить<br>
<br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>а не тратить время, изобретая путь через ж-пу, зато без него</div></div><br>
goto ж0№а  :lol:]]></description>
        <author>Shaggy</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=9088&amp;view=findpost&amp;p=1024332</guid>
        <pubDate>Thu, 23 Feb 2006 01:07:01 +0000</pubDate>
        <title>Нелюбовь к goto</title>
        <link>https://forum.sources.ru/index.php?showtopic=9088&amp;view=findpost&amp;p=1024332</link>
        <description><![CDATA[Ho Im: <div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>BlackSnake, а вы не с ЛОРа ли будете с такой безапелляционностью, самоуверенностью и лексикой?<br>
</div></div><br>
Судя по холивара, он, наверное, с ВОРа -- windows.org.ru, буде такой появится.<br>
<br>
Недопрограммистов, пишущих функции по 800 строк, надо рефакторить на пилораме. Чтобы другим неповадно было. Почему? Чтобы такие команде день не портили, ежели им придется в нормальном коллективе работать.<br>
<br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>удобство чтения - бред. как я уже говорил, я в любом коде легко разбираюсь, если он написан на знакомом мне языке и снабжён грамотными комментами, и я очень неуважаю так называемых &quot;программистов&quot;, которые не то что свой код не умеют грамотно писать, а даже в готовом разобраться не могут.</div></div><br>
Ради Аллаха, не требуй только с такой &quot;гениальностью&quot; повысить тебе зарплату, если хочешь остаться в живых при нормальном начальнике. Ибо твоя гениальность не гребет никого, если код пишет более одного человека.]]></description>
        <author>Ho Im</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=9088&amp;view=findpost&amp;p=1024283</guid>
        <pubDate>Wed, 22 Feb 2006 23:08:25 +0000</pubDate>
        <title>Нелюбовь к goto</title>
        <link>https://forum.sources.ru/index.php?showtopic=9088&amp;view=findpost&amp;p=1024283</link>
        <description><![CDATA[Gregory Petrosyan: BlackSnake, а вы не с ЛОРа ли будете с такой безапелляционностью, самоуверенностью и лексикой?]]></description>
        <author>Gregory Petrosyan</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=9088&amp;view=findpost&amp;p=1024265</guid>
        <pubDate>Wed, 22 Feb 2006 22:44:08 +0000</pubDate>
        <title>Нелюбовь к goto</title>
        <link>https://forum.sources.ru/index.php?showtopic=9088&amp;view=findpost&amp;p=1024265</link>
        <description><![CDATA[BlackSnake: <div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <span class='tag-quote__quote-info'>Adil, 22.02.2006, 17:06:02, 1023927</span><div class='quote '>a) Удобно читать - что означает &quot;удобно отлаживать&quot; и удобно &quot;сопровождать&quot;. После того, как мне пришлось поучаствовать в паре проектов по отладке/сопровождению &quot;чужого&quot; кода, я ставлю это на первое место. Да и в своем коде, через пару лет после написания ... ой-ой-ой.<br>
б) оптимизировать выполнение кода (но только если это на самом деле необходимо - иначе - ассемблер в руки, или может в машинных кодах?)<br>
в) было удобно писАть.<br>
Если на а) стояло бы &quot;оптимизировать выполнение кода&quot; языки высокого уровня просто бы никогда не появились, про интерпретаторы я вообще молчу.</div></div><br>
<br>
удобство чтения - бред. как я уже говорил, я в любом коде легко разбираюсь, если он написан на знакомом мне языке и снабжён грамотными комментами, и я очень неуважаю так называемых &quot;программистов&quot;, которые не то что свой код не умеют грамотно писать, а даже в готовом разобраться не могут. Свой код - проверял пару дней назад: читал свои сорцы 98 года... нашел несколько неудачных, на мой нынешний взгляд, решений, разобрался легко, несмотря даже на то, что ТОГДА мне вообще наср@ть было на структурность и ооп.<br>
<br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <span class='tag-quote__quote-info'>Lucifer, 22.02.2006, 21:51:51, 1024160</span><div class='quote '>Либо ты видиш этой смысловой нагрузки. Я говорю о языках, поддерживающие ООП, где функция длинной в два экрана - НОНСЕНС</div></div><br>
не хочу грубить, но ты заблуждаешься. если бы мне не было жалко трафика - дал бы пару сотен примеров функций длинной в два экрана и больше :)<br>
никакой ООП не в состоянии уменьшить код функции. <br>
<br>
насчёт ооп - большей тупости, чем &quot;ООП ради ООП&quot; даже представить не могу. всё хорошо в меру. я никогда не стану выделять что-то в объект, если с точки зрения логики оно не может быть ПРЕДСТАВЛЕНО объектом. не надо забывать, что ООП служит не для структурирования как такового, а для наглядного обозначения структуры и <strong class='tag-b'>связей</strong>.<br>
<br>
<br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <span class='tag-quote__quote-info'>Adil, 22.02.2006, 17:06:02, 1023927</span><div class='quote '><div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <span class='tag-quote__quote-info'>BlackSnake, 22.02.06, 03:42</span><div class='quote '>(для Win32 это означает, что все переменные,какие удастся, описываются как Long. Это даёт до 7% прироста эффективности.), окажутся недостаточными) </div></div>Что-то это как-то поверхностно звучит, точнее, не по-боюсь этого слова, - по-дилетански. Скорее &quot;для 32-х разрядной ОС на 32-разрядном процессоре, для поддерживающего такой процессор компиляторе и то - не всегда &quot;. Например, для той же win32 на 64-битном процессоре бывает оптимальнее использовать __int64... и то - не всегда &quot;.</div></div><br>
вин32 на проце64 - изврат. <br>
<br>
просто я писал не для дилетантов, а для понимающих людей... поэтому ПОДРАЗУМЕВАЕТСЯ, что речь идёт о 32х разрядной ОС, работающей на 32х разрядном процессоре, и само собой, речь о программе, скомпилированной 32х разрядным компилером.<br>
<br>
насчёт вин32 на 64-битном процессоре - непроверял и пока не собираюсь. года через два-три, не раньше.<br>
<br>
<br>
Итак, фанатам борьбы с GOTO - слив засчитан, т.к. аргументов не приведено.<br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <span class='tag-quote__quote-info'>Adil, 22.02.2006, 17:06:02, 1023927</span><div class='quote '>Закоренелые - остнуться, а &quot;сомневающиеся&quot; будут смотреть на аргументы. Единственным стОящим аргументом за goto было подмена break в switch, но Люцифер его опроверг одним мановением руки . Про удобство использования goto в функциях по 800 строк, принимая во внимание мой пункт а), я лучше по-молчу, чтоб не прослыть хамом. </div></div><br>
твой пункт а) во внимание принят быть не может, ибо ты защищаешь неграмотных.  незачот.<br>
функции по 800 строк, если тебе доводилось писать проги хотябы в 50 000 строк, не кажутся большими. незачот.<br>
<br>
настоящий программер  пишет так, как считает правильным в каждой конкретной ситуации.<br>
если надо использовать goto - то НАДО его  использовать, а не тратить время, изобретая путь через ж-пу, зато без него.]]></description>
        <author>BlackSnake</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=9088&amp;view=findpost&amp;p=1024146</guid>
        <pubDate>Wed, 22 Feb 2006 19:36:05 +0000</pubDate>
        <title>Нелюбовь к goto</title>
        <link>https://forum.sources.ru/index.php?showtopic=9088&amp;view=findpost&amp;p=1024146</link>
        <description><![CDATA[nvm: Эх, сейчас это разве goto - так, слабое подобие.<br>Вот раньше в Паскале действительно goto был всем gotoям goto&#33;<br>Это было круче, чем нынешний exception (удивляюсь, как его могли реализовать при тех компиляторах).<br><br>..Если кто помнит, можно было из функций делать переход вовне через любое число уровней, причем не только вперед, но и назад.<br>Вот против такого goto тогда в основном и выступали.. поскольку продолжение выполнения безобидного x:=f(y) можно было ожидать на любой метке.]]></description>
        <author>nvm</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=9088&amp;view=findpost&amp;p=1024045</guid>
        <pubDate>Wed, 22 Feb 2006 17:37:06 +0000</pubDate>
        <title>Нелюбовь к goto</title>
        <link>https://forum.sources.ru/index.php?showtopic=9088&amp;view=findpost&amp;p=1024045</link>
        <description><![CDATA[SCINER: Как-то писал парсер HTML кода, в самой процедуре парсирования у меня есть несколько безусловных переходов.<br>
Вот примерный код с этого парсера:<br>
<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">Sub Parce(B() As Byte)</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;Dim i As Integer</div><div class="code_line">&nbsp;&nbsp;Dim OpenQuote As Byte</div><div class="code_line">&nbsp;&nbsp;Dim Pos As Long</div><div class="code_line">&nbsp;&nbsp;Dim Buffer() As Byte</div><div class="code_line">&nbsp;&nbsp;</div><div class="code_line">&nbsp;&nbsp;ReDim Buffer(UBound(B))</div><div class="code_line">&nbsp;&nbsp;</div><div class="code_line">&nbsp;&nbsp;For i = 0 To UBound(B)</div><div class="code_line">&nbsp;&nbsp; &nbsp;Select Case B(i)</div><div class="code_line">&nbsp;&nbsp; &nbsp;Case 34, 39</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;If OpenQuote &#60;&#62; B(i) Then GoTo CASE_ELSE</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;OpenQuote = B(i)</div><div class="code_line">&nbsp;&nbsp; &nbsp;Case 60</div><div class="code_line">&nbsp;&nbsp; &nbsp;Case 62</div><div class="code_line">&nbsp;&nbsp; &nbsp;Case Else</div><div class="code_line">CASE_ELSE:</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;Buffer(Pos) = B(i)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;Pos = Pos + 1</div><div class="code_line">&nbsp;&nbsp;Next</div><div class="code_line">&nbsp;</div><div class="code_line">End Sub</div></ol></div></div></div></div><br>
<br>
Т.е. суть, как перейти с одного ветвления select case в другой ???<br>
Без нагрузки процессора лишними условиями&#33; т.к. для парсера время критично.]]></description>
        <author>SCINER</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=9088&amp;view=findpost&amp;p=1023927</guid>
        <pubDate>Wed, 22 Feb 2006 15:06:02 +0000</pubDate>
        <title>Нелюбовь к goto</title>
        <link>https://forum.sources.ru/index.php?showtopic=9088&amp;view=findpost&amp;p=1023927</link>
        <description><![CDATA[Adil: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=9088&view=findpost&p=1023297'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>BlackSnake &#064; <time class="tag-quote__quoted-time" datetime="2006-02-21T23:42:36+00:00">21.02.06, 23:42</time></span><div class='quote '>И я искренне считаю, что писАть надо так, чтобы: а) было удобно писаАть. б) оптимизировать выполнение кода.</div></div>a) Удобно <strong class='tag-b'>читать</strong> - что означает &quot;удобно отлаживать&quot; и удобно &quot;сопровождать&quot;. После того, как мне пришлось поучаствовать в паре проектов по отладке/сопровождению &quot;чужого&quot; кода, я ставлю это на первое место. Да и в своем коде, через пару лет после написания ... ой-ой-ой.<br>
б) оптимизировать выполнение кода (но только если это <strong class='tag-b'>на самом деле</strong> необходимо - иначе - ассемблер в руки, или может в машинных кодах?)<br>
в) было удобно писАть.<br>
Если на а) стояло бы &quot;оптимизировать выполнение кода&quot; языки высокого уровня просто бы никогда не появились, про интерпретаторы я вообще молчу.<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=9088&view=findpost&p=1023297'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>BlackSnake &#064; <time class="tag-quote__quoted-time" datetime="2006-02-21T23:42:36+00:00">21.02.06, 23:42</time></span><div class='quote '>И если ради оптимизации time-critical участка мне придётся отказаться от ООП, и соорудить код, где каждая пятая строка - goto, а функции развёрнуты в периодики, я не буду колебаться ни секунды.</div></div>Лучше хотя бы на секунду задуматься - &quot;а это <strong class='tag-b'>на самом деле</strong> time-critical?&quot; Часто натыкAлся на код по приему нек. информации по нек. соединению, очень-очень &quot;таймекритично соптимизированный&quot;, после которого шел код по обработке этой информации, который просто физически не успевал да и не мог поспеть за этим оптимизированным потоком данных -  и кому было нужно торопиться?<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=9088&view=findpost&p=1023297'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>BlackSnake &#064; <time class="tag-quote__quoted-time" datetime="2006-02-21T23:42:36+00:00">21.02.06, 23:42</time></span><div class='quote '>(для Win32 это означает, что все переменные,какие удастся, описываются как Long. Это даёт до 7% прироста эффективности.), окажутся недостаточными) </div></div>Что-то это как-то поверхностно звучит, точнее, не по-боюсь этого слова, - по-дилетански. Скорее &quot;для 32-х разрядной ОС на 32-разрядном процессоре, для поддерживающего такой процессор компиляторе и то - не всегда :)&quot;.  Например, для той же win32 на 64-битном процессоре бывает оптимальнее использовать __int64...  и то - не всегда :)&quot;.<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=9088&view=findpost&p=1023327'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Dr._S &#064; <time class="tag-quote__quoted-time" datetime="2006-02-22T02:10:49+00:00">22.02.06, 02:10</time></span><div class='quote '>Мне кажется, что это бессмысленный спор, в итоге каждый останется при своем мнении и никто никому ничего не докажет, да и в этом нет смысла.</div></div>Закоренелые - остнуться, а &quot;сомневающиеся&quot; будут смотреть на аргументы. Единственным стОящим аргументом за goto было подмена break в switch, но Люцифер его опроверг одним мановением руки :). Про удобство использования goto в функциях по 800 строк, принимая во внимание мой пункт а), я лучше по-молчу, чтоб не прослыть хамом.]]></description>
        <author>Adil</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=9088&amp;view=findpost&amp;p=1023327</guid>
        <pubDate>Wed, 22 Feb 2006 02:10:49 +0000</pubDate>
        <title>Нелюбовь к goto</title>
        <link>https://forum.sources.ru/index.php?showtopic=9088&amp;view=findpost&amp;p=1023327</link>
        <description><![CDATA[Dr._S: <strong class='tag-b'>BlackSnake</strong>, <div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>видишь ли в чём дело... эта метка ЕСТЬ ВСЕГДА (просто для программера она неопределена, только для компилятора/интерпретатора), и break; - это всего лишь СИНОНИМ goto end_case_label.</div></div> я уже про это писал, что если накатать две проги, одинаковые по функциональности, откомпилить, а птом дизассемблировать и посмотреть тот участок, где есть и где нету Goto, то они ничем не будут отличаться.<br>
<br>
Пример: <br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">&nbsp;&nbsp; Dim i As Integer, j As Integer</div><div class="code_line">&nbsp;&nbsp; If Second(Time) / 2 &#60;&#62; Int(Second(Time) / 2) Then GoTo 1</div><div class="code_line">&nbsp;&nbsp; For i = 1 To 100</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;j = j + i</div><div class="code_line">&nbsp;&nbsp; Next i</div><div class="code_line">1:</div><div class="code_line">&nbsp;&nbsp; MsgBox j</div></ol></div></div></div></div><br>
<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">&nbsp;&nbsp; Dim i As Integer, j As Integer</div><div class="code_line">&nbsp;&nbsp; If Second(Time) / 2 = Int(Second(Time) / 2) Then</div><div class="code_line">&nbsp;&nbsp; &nbsp; For i = 1 To 100</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; j = j + i</div><div class="code_line">&nbsp;&nbsp; &nbsp; Next i</div><div class="code_line">&nbsp;&nbsp; End If</div><div class="code_line">&nbsp;&nbsp; MsgBox j</div></ol></div></div></div></div><br>
<br>
Мне кажется, что это бессмысленный  спор, в итоге каждый останется при своем мнении и никто никому ничего не докажет, да и в этом нет смысла.]]></description>
        <author>Dr._S</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=9088&amp;view=findpost&amp;p=1023297</guid>
        <pubDate>Tue, 21 Feb 2006 23:42:36 +0000</pubDate>
        <title>Нелюбовь к goto</title>
        <link>https://forum.sources.ru/index.php?showtopic=9088&amp;view=findpost&amp;p=1023297</link>
        <description><![CDATA[BlackSnake: <div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <span class='tag-quote__quote-info'>Lucifer, 22.02.2006, 01:00:12, 1023281</span><div class='quote '>BlackSnake, а неписать такие длинный функции ты не пробовал? Мартин Файлер &quot;Рефакторинг&quot;.<br>
И мозги мне никто не промывал. </div></div><br>
<br>
насчёт длинных функций - я НИКОГДА не выделяю код в отдельную функцию, если это не несёт СМЫСЛОВОЙ НАГРУЗКИ, и если он непериодичен. более того, иногда я разворачиваю функции в периодический код, ради оптимизации ВЫПОЛНЕНИЯ.<br>
<br>
когда речь идёт о пхп, всё ещё сложнее... из-за отсутствия <strong class='tag-b'>goto</strong> нередко приходится идти на вообще немыслимые извращения, ради того, чтобы не набивать код чем-нить типа die();<br>
<hr><br>
вот недавний пример: скрипт, выполняющий ПОСЛЕДОВАТЕЛЬНОСТЬ действий (заполняешь форму, жмёшь сабмит, ЭТОТЖЕ скрипт обрабатывает результат и выдаёт другую форму, и так несколько раз.)...<br>
в конечном итоге я развернул его в структуру select case, по полученным данным определяющую, какую форму давать теперь, и выбирающую одну из функций, анализирующих данные и генерящих новую форму, но это было неправильной и ВЫНУЖДЕННОЙ мерой, нарушающей прЫнцЫпы структурного программинга и ДЕЙСТВИТЕЛЬНО затрудняющей разбор кода...<br>
Функция должна только анализировать данные и возвращать результат, а применение функции в качестве контейнера кода - вообще-то, изврат.<br>
<hr><br>
упомянутую книгу, к сожалению (а может и без сожаления, не прочитав не узнать), я даже не видел.<br>
<hr><br>
<br>
насчёт &quot;промывки мозгов&quot; - если ты пользуешься паскалем - значит промывали. Паскаль именно для этого и предназначен, почитай о истории языка. (об этом я уже говорил в соответствующем холиваре.)<br>
<hr><br>
Вообще же, сам я в состоянии разобратся в любом коде (разумеется, на знакомом языке), особенно если код грамотно комментирован. (в МОЁМ коде - не менее 10% - комменты.)<br>
И я искренне считаю, что писАть надо так, чтобы: а) было удобно писаАть. б) оптимизировать <span class='tag-u'>выполнение </span>кода.<br>
<br>
И если ради оптимизации time-critical участка мне придётся отказаться от ООП, и соорудить код, где каждая пятая строка - goto, а функции развёрнуты в периодики, я не буду колебаться ни секунды. (разумеется, только в том случае, если стандарные приёмы оптимизации, вроде кэширования свойств объектов и применения архитектурно-совместимых величин <span class="tag-color tag-color-named" data-value="gray" style="color: gray">(для Win32 это означает, что все переменные,какие удастся, описываются как Long. Это даёт до 7% прироста эффективности.)</span>, окажутся недостаточными)]]></description>
        <author>BlackSnake</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=9088&amp;view=findpost&amp;p=1023296</guid>
        <pubDate>Tue, 21 Feb 2006 23:34:06 +0000</pubDate>
        <title>Нелюбовь к goto</title>
        <link>https://forum.sources.ru/index.php?showtopic=9088&amp;view=findpost&amp;p=1023296</link>
        <description><![CDATA[Хакас: <strong class='tag-b'>BlackSnake</strong> 1200 строк - это сила..... Нельзя было на функции разбить?<br>
У меня лично (хоть я и не считаю себя хорошим программистом) больше 50-60 строк функция не занимает....<br>
И никаких проблем нету. И я почти уверен в том, что любую программу можно разбить на короткие функции.]]></description>
        <author>Хакас</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=9088&amp;view=findpost&amp;p=1023291</guid>
        <pubDate>Tue, 21 Feb 2006 23:24:29 +0000</pubDate>
        <title>Нелюбовь к goto</title>
        <link>https://forum.sources.ru/index.php?showtopic=9088&amp;view=findpost&amp;p=1023291</link>
        <description><![CDATA[Shaggy: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=9088&view=findpost&p=1023273'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>BlackSnake &#064; <time class="tag-quote__quoted-time" datetime="2006-02-21T22:46:57+00:00">21.02.06, 22:46</time></span><div class='quote '>и ты хочешь сказать, что это УДОБНЕЕ меток???</div></div><br>
НЕТ  :wacko: <br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=9088&view=findpost&p=1023273'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>BlackSnake &#064; <time class="tag-quote__quoted-time" datetime="2006-02-21T22:46:57+00:00">21.02.06, 22:46</time></span><div class='quote '>на 1200 строк выше, следующие две - примерно на 800 и 700 строк,</div></div><br>
такую функцию писать, а тем более отлаживать НЕ СТАНУ&#33;<br>
здоровье дороже]]></description>
        <author>Shaggy</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=9088&amp;view=findpost&amp;p=1023273</guid>
        <pubDate>Tue, 21 Feb 2006 22:46:57 +0000</pubDate>
        <title>Нелюбовь к goto</title>
        <link>https://forum.sources.ru/index.php?showtopic=9088&amp;view=findpost&amp;p=1023273</link>
        <description><![CDATA[BlackSnake: тебе никогда не приходилось набивать код такими комментами? а я такое и сам бывает пишу, и чужое часто вижу (прим: в релизах, даже в опен-сорсных, часто потёрта значительная часть каментов, которые были поставлены разработчиками &quot;для себя&quot;)<br>
<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">//это скобка от блока If в самом начале. если обращение</div><div class="code_line">//прямое, без &nbsp;субдомена, портал неактивен и выполнение</div><div class="code_line">//продолжается со строки, следующей за скобкой.</div><div class="code_line">}</div></ol></div></div></div></div><br>
<br>
вот ещё пример:<br>
<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">&nbsp;&nbsp; }</div><div class="code_line">&nbsp;&nbsp; echo &quot;&#60;/div&#62;&quot;;</div><div class="code_line">&nbsp;&nbsp;}</div><div class="code_line">&nbsp;}</div><div class="code_line">&nbsp;echo &quot;&#60;/div&#62;&quot;;</div><div class="code_line">}</div><div class="code_line">&nbsp;</div><div class="code_line">}}} else {</div></ol></div></div></div></div><br>
<br>
очень понятно, что где? Учти, что парная открывающая скобка от полследней закрывающей - на 1200 строк выше, следующие две - примерно на 800 и 700 строк, причём там (между 1й и 2й скобками ещё несколько циклов, два селекта и несколько ифов, каждый со своими наборами скобок)<br>
<br>
<strong class='tag-b'><span class="tag-color tag-color-named" data-value="red" style="color: red">и ты хочешь сказать, что это УДОБНЕЕ меток???</span></strong> :ph34r: <br>
<br>
Грустно... как людям паскальщики мозг промыли...]]></description>
        <author>BlackSnake</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=9088&amp;view=findpost&amp;p=1023270</guid>
        <pubDate>Tue, 21 Feb 2006 22:44:36 +0000</pubDate>
        <title>Нелюбовь к goto</title>
        <link>https://forum.sources.ru/index.php?showtopic=9088&amp;view=findpost&amp;p=1023270</link>
        <description><![CDATA[Shaggy: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=9088&view=findpost&p=1022722'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>BlackSnake &#064; <time class="tag-quote__quoted-time" datetime="2006-02-21T11:19:07+00:00">21.02.06, 11:19</time></span><div class='quote '>эта метка ЕСТЬ ВСЕГДА (просто для программера она неопределена, только для компилятора/интерпретатора), и break; - это всего лишь СИНОНИМ goto end_case_label.</div></div><br>
да, но ЯВУ позволяют абстрагироваться от деталей реализации<br>
пусть она и существует, но мне та этот счёт напрягаться не нужно, это головная боль компилятора<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=9088&view=findpost&p=1022722'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>BlackSnake &#064; <time class="tag-quote__quoted-time" datetime="2006-02-21T11:19:07+00:00">21.02.06, 11:19</time></span><div class='quote '>показывает, как плохо БЕЗ goto.</div></div><br>
 :) улыбнуло<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=9088&view=findpost&p=1022722'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>BlackSnake &#064; <time class="tag-quote__quoted-time" datetime="2006-02-21T11:19:07+00:00">21.02.06, 11:19</time></span><div class='quote '>или ты структурой case select не пользуешься?</div></div><br>
я Delphi`ст, там эти бряки не нужны совершенно :tong:]]></description>
        <author>Shaggy</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=9088&amp;view=findpost&amp;p=1022722</guid>
        <pubDate>Tue, 21 Feb 2006 11:19:07 +0000</pubDate>
        <title>Нелюбовь к goto</title>
        <link>https://forum.sources.ru/index.php?showtopic=9088&amp;view=findpost&amp;p=1022722</link>
        <description><![CDATA[BlackSnake: хмм... пока никто ничего ОБЪЕКТИВНОГО не сказал...<br>
<br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <span class='tag-quote__quote-info'>Dr._S, 21.02.2006, 12:17:11, 1022622</span><div class='quote '>В этом случае, на мой взгляд проще обойтись <span class="tag-color tag-color-named" data-value="blue" style="color: blue">break</span>;, чем лишняя метка. </div></div><br>
видишь ли в чём дело... эта метка ЕСТЬ ВСЕГДА (просто для программера она неопределена, только для компилятора/интерпретатора), и <span class="tag-color tag-color-named" data-value="blue" style="color: blue">break;</span> - это всего лишь СИНОНИМ <span class="tag-color tag-color-named" data-value="blue" style="color: blue">goto end_case_label</span>.<br>
<br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <span class='tag-quote__quote-info'>Shaggy, 21.02.2006, 11:28:15, 1022576</span><div class='quote '>а зачем? просто чтобы было?<br>
все какую-то синтетику, в качестве примеров приводят<br>
покажи кусок кода из реального проекта, где goto тебе помогло(сократило, улучшило читабельност кода и тд) </div></div><br>
это не синтетика, а кусок реального проекта :) только он ОБРАТНЫЙ, т.е. показывает, как плохо БЕЗ goto. (напомню, я про пхп говорил, а там goto если и есть, то в мануалах не объявлен)<br>
<br>
или ты структурой case select не пользуешься?<br>
<br>
имхо, далеко не самая читабельная вещь, особенно если растянуть её строк так на тысячу. (принципиально не выделяю бессмысленных функций)]]></description>
        <author>BlackSnake</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=9088&amp;view=findpost&amp;p=1022691</guid>
        <pubDate>Tue, 21 Feb 2006 11:01:51 +0000</pubDate>
        <title>Нелюбовь к goto</title>
        <link>https://forum.sources.ru/index.php?showtopic=9088&amp;view=findpost&amp;p=1022691</link>
        <description><![CDATA[Maks1986: <strong class='tag-b'>BlackSnake</strong><br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>кто сможет ВНЯТНО сказать, чем вот такой вариант был бы хуже</div></div><br>
Тем что придется писать &quot;goto end_select&quot;, что на 10 символов длиннее break :) Плюс, лишняя строчка с самой меткой...]]></description>
        <author>Maks1986</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=9088&amp;view=findpost&amp;p=1022622</guid>
        <pubDate>Tue, 21 Feb 2006 10:17:11 +0000</pubDate>
        <title>Нелюбовь к goto</title>
        <link>https://forum.sources.ru/index.php?showtopic=9088&amp;view=findpost&amp;p=1022622</link>
        <description><![CDATA[Dr._S: <strong class='tag-b'>Демо</strong>, <div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>Сразу заметно, что не сишник-)</div></div>да, не сишник, этого не знал, теперь понятно, уже почитал. В этом случае, на мой взгляд проще обойтись <span class="tag-color tag-color-named" data-value="blue" style="color: blue">break;</span>, чем лишняя метка.]]></description>
        <author>Dr._S</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=9088&amp;view=findpost&amp;p=1022576</guid>
        <pubDate>Tue, 21 Feb 2006 09:28:15 +0000</pubDate>
        <title>Нелюбовь к goto</title>
        <link>https://forum.sources.ru/index.php?showtopic=9088&amp;view=findpost&amp;p=1022576</link>
        <description><![CDATA[Shaggy: goto не использую, не возникает необходимости...<br>
только как временная мера...<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=9088&view=findpost&p=1022309'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>BlackSnake &#064; <time class="tag-quote__quoted-time" datetime="2006-02-21T03:00:35+00:00">21.02.06, 03:00</time></span><div class='quote '>switch (&#036;a){<br>
  case 1:<br>
     echo &quot;1&quot;;<br>
     goto end_select;<br>
  case 2:<br>
     echo &quot;2&quot;;<br>
     goto end_select;<br>
  default:<br>
     echo &quot;not 1, not 2.&quot;<br>
     goto end_select;<br>
}<br>
label end_select:</div></div><br>
а зачем? просто чтобы было?<br>
все какую-то синтетику, в качестве примеров приводят<br>
покажи кусок кода из реального проекта, где goto тебе помогло(сократило, улучшило читабельност кода и тд)]]></description>
        <author>Shaggy</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=9088&amp;view=findpost&amp;p=1022546</guid>
        <pubDate>Tue, 21 Feb 2006 09:12:50 +0000</pubDate>
        <title>Нелюбовь к goto</title>
        <link>https://forum.sources.ru/index.php?showtopic=9088&amp;view=findpost&amp;p=1022546</link>
        <description><![CDATA[shadeofgray: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=9088&view=findpost&p=1022414'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Демо &#064; <time class="tag-quote__quoted-time" datetime="2006-02-21T07:16:57+00:00">21.02.06, 07:16</time></span><div class='quote '>Блин, холивар продолжается</div></div><br>
Ну, пока всё идет достаточно спокойно. Главное - держите себя в руках, и модераторы вас не тронут :D]]></description>
        <author>shadeofgray</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=9088&amp;view=findpost&amp;p=1022414</guid>
        <pubDate>Tue, 21 Feb 2006 07:16:57 +0000</pubDate>
        <title>Нелюбовь к goto</title>
        <link>https://forum.sources.ru/index.php?showtopic=9088&amp;view=findpost&amp;p=1022414</link>
        <description><![CDATA[Демо: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=9088&view=findpost&p=1022350'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Dr._S &#064; <time class="tag-quote__quoted-time" datetime="2006-02-21T05:43:04+00:00">21.02.06, 05:43</time></span><div class='quote '>Ведь принцип работы Case, выполнять одно условие. Или я чего-то не догоняю.</div></div><br>
<br>
Сразу заметно, что не сишник-) <br>
<br>
<span class="tag-color tag-color-named" data-value="gray" style="color: gray"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2006-02-21T07:19:36+00:00">21.02.06, 07:19</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=9088&view=findpost&p=1022189'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Lucifer &#064; <time class="tag-quote__quoted-time" datetime="2006-02-20T20:20:21+00:00">20.02.06, 20:20</time></span><div class='quote '>И неудобстве сопровождения</div></div><br>
<br>
Совершенно голословное утверждение.<br>
Всякому фрукту свое время. В том числе и GoTo.<br>
Блин, холивар продолжается :lol:]]></description>
        <author>Демо</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=9088&amp;view=findpost&amp;p=1022350</guid>
        <pubDate>Tue, 21 Feb 2006 05:43:04 +0000</pubDate>
        <title>Нелюбовь к goto</title>
        <link>https://forum.sources.ru/index.php?showtopic=9088&amp;view=findpost&amp;p=1022350</link>
        <description><![CDATA[Dr._S: <strong class='tag-b'>BlackSnake</strong> <br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>switch (&#036;a){<br>
  case 1:<br>
     echo &quot;1&quot;;<br>
     goto end_select;<br>
  case 2:<br>
     echo &quot;2&quot;;<br>
     goto end_select;<br>
  default:<br>
     echo &quot;not 1, not 2.&quot;<br>
     goto end_select;<br>
}<br>
label end_select:</div></div><br>
зачем здесь Goto, если после Case идет эта метка <span class="tag-color tag-color-named" data-value="blue" style="color: blue">label end_select:</span>, ведь выполнится только что-то одно, что первое подойдет по условию, и сразу уйдет за пределы Case, на то, что стоит после него.<br>
Ведь принцип работы Case, выполнять одно условие. Или я чего-то не догоняю.]]></description>
        <author>Dr._S</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=9088&amp;view=findpost&amp;p=1022309</guid>
        <pubDate>Tue, 21 Feb 2006 03:00:35 +0000</pubDate>
        <title>Нелюбовь к goto</title>
        <link>https://forum.sources.ru/index.php?showtopic=9088&amp;view=findpost&amp;p=1022309</link>
        <description><![CDATA[BlackSnake: Хмм... Сам я <strong class='tag-b'>goto</strong> ПОЧТИ не юзаю, но <span class='tag-u'>глупо</span> считать него ненужным или тем более вредным(особенно если он ведёт на метку с толковым названием, типа extremal_error_exit :)).<br>
<br>
<span class="tag-color tag-color-named" data-value="gray" style="color: gray">Если кто-то (физически близко находящийся : )) мне скажет, что лучше написать <span class='tag-u'>лишних десять строк кода</span>, чем поставить <strong class='tag-b'>goto</strong> -- серьёзно рискует получить увечья. И не за наличие мнения по теме, а за то, что не сможет ответить за базар (т.е. обосновать своё высказывание)</span><br>
<br>
А вообще, здесь не место для флейма (да он и вовсе неуместен, надо просто банить тех кто немотивированно орёт &quot;<strong class='tag-b'>goto</strong> отстой&quot; : ) ), есть специальный холивар на эту тему.<br>
<br>
ЗЫ. И не надо мне говорить, что пять вложенных if, физически не помещающихся в один экран кода, <em class='tag-i'>нагляднее</em> <span class="tag-color tag-color-named" data-value="gray" style="color: gray">(даже звучит-то тупо...)</span>, чем 2 <strong class='tag-b'>goto</strong>, указывающих на одну и ту же метку.<br>
<br>
И ещё одно &quot;зы&quot;: Вот примерно так выглядит структура case select на пхп:<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">switch ($a){</div><div class="code_line">&nbsp;&nbsp;case 1:</div><div class="code_line">&nbsp;&nbsp; &nbsp; echo &quot;1&quot;;</div><div class="code_line">&nbsp;&nbsp; &nbsp; break;</div><div class="code_line">&nbsp;&nbsp;case 2:</div><div class="code_line">&nbsp;&nbsp; &nbsp; echo &quot;2&quot;;</div><div class="code_line">&nbsp;&nbsp; &nbsp; break;</div><div class="code_line">&nbsp;&nbsp;default:</div><div class="code_line">&nbsp;&nbsp; &nbsp; echo &quot;not 1, not 2.&quot;</div><div class="code_line">&nbsp;&nbsp; &nbsp; break;</div><div class="code_line">}</div></ol></div></div></div></div><br>
<br>
<span class="tag-color tag-color-named" data-value="red" style="color: red">так вот, пославлю <strong class='tag-b'>ПЛЮС </strong>тому, кто сможет <strong class='tag-b'>ВНЯТНО </strong>сказать, чем вот такой вариант был бы хуже</span> (синтаксис условный, это НЕ работает):<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">switch ($a){</div><div class="code_line">&nbsp;&nbsp;case 1:</div><div class="code_line">&nbsp;&nbsp; &nbsp; echo &quot;1&quot;;</div><div class="code_line">&nbsp;&nbsp; &nbsp; goto end_select;</div><div class="code_line">&nbsp;&nbsp;case 2:</div><div class="code_line">&nbsp;&nbsp; &nbsp; echo &quot;2&quot;;</div><div class="code_line">&nbsp;&nbsp; &nbsp; goto end_select;</div><div class="code_line">&nbsp;&nbsp;default:</div><div class="code_line">&nbsp;&nbsp; &nbsp; echo &quot;not 1, not 2.&quot;</div><div class="code_line">&nbsp;&nbsp; &nbsp; goto end_select;</div><div class="code_line">}</div><div class="code_line">label end_select:</div></ol></div></div></div></div><br>
<br>
разница только в том, что в оригинале слово <strong class='tag-b'>goto</strong> с переходом на <em class='tag-i'>подразумеваемую_метку</em> заменено специальным аналогом - словом break.<br>
Просто для того, чтоб не было <strong class='tag-b'>goto</strong>.]]></description>
        <author>BlackSnake</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=9088&amp;view=findpost&amp;p=1022300</guid>
        <pubDate>Tue, 21 Feb 2006 01:36:23 +0000</pubDate>
        <title>Нелюбовь к goto</title>
        <link>https://forum.sources.ru/index.php?showtopic=9088&amp;view=findpost&amp;p=1022300</link>
        <description><![CDATA[Хакас: <strong class='tag-b'>Демо</strong> А я и не спорю :) Я просто говорю, что есть люди, которые гото не периваривают и из-за них можно запросто потерять работу :(]]></description>
        <author>Хакас</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=9088&amp;view=findpost&amp;p=1022204</guid>
        <pubDate>Mon, 20 Feb 2006 20:43:46 +0000</pubDate>
        <title>Нелюбовь к goto</title>
        <link>https://forum.sources.ru/index.php?showtopic=9088&amp;view=findpost&amp;p=1022204</link>
        <description><![CDATA[shadeofgray: По опыту разбора старых математических исходников на фортране, в которых активно используется goto, могу сказать, что где-то 95% случаев применения этой конструкции служило для реализации функционала, который легко и естественно реализовывался при помощи if/then/else и прочих структурных заморочек. В оставшихся случаях было очень сложно подобрать подходящий эквивалент без goto. Но вот какое дело, хоть эквивалент было сложно подобрать, но в большинстве случаев можно было организовать программу так, чтобы в этом не возникало необходимости. Просто по другому решить и всё.<br><br>Случаи, когда goto был совершенно необходим, потому что без него было тяжело и некрасиво - таких случаев единицы.]]></description>
        <author>shadeofgray</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=9088&amp;view=findpost&amp;p=1021632</guid>
        <pubDate>Mon, 20 Feb 2006 10:51:53 +0000</pubDate>
        <title>Нелюбовь к goto</title>
        <link>https://forum.sources.ru/index.php?showtopic=9088&amp;view=findpost&amp;p=1021632</link>
        <description><![CDATA[Dr._S: Предлагаю написать письмо в международный комитет по защите программистов, чтобы запретить Goto и подобных ему  ;) <br>
На мой взгляд, личное дело каждого использовать или не использовать. <br>
Для одних это &quot;табу&quot;, для других это обычный оператор. Может просто кто-то не понимает, как его можно применить, ну не нужен он ему и черт с ним, зачем морочить себе голову. Складывается такое впечатление, что люди которые не используют Goto испытывают комплекс неполноценности и оправдываются перед другими, что, мол и без Goto неплохо живется, а может наоборот. Все по разному учились, кого-то учили, кому-то запретили, но ведь у каждого есть своя голова и каждый сам решит, как ему лучше, независимо от своих учений.<br>
А если код нечитабельный, то не лезь в него, предоставь это тем, кто разберет любой код, не можешь использовать Goto, не используй. <br>
Не думаю, что те дядьки, которые создали нынешние языки программирования, просто добавили Goto для красоты.  <br>
Написал две одинаковых программы с использованием и без Goto, скомпилил и дизассемблировал, и что, они ничем не отличаются, только одной строкой, все остальное один в один.<br>
<span class="tag-color tag-color-named" data-value="blue" style="color: blue">jnz     short loc_401B6F</span> с Goto<br>
<span class="tag-color tag-color-named" data-value="blue" style="color: blue">jz      short loc_401B6F</span> без Goto<br>
Можно сделать вывод, что разница только в удобстве программирования. <br>
Это как послать кого-нить, слова меняются, а смысл нет.]]></description>
        <author>Dr._S</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=9088&amp;view=findpost&amp;p=1021394</guid>
        <pubDate>Mon, 20 Feb 2006 06:26:12 +0000</pubDate>
        <title>Нелюбовь к goto</title>
        <link>https://forum.sources.ru/index.php?showtopic=9088&amp;view=findpost&amp;p=1021394</link>
        <description><![CDATA[Демо: <strong class='tag-b'>Хакас</strong><br>
<br>
А ты почитай веточку по ссылке, которую я привел.<br>
Как раз тот не программист, кто не испорльзует инструмент (в данном случае язык программирования) во всей его широте только потому, что &quot;кто-то сказал, что это плохо&quot;.]]></description>
        <author>Демо</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=9088&amp;view=findpost&amp;p=1021325</guid>
        <pubDate>Mon, 20 Feb 2006 02:21:36 +0000</pubDate>
        <title>Нелюбовь к goto</title>
        <link>https://forum.sources.ru/index.php?showtopic=9088&amp;view=findpost&amp;p=1021325</link>
        <description><![CDATA[Хакас: Не помню, когда в последний раз использовал гото........<br>Желание отбил один препод (который был ещё и моим начальником, когда я подрабатывал на кафедре). Он, если увидит хоть один гото, сразу начинает жутко глумиться.... Мне было ооочень неприятно. С тех пор не использую. И считаю, что можно и без него обойтись. <br>Кстати, все, кого я знаю, считают (вот уж не знаю, почему), что люди, использующие гото - не программисты вовсе.]]></description>
        <author>Хакас</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=9088&amp;view=findpost&amp;p=1020887</guid>
        <pubDate>Sun, 19 Feb 2006 14:00:29 +0000</pubDate>
        <title>Нелюбовь к goto</title>
        <link>https://forum.sources.ru/index.php?showtopic=9088&amp;view=findpost&amp;p=1020887</link>
        <description><![CDATA[Демо: <a class='tag-url' href='http://forum.sources.ru/index.php?showtopic=125327&view=showall' target='_blank'>Аналог функции GOTO Бейсика</a><br>
;)]]></description>
        <author>Демо</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=9088&amp;view=findpost&amp;p=1020834</guid>
        <pubDate>Sun, 19 Feb 2006 12:46:15 +0000</pubDate>
        <title>Нелюбовь к goto</title>
        <link>https://forum.sources.ru/index.php?showtopic=9088&amp;view=findpost&amp;p=1020834</link>
        <description><![CDATA[Shaggy: :)]]></description>
        <author>Shaggy</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=9088&amp;view=findpost&amp;p=1020788</guid>
        <pubDate>Sun, 19 Feb 2006 11:52:01 +0000</pubDate>
        <title>Нелюбовь к goto</title>
        <link>https://forum.sources.ru/index.php?showtopic=9088&amp;view=findpost&amp;p=1020788</link>
        <description><![CDATA[Shaggy: некрофилы, блин... :D]]></description>
        <author>Shaggy</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=9088&amp;view=findpost&amp;p=1020734</guid>
        <pubDate>Sun, 19 Feb 2006 10:14:40 +0000</pubDate>
        <title>Нелюбовь к goto</title>
        <link>https://forum.sources.ru/index.php?showtopic=9088&amp;view=findpost&amp;p=1020734</link>
        <description><![CDATA[Древень: Я за GOTO<br><br>С ним действительно бывает проще. И алгоритм выглядит понятней.]]></description>
        <author>Древень</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=9088&amp;view=findpost&amp;p=1020540</guid>
        <pubDate>Sat, 18 Feb 2006 21:04:48 +0000</pubDate>
        <title>Нелюбовь к goto</title>
        <link>https://forum.sources.ru/index.php?showtopic=9088&amp;view=findpost&amp;p=1020540</link>
        <description><![CDATA[Gregory Petrosyan: Код linux kernel полон goto (желающие могут проверить grep&#39;ом)<br>Про goto в линуксе:<br><br>http://lxr.linux.no/source/Documentation/CodingStyle#L184]]></description>
        <author>Gregory Petrosyan</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=9088&amp;view=findpost&amp;p=89371</guid>
        <pubDate>Fri, 24 Oct 2003 13:51:43 +0000</pubDate>
        <title>Нелюбовь к goto</title>
        <link>https://forum.sources.ru/index.php?showtopic=9088&amp;view=findpost&amp;p=89371</link>
        <description><![CDATA[WinterMute: 2 tserega: Дело не во вкусах, просто есть разница между &quot;Стараться не использовать&quot; и &quot;Никогда не использовать&quot;. Действовать нужно исходя из контекста, так ведь?]]></description>
        <author>WinterMute</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=9088&amp;view=findpost&amp;p=89370</guid>
        <pubDate>Fri, 24 Oct 2003 13:00:20 +0000</pubDate>
        <title>Нелюбовь к goto</title>
        <link>https://forum.sources.ru/index.php?showtopic=9088&amp;view=findpost&amp;p=89370</link>
        <description><![CDATA[Sazabis: используя гото можно прогу так послать :) о-го-го. А конструкции за скобки никогда не вылазят вот в чем прелесть]]></description>
        <author>Sazabis</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=9088&amp;view=findpost&amp;p=89369</guid>
        <pubDate>Fri, 24 Oct 2003 12:44:27 +0000</pubDate>
        <title>Нелюбовь к goto</title>
        <link>https://forum.sources.ru/index.php?showtopic=9088&amp;view=findpost&amp;p=89369</link>
        <description><![CDATA[tserega: О вкусах не спорят.<br>Когда пишется программа &quot;на день&quot;, то тут не до красоты. А если серьезный проект, то желательно, чтобы его можно было понять не только самому через какое-то время, но и чтобы поняли другие. Программист на qbasik-е с трудом поймет процедурную программу.]]></description>
        <author>tserega</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=9088&amp;view=findpost&amp;p=89368</guid>
        <pubDate>Fri, 24 Oct 2003 12:37:32 +0000</pubDate>
        <title>Нелюбовь к goto</title>
        <link>https://forum.sources.ru/index.php?showtopic=9088&amp;view=findpost&amp;p=89368</link>
        <description><![CDATA[WinterMute: 2 tserega:<br>Если ты имел в виду не инлайн, то, плюс ко всему, этот код будет работать еще и медленнее. <br><br>На счет критерия который ты упомянул, сложность программы зависит еще и от количества использованных в ней функций, переменных, классов, макросов -- сущностей одним словом. Заменять некошерные сущности кошерными мне кажется пустой тратой времени.<br><br>Действительно, запутать программу goto переходами проще чем без них, поэтому в универах и учат обходиться без гоуто пока это возможно. Продвинутые преподы так учат. Менее продвинутые челы просто запрещают его использовать.<br><br>Да, и подумай на досуге, почему Кэрниган и Ритчи оставили в goto в &quot;C&quot;.<br><br>2 Grand: <div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>Изначально в лексике языков программирования использовались операторы типа if, for, goto.. Цикл можно было реализовать только параметрический с определенным шагом. Для организации циклов с &quot;предусловием&quot; и &quot;постусловием&quot; приходилось использовать структуры if .... goto. &nbsp;В последствии с развитием языков появилияь и с операторы циклов типа while и do и необходимость в &quot;старом&quot; методе организации циклов отпала сама по себе</div></div><br>Вообще то, избежать слишком частого использования goto можно используя только break и continue, конструкции while и do...while вообще избыточны, счастье наступило вовсе не из-за них.]]></description>
        <author>WinterMute</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=9088&amp;view=findpost&amp;p=89367</guid>
        <pubDate>Fri, 24 Oct 2003 12:27:03 +0000</pubDate>
        <title>Нелюбовь к goto</title>
        <link>https://forum.sources.ru/index.php?showtopic=9088&amp;view=findpost&amp;p=89367</link>
        <description><![CDATA[lunc: к слову в /usr/src/kernel-source2.4.18/kernel/fork.c :<br><br>repeat:<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for_each_task(p) {<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if(....) {<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if(...) {<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;.......<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;goto repeat;<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;....<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;....<br> &nbsp; &nbsp; &nbsp;}]]></description>
        <author>lunc</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=9088&amp;view=findpost&amp;p=89366</guid>
        <pubDate>Fri, 24 Oct 2003 12:25:33 +0000</pubDate>
        <title>Нелюбовь к goto</title>
        <link>https://forum.sources.ru/index.php?showtopic=9088&amp;view=findpost&amp;p=89366</link>
        <description><![CDATA[tserega: Про код OpenSSL я возьму на заметку.<br>Неудобно читаемый код чаще всего является следствием неправильной проектировки (нехватка времени, лень и т.д.). Каждый подход имеет своих сторонников и противников (почти как борьба пользователей Windows и Linux), которые вряд ли договорятся. По крайней мере в обозримом будущем....]]></description>
        <author>tserega</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=9088&amp;view=findpost&amp;p=89364</guid>
        <pubDate>Fri, 24 Oct 2003 12:20:31 +0000</pubDate>
        <title>Нелюбовь к goto</title>
        <link>https://forum.sources.ru/index.php?showtopic=9088&amp;view=findpost&amp;p=89364</link>
        <description><![CDATA[lunc: 2tserega:<br>То, как учат в наших универах и институтах врятли можно взять за образец. Возьми код OpenSSL - полно goto, а ведь к нему приложил руку Стивен Хенсон - доктор MIT ;)<br><br>IMHO нельзя код бездумно дробить на функции, каждая функция должно нести ЛОГИЧЕСКУЮ (смысловую) нагрузку и просто выносить циклы в функцию из-за перехода не хорошо.]]></description>
        <author>lunc</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=9088&amp;view=findpost&amp;p=89363</guid>
        <pubDate>Fri, 24 Oct 2003 11:18:23 +0000</pubDate>
        <title>Нелюбовь к goto</title>
        <link>https://forum.sources.ru/index.php?showtopic=9088&amp;view=findpost&amp;p=89363</link>
        <description><![CDATA[tserega: Я имел ввиду не inline:<br><div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">&#60;br&#62;function int aaa() {&#60;br&#62; ....&#60;br&#62;&#60;br&#62; for (int i = 0; i &#60; 10; i++) {&#60;br&#62; &nbsp;for (int j = 0; j &#60; 10; j++) {&#60;br&#62; &nbsp; for (int k = 0; k &#60; 10; k++) {&#60;br&#62;.......&#60;br&#62; &nbsp; &nbsp;return 0;&#60;br&#62; &nbsp; }&#60;br&#62; &nbsp;}&#60;br&#62; }&#60;br&#62;}&#60;br&#62;</div></ol></div></div></div></div><br>Есть такой критерий, показывающий насколько сложно разобраться в программе. Так вот, один за пунктов был относительно меток: опытный программист может разобраться в коде, если там не более N меток. Для каждого это N свое. Зачем усложнять себе жизнь?<br>Подумайте на досуге над одним вопросом: почему в универах учат именно структурированное программирование, а не, допустим, Basic с переходами в каждой строчке?]]></description>
        <author>tserega</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=9088&amp;view=findpost&amp;p=89362</guid>
        <pubDate>Fri, 24 Oct 2003 11:10:42 +0000</pubDate>
        <title>Нелюбовь к goto</title>
        <link>https://forum.sources.ru/index.php?showtopic=9088&amp;view=findpost&amp;p=89362</link>
        <description><![CDATA[WinterMute: Вообще сложно думать наверное. Но это нужно делать, тогда будет понятно -- когда использовать goto, а когда нет. <br><br>Вот tserega пишет что мол для выхода из нескольких вложенных циклов можно определить функцию (inline я так понимаю), и юзать return. Тоже мне способ, вместо того, что бы поставить метку нужно ГДЕ_ТО_ТАМ определять функцию, которая будет вызываться ОДИН раз. Вместо того, что бы думать: &quot;А что это за метка, и что на неё ссылается&quot; мы будем думать: &quot;А что это за функция и как она работает&quot;, просто супер прогресс какой то, зато без гоуту, наши духовные учителя будут нами довольны.]]></description>
        <author>WinterMute</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=9088&amp;view=findpost&amp;p=89361</guid>
        <pubDate>Fri, 24 Oct 2003 10:36:02 +0000</pubDate>
        <title>Нелюбовь к goto</title>
        <link>https://forum.sources.ru/index.php?showtopic=9088&amp;view=findpost&amp;p=89361</link>
        <description><![CDATA[GrAnd: Изначально в лексике языков программирования использовались операторы типа if, for, goto.. Цикл можно было реализовать только параметрический с определенным шагом. Для организации циклов с &quot;предусловием&quot; и &quot;постусловием&quot; приходилось использовать структуры if .... goto. &nbsp;В последствии с развитием языков появилияь и с операторы циклов типа while и do и необходимость в &quot;старом&quot; методе организации циклов отпала сама по себе.. И на сегодняшний день необходимость в в goto осталась только в ассемблере..<br>P.S.<br>Не мучайте голову.. не усложняйте чтение кода различными переходами типа goto...]]></description>
        <author>GrAnd</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=9088&amp;view=findpost&amp;p=89360</guid>
        <pubDate>Fri, 24 Oct 2003 08:31:32 +0000</pubDate>
        <title>Нелюбовь к goto</title>
        <link>https://forum.sources.ru/index.php?showtopic=9088&amp;view=findpost&amp;p=89360</link>
        <description><![CDATA[tserega: Метки есть в ЛЮБОМ языке высокого уровня. Просто они замаскированы (так сказать, присыпаны листьями). Тот же if - чем не условный переход; while, for, repeat - без комментариев; case/switch - хотел бы посмотреть на реализацию без goto  ;D<br>Операторы выхода из цикла типа break/continue были специально введены, чтобы не было goto. Если вообще надо выйти, например, сразу из 3-х циклов, используй функции или процедуры с exit-ом или return (в зависимости от языка).<br>Все что можно написать с goto можно написать и без него (я говорю только про языки высокого уровня).<br><br>Long live structured programming!  УРА, товарищи!!!  ;D ;D<br>]]></description>
        <author>tserega</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=9088&amp;view=findpost&amp;p=89359</guid>
        <pubDate>Fri, 24 Oct 2003 08:23:05 +0000</pubDate>
        <title>Нелюбовь к goto</title>
        <link>https://forum.sources.ru/index.php?showtopic=9088&amp;view=findpost&amp;p=89359</link>
        <description><![CDATA[Sazabis: LABEL: <br>......... <br>if (...) <br> &nbsp; &nbsp;goto LABEL;<br><br>Предлагаю<br><br>while( true ){<br> &nbsp;...<br> &nbsp;if( !... )break;<br>}<br><br>чем не красота :)<br><br>один раз, действительно, было что без гото не вперед-не взад, а лабу завтра сдавать, ну и оставил... и как думаете, прокатило ?? НЕТ.]]></description>
        <author>Sazabis</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=9088&amp;view=findpost&amp;p=89358</guid>
        <pubDate>Thu, 23 Oct 2003 12:22:08 +0000</pubDate>
        <title>Нелюбовь к goto</title>
        <link>https://forum.sources.ru/index.php?showtopic=9088&amp;view=findpost&amp;p=89358</link>
        <description><![CDATA[lunc: Еще:<br>Сколько видел &quot;хороших&quot; исхожников - везде goto используется только &quot;последовательно&quot; (не знаю как еще сказать). Тоесть имитация циклов вроде:<br><br>LABEL:<br>.........<br>if (...)<br> &nbsp; &nbsp;goto LABEL;<br><br>Приводит только к запутанности кода, и если возникает необходимость в таком переходе (например из вложенного блока с большой степенью вложенности), то обычно - это уже плохо спроектированный код.<br>Я всегда использую goto ввиде, приведенном мной в пердидущем топике.]]></description>
        <author>lunc</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=9088&amp;view=findpost&amp;p=89357</guid>
        <pubDate>Wed, 22 Oct 2003 07:35:01 +0000</pubDate>
        <title>Нелюбовь к goto</title>
        <link>https://forum.sources.ru/index.php?showtopic=9088&amp;view=findpost&amp;p=89357</link>
        <description><![CDATA[Visitor: В общем, кому апельсин, а кому и свиной хрящик... :)]]></description>
        <author>Visitor</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=9088&amp;view=findpost&amp;p=89356</guid>
        <pubDate>Tue, 21 Oct 2003 22:00:23 +0000</pubDate>
        <title>Нелюбовь к goto</title>
        <link>https://forum.sources.ru/index.php?showtopic=9088&amp;view=findpost&amp;p=89356</link>
        <description><![CDATA[Serg-Zerg: Goto в нутри одного блока {..} - я не против...]]></description>
        <author>Serg-Zerg</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=9088&amp;view=findpost&amp;p=89355</guid>
        <pubDate>Mon, 13 Oct 2003 09:59:58 +0000</pubDate>
        <title>Нелюбовь к goto</title>
        <link>https://forum.sources.ru/index.php?showtopic=9088&amp;view=findpost&amp;p=89355</link>
        <description><![CDATA[WinterMute: 2 WhiteWolf: Не плодите лишних сущностей (c). Пожалуй единственная причина, по которой goto плох -- появление в программе новых идентификаторов, а их надо помнить и ни с чем не спутать. Как сам понимаешь -- наличие или отсутствие if здесь ничего не меняет.]]></description>
        <author>WinterMute</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=9088&amp;view=findpost&amp;p=89354</guid>
        <pubDate>Mon, 13 Oct 2003 07:42:00 +0000</pubDate>
        <title>Нелюбовь к goto</title>
        <link>https://forum.sources.ru/index.php?showtopic=9088&amp;view=findpost&amp;p=89354</link>
        <description><![CDATA[WhiteWolf: Академический вопрос: goto - это безусловный переход, и его использование вроде как дурной стиль, но if(...) goto - это уже условный переход и в его использовании ничего плохого нет?]]></description>
        <author>WhiteWolf</author>
        <category>Алгоритмы</category>
      </item>
	
      </channel>
      </rss>
	