Иногда, когда я программирую, я обнаруживаю, что какая-то конкретная структура управления была бы очень полезна для меня, но не доступна напрямую в моем языке программирования. Я думаю, что моим самым распространенным желанием является что-то вроде «раздельного времени» (я понятия не имею, как на самом деле это назвать):
{
foo();
} split_while( condition ) {
bar();
}
Семантика этого кода заключается в том, что foo()
всегда выполняется, а затем проверяется условие. Если true, то bar()
запускается и мы возвращаемся к первому блоку (таким образом, снова запускаем foo()
и т. Д.). Благодаря комментарию пользователя reddit zxqdms я узнал, что Дональд Кнут пишет об этой структуре в своей статье «Структурированное программирование с go to
операторами» (см. Страницу 279) .
Какие альтернативные управляющие структуры вы считаете полезным для организации вычислений?
Моя цель здесь - дать себе и другим новые взгляды на структурирование кода, чтобы улучшить разбивку на части и рассуждения.
Примечание : я не спрашиваю о том, как обобщить все возможные структуры управления, будь то с помощью jne
, if
/ goto
, макросов Lisp, продолжений , монады, комбинаторы, кварки или что-то еще. Я спрашиваю, какие специализации полезны при описании кода.