Goto's are evil?
От: Cyberax Марс  
Дата: 28.11.05 15:29
Оценка: 43 (3) -1
Сегодня исправлял одну багу в ядре Линукса и в процессе наткнулся на
такой пост:

> However, I have always been taught, and have always believed that
> "goto"s are inherently evil. They are the creators of spaghetti code

No, you've been brainwashed by CS people who thought that Niklaus Wirth
actually knew what he was talking about. He didn't. He doesn't have a
frigging clue.

> (you start reading through the code to understand it (months or years
> after its written), and suddenly you jump to somewhere totally
> unrelated, and then jump somewhere else backwards, and it all gets ugly
> quickly). This makes later debugging of code total hell.

Any if-statement is a goto. As are all structured loops.

Ans sometimes structure is good. When it's good, you should use it.

And sometimes structure is _bad_, and gets into the way, and using a
"goto" is just much clearer.

For example, it is quite common to have conditionals THAT DO NOT NEST.

In which case you have two possibilities

— use goto, and be happy, since it doesn't enforce nesting

This makes the code _more_ readable, since the code just does what
the algorithm says it should do.

— duplicate the code, and rewrite it in a nesting form so that you can
use the structured jumps.

This often makes the code much LESS readable, harder to maintain,
and bigger.

The Pascal language is a prime example of the latter problem. Because it
doesn't have a "break" statement, loops in (traditional) Pascal end up
often looking like total shit, because you have to add totally arbitrary
logic to say "I'm done now".

Linus


У меня все больше уважения к этому товарищу!

--
С уважением,
Alex Besogonov (alexy@izh.com)
Posted via RSDN NNTP Server 1.9
Sapienti sat!
Re: Goto's are evil?
От: AVC Россия  
Дата: 28.11.05 16:52
Оценка: -3 :))) :)))
Здравствуйте, Cyberax, Вы писали:

C>Сегодня исправлял одну багу в ядре Линукса и в процессе наткнулся на

C>такой пост:

C>У меня все больше уважения к этому товарищу!


Видно, Линусу проще добиться уважения критикой Вирта, чем выведением багов из ядра?

Но существует одно качество, которое нельзя купить, — это надежность. Цена надежности — погоня за крайней простотой. Это цена, которую очень богатому труднее всего заплатить.

Хоар
Re[2]: Goto's are evil?
От: reductor  
Дата: 28.11.05 18:40
Оценка: +1 -1 :)
Здравствуйте, AVC, Вы писали:

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


C>>Сегодня исправлял одну багу в ядре Линукса и в процессе наткнулся на

C>>такой пост:

C>>У меня все больше уважения к этому товарищу!


AVC>Видно, Линусу проще добиться уважения критикой Вирта, чем выведением багов из ядра?


Так это ж известно, главное — не мотивировать свои слова, а побольше харизмы.
Признавать, а тем более исправлять свои ошибки — это для лузеров и лохов.
Устанавливают правила и пишут историю победители, а как оно там на самом деле — никого не интересует

Пока майкрософт скупает всех этих CS people, которые согласны на них работать, мы плюнем им в спину и создадим свой подхо...kernel panic...

..монажная склейка..
Интересно, а что он на Вирта-то наехал? Вирт-то фигура далеко не самая заметная в этом плане. Что не сразу на Дийкстру, Хоара, Кнута и Милнера? Неужели не посмел?
Слабак!

Re: Goto's are evil?
От: MShura  
Дата: 28.11.05 19:00
Оценка:
C>Сегодня исправлял одну багу в ядре Линукса и в процессе наткнулся на
C>такой пост:

Общество интересуют детали бага.
Проблемы портирования модуля?
Последний раз я сталкивался с багой самбы. В последних версиях её пофиксили. Но самба это не ядро.

А по-моему хорошо, когда есть возможность самому исправить багу в ядре

Гораздо хуже, когда известо, что бага есть и ничего поделать не можешь, можно только ожидать, когда за тебя её пофиксят.
Re[2]: Goto's are evil?
От: Cyberax Марс  
Дата: 28.11.05 20:15
Оценка:
MShura wrote:

> C>Сегодня исправлял одну багу в ядре Линукса и в процессе наткнулся на

> C>такой пост:
> Общество интересуют детали бага.
> Проблемы портирования модуля?
> Последний раз я сталкивался с багой самбы. В последних версиях её
> пофиксили. Но самба это не ядро.

Нет, у меня похоже race condition в драйвере для спутниковой карты. У
нас просто две карты воткнуто (SkyStar2) — по одной идет Интернет, по
другой — телевизор Все изредка падает в Kernel Panic, причем в
основном при изменения настроек (смене каналов).

По отдельности работает все вообще идеально. При попытке включить
отладку проблемы тоже пропадают.

> А по-моему хорошо, когда есть возможность самому исправить багу в ядре

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

Кто же спорит Вот было бы еще окружение в Линуксе нормальное...

--
С уважением,
Alex Besogonov (alexy@izh.com)
Posted via RSDN NNTP Server 1.9
Sapienti sat!
Re[3]: Goto's are evil?
От: Cyberax Марс  
Дата: 28.11.05 20:27
Оценка:
reductor wrote:

> C>>Сегодня *исправлял одну багу в ядре Линукса* и в процессе наткнулся на

> C>>такой пост:
> C>>У меня *все больше уважения к этому товарищу*!
> AVC>Видно, Линусу проще добиться уважения критикой Вирта, чем
> выведением багов из ядра?
> Так это ж известно, главное — не мотивировать свои слова, а побольше
> харизмы.
> Признавать, а тем более исправлять свои ошибки — это для лузеров и лохов.

Не ошибается тот, кто ничего не делает. Как Вирт, например...

> Интересно, а что он на Вирта-то наехал? Вирт-то фигура далеко не самая

> заметная в этом плане. Что не сразу на Дийкстру, Хоара, Кнута и
> Милнера? Неужели не посмел?
> Слабак!

> I thought Edsger Dijkstra coined the "gotos are evil" bit in his
> structured programming push?

Yeah, he did, but he's dead, and we shouldn't talk ill of the dead. So
these days I can only rant about Niklaus Wirth, who took the "structured
programming" thing and enforced it in his languages (Pascal and Modula-2),
and thus forced his evil on untold generations of poor CS students who had
to learn langauges that weren't actually useful for real work.

(Yeah, yeah, most _practical_ versions of Pascal ended up having all the
stuff necessary to break structure, but as you may be able to tell, I was
one of the unwashed masses who had to write in "standard Pascal" in my
youth. I'm scarred for life).

Linus


--
С уважением,
Alex Besogonov (alexy@izh.com)
Posted via RSDN NNTP Server 1.9
Sapienti sat!
Re[4]: Goto's are evil?
От: Cyberax Марс  
Дата: 28.11.05 20:33
Оценка:
Здравствуйте, Cyberax, Вы писали:

>> Интересно, а что он на Вирта-то наехал? Вирт-то фигура далеко не самая

>> заметная в этом плане. Что не сразу на Дийкстру, Хоара, Кнута и
>> Милнера? Неужели не посмел?
>> Слабак!
Кстати, Кнут считает, что структурное программирование должно содержать break. Ну а имея break (особенно именованый) уже и goto становится фактически ненужным (за исключением случаев с оптимизацией).
Sapienti sat!
Re[3]: Goto's are evil?
От: AVC Россия  
Дата: 28.11.05 20:52
Оценка: 42 (4)
Здравствуйте, reductor, Вы писали:

AVC>>Видно, Линусу проще добиться уважения критикой Вирта, чем выведением багов из ядра?


R>..монажная склейка..

R>Интересно, а что он на Вирта-то наехал? Вирт-то фигура далеко не самая заметная в этом плане. Что не сразу на Дийкстру, Хоара, Кнута и Милнера? Неужели не посмел?
R>Слабак!

Как бы то ни было, из "великой троицы" (Дейкстра, Хоар и Вирт) неизменно атакуют именно Вирта.
То Керниган напишет запоздавшую на несколько лет статью "Why Pascal is not my favourite programming language".
То Пайк в статье о стиле программирования на Си два раза упомянет Паскаль, и оба раза в словосочетании "тирания Паскаля".
То вот Торвальдс выскажется, что goto — это хорошо, а Вирт занимается "промывкой мозгов", и вообще ничего не понимает. В отличие от него, Торвальдса. (Я так понял приведенную Cyberax'ом цитату.)
В связи с goto этот наезд хотя бы имеет некоторое основание:
1) в названии дейкстровской статьи "Goto considered harmful" фраза "considered harmful" (породившая столько подражаний) принадлежит именно Вирту;
2) начиная с Модулы-2 в виртовских языках действительно нет goto (и ведь ничего страшного с его исчезновением не случилось).
Могу предположить, что Вирта легче критиковать, потому что он "превращает теорию в практику", создает языки программирования и операционные системы. И про все это можно сказать с видом крайнего глубокомыслия: "а мне это не понравилось". А вот про теоретические работы так говорить не принято. Пришлось бы искать иные аргументы, помимо ругательств.

Но существует одно качество, которое нельзя купить, — это надежность. Цена надежности — погоня за крайней простотой. Это цена, которую очень богатому труднее всего заплатить.

Хоар
Re[4]: Goto's are evil?
От: AVC Россия  
Дата: 28.11.05 21:19
Оценка:
Здравствуйте, Cyberax, Вы писали:

C>Не ошибается тот, кто ничего не делает. Как Вирт, например...


Правильно, за Вирта все "щучье веление" делает.

>> Интересно, а что он на Вирта-то наехал? Вирт-то фигура далеко не самая

>> заметная в этом плане. Что не сразу на Дийкстру, Хоара, Кнута и
>> Милнера? Неужели не посмел?
>> Слабак!

C>

>> I thought Edsger Dijkstra coined the "gotos are evil" bit in his
>> structured programming push?

C>Yeah, he did, but he's dead, and we shouldn't talk ill of the dead. So
C>these days I can only rant about Niklaus Wirth, who took the "structured
C>programming" thing and enforced it in his languages (Pascal and Modula-2),
C>and thus forced his evil on untold generations of poor CS students who had
C>to learn langauges that weren't actually useful for real work.

C>(Yeah, yeah, most _practical_ versions of Pascal ended up having all the
C>stuff necessary to break structure, but as you may be able to tell, I was
C>one of the unwashed masses who had to write in "standard Pascal" in my
C>youth. I'm scarred for life).

C>Linus


Я вообще не могу понять, о чем тут талдычит Торвальдс, кроме той светлой мысли, что вот Дейкстра уже умер, давайте покончим с Виртом.
(Как и в другой его цитате, приведенной еще в первом посте топика.)
В стандартнон Паскале есть goto, в Модуле-2 и Обероне EXIT (=break).
Что вызвало такие "страдания молодого Линуса", что даже отшибло память о конструкциях языка?

Но существует одно качество, которое нельзя купить, — это надежность. Цена надежности — погоня за крайней простотой. Это цена, которую очень богатому труднее всего заплатить.

Хоар
Re[4]: Goto's are evil?
От: reductor  
Дата: 28.11.05 21:46
Оценка:
Здравствуйте, Cyberax, Вы писали:

C>reductor wrote:


C>Не ошибается тот, кто ничего не делает. Как Вирт, например...


Да кто бы спорил. Вирт вообще мало чем был полезен и заметен в Computer Science.
А Линусу пути назад уже нет. Он слишком много чего нелестного сказал о CS еще в пору своих прений с Таненбаумом.


>> Интересно, а что он на Вирта-то наехал? Вирт-то фигура далеко не самая

>> заметная в этом плане. Что не сразу на Дийкстру, Хоара, Кнута и
>> Милнера? Неужели не посмел?
>> Слабак!

C>[q]


>> I thought Edsger Dijkstra coined the "gotos are evil" bit in his

>> structured programming push?

C>Yeah, he did, but he's dead, and we shouldn't talk ill of the dead. So

C>these days I can only rant about Niklaus Wirth, who took the "structured
C>programming" thing and enforced it in his languages (Pascal and Modula-2),

Каков, а!
Ловко перевел тему опять на Вирта.
Дийкстру не трогает. Боится. И правильно делает. Могут урыть.

Неужели им там в финляндии так же мозги конопатят виртом, как у нас в вузах.
Я не уверен, что все люди, которым он это говорит, слышали такую фамилию :)
Re[5]: Goto's are evil?
От: reductor  
Дата: 28.11.05 22:03
Оценка: -1
Здравствуйте, Cyberax, Вы писали:

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


>>> Интересно, а что он на Вирта-то наехал? Вирт-то фигура далеко не самая

>>> заметная в этом плане. Что не сразу на Дийкстру, Хоара, Кнута и
>>> Милнера? Неужели не посмел?
>>> Слабак!
C>Кстати, Кнут считает, что структурное программирование должно содержать break. Ну а имея break (особенно именованый) уже и goto становится фактически ненужным (за исключением случаев с оптимизацией).

А имея вычислимый goto уже и break не нужен.
И вообще тоже нашли о чем спорить. Краеугольный камень. Где-то нужен, где-то нет. В Haskell вот вообще не нужен — не имеет там никакого смысла.
А вот более важные свойства языка (с лихвой покрывающие любые break) некоторые вводят только почему-то в версии 3.0
Или не вводят даже в версии 5.0. И тишина.
Re[4]: Goto's are evil?
От: reductor  
Дата: 28.11.05 22:24
Оценка: +1
AVC>Как бы то ни было, из "великой троицы" (Дейкстра, Хоар и Вирт) неизменно атакуют именно Вирта.

Что бы там ни было, ставить Вирта в один ряд с Дийсктрой и Хоаром я бы не стал. "Немного" разных высовых категорий как люди так и их заслуги.

AVC>То Керниган напишет запоздавшую на несколько лет статью "Why Pascal is not my favourite programming language".

AVC>То Пайк в статье о стиле программирования на Си два раза упомянет Паскаль, и оба раза в словосочетании "тирания Паскаля".
AVC>То вот Торвальдс выскажется, что goto — это хорошо, а Вирт занимается "промывкой мозгов", и вообще ничего не понимает. В отличие от него, Торвальдса. (Я так понял приведенную Cyberax'ом цитату.)

Это все потому, что Вирт, прямо скажем, иногда слышав звон интерпретировал его по-своему, причем, слишком активно интерпретировал.

AVC>В связи с goto этот наезд хотя бы имеет некоторое основание:

AVC>1) в названии дейкстровской статьи "Goto considered harmful" фраза "considered harmful" (породившая столько подражаний) принадлежит именно Вирту;

Фраза принадлежит тому, кому принадлежит. Сам Дийкстра ссылается как на дополнительный источник такого мнения на доклад Хоара и Вирта по алголу (Comm. ACM 9 (June 1966), 413-432.)

AVC>Могу предположить, что Вирта легче критиковать, потому что он "превращает теорию в практику", создает языки программирования и операционные системы. И про все это можно сказать с видом крайнего глубокомыслия: "а мне это не понравилось". А вот про теоретические работы так говорить не принято. Пришлось бы искать иные аргументы, помимо ругательств.


Можно попробовать покритиковать наиболее влиятельного language designer ever — Робина Милнера. Или Джона Маккарти.
Если найдется за что.
Вирт получает свои оплеухи совершенно по делу.
Re: Goto's are evil?
От: reductor  
Дата: 28.11.05 23:37
Оценка: 66 (1) +1
Здравствуйте, Cyberax, Вы писали:

C>Сегодня исправлял одну багу в ядре Линукса и в процессе наткнулся на

C>такой пост:

C>[q]

>> However, I have always been taught, and have always believed that
>> "goto"s are inherently evil. They are the creators of spaghetti code

C>No, you've been brainwashed by CS people who thought that Niklaus Wirth

C>actually knew what he was talking about. He didn't. He doesn't have a
C>frigging clue.


Кстати. По поводу Дийкстры, Вирта, Goto, Real Programmers и CS people
Не так широко известный случай, когда Frank Rubin написал в ACM: "Goto Considered Harmful" Considered Harmful
вот это письмо (последнее там):
http://paramount.www.ecn.purdue.edu/ParaMount/papers/rubin87goto.pdf
А вот, что ответил на него Дийкстра:
http://www.cs.utexas.edu/users/EWD/transcriptions/EWD10xx/EWD1009.html
Особенно конец.

Ничего не меняется, правда?
Re[5]: Goto's are evil?
От: AVC Россия  
Дата: 28.11.05 23:44
Оценка: +1
Здравствуйте, reductor, Вы писали:

AVC>>Как бы то ни было, из "великой троицы" (Дейкстра, Хоар и Вирт) неизменно атакуют именно Вирта.


R>Что бы там ни было, ставить Вирта в один ряд с Дийсктрой и Хоаром я бы не стал. "Немного" разных высовых категорий как люди так и их заслуги.


Насколько я понимаю, Дейкстра, Хоар и Вирт были во многом единомышленниками и друзьями в жизни.
Естественно, между ними существовало и определенное "разделение труда", и взаимное влияние.
Например, многие идеи Хоара легли в основу языка Паскаль.
Если хотите, присваивайте каждому из них тот или иной "вес" — это Ваше право.

AVC>>То Керниган напишет запоздавшую на несколько лет статью "Why Pascal is not my favourite programming language".

AVC>>То Пайк в статье о стиле программирования на Си два раза упомянет Паскаль, и оба раза в словосочетании "тирания Паскаля".
AVC>>То вот Торвальдс выскажется, что goto — это хорошо, а Вирт занимается "промывкой мозгов", и вообще ничего не понимает. В отличие от него, Торвальдса. (Я так понял приведенную Cyberax'ом цитату.)

R>Это все потому, что Вирт, прямо скажем, иногда слышав звон интерпретировал его по-своему, причем, слишком активно интерпретировал.


Вы что-то конкретное имеете в виду?

AVC>>Могу предположить, что Вирта легче критиковать, потому что он "превращает теорию в практику", создает языки программирования и операционные системы. И про все это можно сказать с видом крайнего глубокомыслия: "а мне это не понравилось". А вот про теоретические работы так говорить не принято. Пришлось бы искать иные аргументы, помимо ругательств.


R>Можно попробовать покритиковать наиболее влиятельного language designer ever — Робина Милнера. Или Джона Маккарти.

R>Если найдется за что.
R>Вирт получает свои оплеухи совершенно по делу.

Я понял, что Милнера (кто это?) и Маккарти Вы ставите выше, чем Вирта. Это Ваше неотъемлимое право.
Но вот насчет оплеух Вирту "по делу", может быть, скажете пару ласковых слов?
Так сказать, перед смертью.

Но существует одно качество, которое нельзя купить, — это надежность. Цена надежности — погоня за крайней простотой. Это цена, которую очень богатому труднее всего заплатить.

Хоар
Re[6]: Goto's are evil?
От: reductor  
Дата: 29.11.05 00:35
Оценка: 164 (10) -1
Здравствуйте, AVC, Вы писали:

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


AVC>Насколько я понимаю, Дейкстра, Хоар и Вирт были во многом единомышленниками и друзьями в жизни.

AVC>Естественно, между ними существовало и определенное "разделение труда", и взаимное влияние.
AVC>Например, многие идеи Хоара легли в основу языка Паскаль.
AVC>Если хотите, присваивайте каждому из них тот или иной "вес" — это Ваше право.

Это что, обвинение в чем-то личном чтоли?
Хоар, Дийкстра и Вирт были принимали участие в создание Алгола (Основная роль была тем не менее все же за Бэкус с Науром)
Паскаль прямой потомок Алгола.
Но это все не имеет никакого значения. Вклад в Computer Science Дийкстры и Хоара несоизмерим с Виртовским. Точнее, Паскаль уже не являлся чем-то особенно заметным в CS. Упрощенный Алгол.
То, чем занимались Дийкстра, Хоар и Милнер сейчас лежит в основе SML, O'Caml и Haskell.
Не считая придуманных ими алгоритмов и сделаных открытий. Их влияние _огромно_.

А Вирт? Язык Оберон. Даже не смешно.
То есть реально я вообще затруднюсь сказать что сделал Вирт в CS после своего участия в группе алгола.
40 лет одна и та же песня.


R>>Это все потому, что Вирт, прямо скажем, иногда слышав звон интерпретировал его по-своему, причем, слишком активно интерпретировал.


AVC>Вы что-то конкретное имеете в виду?


Нет. Все вместе и по очереди.


AVC>Я понял, что Милнера (кто это?) и Маккарти Вы ставите выше, чем Вирта. Это Ваше неотъемлимое право.


Кто такой Милнер? Хороший вопрос на форуме, посвященном программированию.
Нет, правда. Робин Милнер — это такой человек, который в то время, когда Вирт делал Паскаль, совершил небольшую революцию в CS.
Создал язык ML и алгоритм вывода типов Хиндли-Милнера. А так же создатель пи-исчисления. Один из самых влиятельных и цитируемых ученых в мире.
http://citeseer.ist.psu.edu/mostcited.html — Вот здесь он на 4 месте с 9711 научными статьями на него ссылающимися.
Для маленького сравнения — на доклад Вирта о языке Оберон ссыается 4 (четыре) статьи.
Ставлю ли я Милнера выше Вирта? Пожалуй.

AVC>Но вот насчет оплеух Вирту "по делу", может быть, скажете пару ласковых слов?

AVC>Так сказать, перед смертью. :)

А почему перед смертью? Он умирать собрался?
Хорошего о Вирте могу сказать, конечно — хотел бы я иметь его упорство.
Re[7]: Goto's are evil?
От: AVC Россия  
Дата: 29.11.05 07:45
Оценка: +2 -2 :)))
Здравствуйте, reductor, Вы писали:

R>Хоар, Дийкстра и Вирт были принимали участие в создание Алгола (Основная роль была тем не менее все же за Бэкус с Науром)


А я уж было подумал, что Дейкстра и Хоар, в отличие от Вирта, Лиспом занимались. Или ML.

R>Паскаль прямой потомок Алгола.

R>Но это все не имеет никакого значения.

Само собой.
По сравнению с самым влиятельным языком современности (ML, разумеется) мало что имеет значение...

R>А Вирт? Язык Оберон. Даже не смешно.


Действительно.

R>То есть реально я вообще затруднюсь сказать что сделал Вирт в CS после своего участия в группе алгола.

R>40 лет одна и та же песня.

Вы, насколько я понимаю, мало интересуетесь императивными языками.
Конечно, Вам трудно что-то сказать по этому поводу (как мне — о функциональных языках).
Они для вас "как китайцы" — все на одно лицо.

R>>>Это все потому, что Вирт, прямо скажем, иногда слышав звон интерпретировал его по-своему, причем, слишком активно интерпретировал.


AVC>>Вы что-то конкретное имеете в виду?


R>Нет. Все вместе и по очереди.


То есть конкретно сказать нечего, кроме того, что Вам больше нравятся функциональные языки?
Ничего не имею против. Только обратил бы внимание, что и у императивных языков есть своя ниша.
В Оксфорде на "первое" подают Хаскель, на "второе" — Оберон. И при этом об Обероне отзываются очень хорошо.

R>Кто такой Милнер? Хороший вопрос на форуме, посвященном программированию.

R>Нет, правда. Робин Милнер — это такой человек, который в то время, когда Вирт делал Паскаль, совершил небольшую революцию в CS.

Интересное словосочетание: "небольшая революция".
Комнатная, что ли?

R>Создал язык ML и алгоритм вывода типов Хиндли-Милнера. А так же создатель пи-исчисления. Один из самых влиятельных и цитируемых ученых в мире.


Ну, я догадывался, что Милнер — автор одного из функциональных языков, о которых Вы так восторженно говорите.
Только не знал — какого именно.
И на кого же он так повлиял (кроме других ученых, разумеется)?
А то его безмерное могущество не везде так сильно ощущается.

Но существует одно качество, которое нельзя купить, — это надежность. Цена надежности — погоня за крайней простотой. Это цена, которую очень богатому труднее всего заплатить.

Хоар
Re[3]: Goto's are evil?
От: dshe  
Дата: 29.11.05 07:55
Оценка: 1 (1)
Здравствуйте, reductor, Вы писали:

AVC>>Видно, Линусу проще добиться уважения критикой Вирта, чем выведением багов из ядра?


R>Так это ж известно, главное — не мотивировать свои слова, а побольше харизмы.

R>Слабак!
R>

А вы, интересно, чем сейчас занимаетесь?
--
Дмитро
Re[2]: Goto's are evil?
От: sch  
Дата: 29.11.05 08:04
Оценка: :)))
R>Кстати. По поводу Дийкстры, Вирта, Goto, Real Programmers и CS people
R>Не так широко известный случай, когда Frank Rubin написал в ACM: "Goto Considered Harmful" Considered Harmful
R>вот это письмо (последнее там):
R>http://paramount.www.ecn.purdue.edu/ParaMount/papers/rubin87goto.pdf

Ответ Дейкстры еще не читал, но скажу что доводы автора не терпят никакой критики. Ту же самую программу я бы написал приблизительно вот так:

int main() {
  for(int i = 0; i < N; i++) {
    int j;
    for(j = 0; j < M && !array[i][j]; j++);
    if(j == M) {
      printf("first non-zero line is %d\n", i);
      return i;
    }
  }

  printf("none found\n");
  return 0;
}


За все мои N лет программирования, я использовал goto всего пару раз.
Я даже не сразу смог вспомнить, есть ли goto в C++.
Но я бы перегрыз глотку любому, кто попытался бы у меня отнять goto.

(На самом деле, goto -- это готично.)
Re: Goto's are evil?
От: minorlogic Украина  
Дата: 29.11.05 08:43
Оценка:
Так ты сразу приведи пример , где goto оправдан ? я не встречал. Там где был , это или плохая структуризация , или выход из вложенных циклов.
Ищу работу, 3D, SLAM, computer graphics/vision.
Re[3]: Goto's are evil?
От: Cyberax Марс  
Дата: 29.11.05 08:43
Оценка:
sch wrote:

> Ответ Дейкстры еще не читал, но скажу что доводы автора не терпят

> никакой критики. Ту же самую программу я бы написал приблизительно вот
> так:
>
>int main() {
> for(int i = 0; i < N; i++) {
> int j;
> for(j = 0; j < M && !array[i][j]; j++);
> if(j == M) {
> printf("first non-zero line is %d\n", i);
> return i;
> }
> }
>
> printf("none found\n");
> return 0;
>}
>
>
Ну так это и есть goto Просто в виде multiple return statement.

> За все мои N лет программирования, я использовал goto всего пару раз.


Вместо него обычно достаточно break/continue (как более нормальных форм
goto).

--
С уважением,
Alex Besogonov (alexy@izh.com)
Posted via RSDN NNTP Server 1.9
Sapienti sat!
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.