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