Oberon space
General Category => Общий раздел => Тема начата: valexey от Февраль 23, 2011, 11:45:55 pm
-
И структурном программировании: http://habrahabr.ru/blogs/development/114326/
Дискуссия также интересна.
PS. Правильный (без goto) код в статье писан весь на Python'e :-)
-
Ну и ещё одна статья оттуда же про goto: http://habrahabr.ru/blogs/controllers/114270/
-
Может там и есть какой-нибудь интересный комментарий (я не нашел), но он тонет в куче всякого бреда от "ополченцев".
-
Необходимость в goto, множественных return из функции и множественных exit/break из цикла сводится к одному (по крайней мере, к одному) шаблону под названием "укороченное вычисление логических выражений". То есть, идет многоступенчатое, возможно, вложенное вычисление некоторых условий, и на каком-то шаге результат становится известным. Дальнейшие вычисления бессмысленны, а часто, в добавок, вообще невозможны.
Подозреваю, что сама по себе реализация укороченного вычисления логических выражений (речь не о шаблоне, а работе с булевыми переменными) также требует goto / множественных return из функции / множественных exit/break из цикла. Но это только мое предположение, я не занимался этой реализацией.
-
Ну видимо таки да. Оно нужно для реализации ленивого порядка вычислений.
-
А что именно "таки да"? Я не увидел никакой связи с предыдущим постом. Можно поподробнее?
-
Стиль скульптор, если дальнейшее вычисление не имеет смысла, выходим из функции прямо сейчас (ретурн из середины функции). Оно же в хаскеле например реализуется через монаду Maybe.
-
Не нравится мне это название "стиль скульптор". Оба слова неудачные.