Oberon space

General Category => Общий раздел => Тема начата: valexey от Август 21, 2012, 08:38:39 am

Название: Про goto.
Отправлено: valexey от Август 21, 2012, 08:38:39 am
По моему следует уточнить из за чего goto (то, старое goto которое было в 70-х) было плохо и почему с ним боролись.

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

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

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

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

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

Таким образом я не вижу ничего страшного в использовании return'ов и throw в современных языках (там где это уместно). И даже goto иногда позволяет сделать код программы существенно читабельней. К нечитаемости программы goto уже не приводит (чтобы привело нужно специально постараться это сделать, обычный быдлокодер это не осилит, ибо регулярно будет получать ошибки компиляции).
Название: Re: Про goto.
Отправлено: Влад Жаринов от Август 21, 2012, 09:18:42 am
...
Собственно даже goto в современных языках (вроде С++ или того же Go) жестко ограничен, и уже не является неведомой фигней которая может кинуть нас вообще куда угодно (например за пределы текущей функции он не выкинет, также он не может перешагнуть через объявления переменных, то есть свобода маневра очень урезана).
...
В общем, "силуэтному" БП до второго далеко (ибо ДРАКОН-семантика игнорирует всё, кроме потока управления)... ;) так надо понимать?..
Название: Re: Про goto.
Отправлено: Губанов Сергей Юрьевич от Август 22, 2012, 03:26:42 am
По моему следует уточнить из за чего goto (то, старое goto которое было в 70-х) было плохо и почему с ним боролись.
Ага, а ещё с его зеркальным двойником -- инструкцией COMEFROM

http://en.wikipedia.org/wiki/COMEFROM
Название: Re: Про goto.
Отправлено: valexey от Август 22, 2012, 03:57:54 am
По моему следует уточнить из за чего goto (то, старое goto которое было в 70-х) было плохо и почему с ним боролись.
Ага, а ещё с его зеркальным двойником -- инструкцией COMEFROM

http://en.wikipedia.org/wiki/COMEFROM
Экие ужасы на ночь глядя ты находишь… Брр.