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