Автор Тема: Про goto.  (Прочитано 4356 раз)

valexey

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 1990
    • Просмотр профиля
Про goto.
« : Август 21, 2012, 08:38:39 am »
По моему следует уточнить из за чего goto (то, старое goto которое было в 70-х) было плохо и почему с ним боролись.

goto - это был неклассифицированный переход (или нетипизированный). То есть видя goto не ясно что оно означает в данном конкретном контексте. Оно было сильно контекстно зависимо. Это примерно как если в языке с динамической типизацией переиспользовать одну и ту же переменную в разных кусках кода (или вооще через строчку) храня там то double, то int, то string, то вообще DOM. Разобраться во всем этом решительно невозможно (при достаточных размерах программы).

Что имеем сейчас?

return из "середины" - это четко классифицированный переход с четкой се мантикой. Известно что произойдет и где окажемся. И зачем оно используется.

throw (исключение) - тоже ясно зачем когда и куда. четкая классификация.

Собственно даже goto в современных языках (вроде С++ или того же Go) жестко ограничен, и уже не является неведомой фигней которая может кинуть нас вообще куда угодно (например за пределы текущей функции он не выкинет, также он не может перешагнуть через объявления переменных, то есть свобода маневра очень урезана).

Таким образом я не вижу ничего страшного в использовании return'ов и throw в современных языках (там где это уместно). И даже goto иногда позволяет сделать код программы существенно читабельней. К нечитаемости программы goto уже не приводит (чтобы привело нужно специально постараться это сделать, обычный быдлокодер это не осилит, ибо регулярно будет получать ошибки компиляции).
"но сейчас, чтобы компенсировать растущую мощность компьютеров, программисты используют фреймворки"

Влад Жаринов

  • Full Member
  • ***
  • Сообщений: 189
    • Просмотр профиля
Re: Про goto.
« Ответ #1 : Август 21, 2012, 09:18:42 am »
...
Собственно даже goto в современных языках (вроде С++ или того же Go) жестко ограничен, и уже не является неведомой фигней которая может кинуть нас вообще куда угодно (например за пределы текущей функции он не выкинет, также он не может перешагнуть через объявления переменных, то есть свобода маневра очень урезана).
...
В общем, "силуэтному" БП до второго далеко (ибо ДРАКОН-семантика игнорирует всё, кроме потока управления)... ;) так надо понимать?..

Губанов Сергей Юрьевич

  • Hero Member
  • *****
  • Сообщений: 590
    • Просмотр профиля
    • Домашняя страница
Re: Про goto.
« Ответ #2 : Август 22, 2012, 03:26:42 am »
По моему следует уточнить из за чего goto (то, старое goto которое было в 70-х) было плохо и почему с ним боролись.
Ага, а ещё с его зеркальным двойником -- инструкцией COMEFROM

http://en.wikipedia.org/wiki/COMEFROM

valexey

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 1990
    • Просмотр профиля
Re: Про goto.
« Ответ #3 : Август 22, 2012, 03:57:54 am »
По моему следует уточнить из за чего goto (то, старое goto которое было в 70-х) было плохо и почему с ним боролись.
Ага, а ещё с его зеркальным двойником -- инструкцией COMEFROM

http://en.wikipedia.org/wiki/COMEFROM
Экие ужасы на ночь глядя ты находишь… Брр.
"но сейчас, чтобы компенсировать растущую мощность компьютеров, программисты используют фреймворки"