Кайму спросил: "Где Ваша чаша?"
Монах извинился и ушёл, чтобы взять свою чашу.
Когда послушник вернулся, то показал учителю свою чашу и сказал: "Я слышал, что предпочтительнее иметь только один оператор возврата в одной функции. Вы согласны?"
Кайму спросил: "Почему в чаше нет риса?"
Монах извинился и ушёл, чтобы принести немного риса.
Когда послушник вернулся, то показал учителю свою чашу, полную дымящегося белого риса, и сказал: "Я слышал, что предпочтительнее иметь только один оператор возврата в одной функции. Вы согласны?"
Кайму взял у монаха чашу и поставил её на стол.
"Вы говорите об одном из самых древних принципов разработки, который называется Один Вход Один Выход", - сказал учитель. Затем он рассказал монаху о давно минувших славных днях кодирования, когда памяти было мало, компьютеры были медленными, а ресурсами надо было управлять с осторожностью. - "Язык С совсем не помогал с этим", - сказал Кайму, - "а Ассемблер и тем более. Так что, если Ваша функция что-то заимствовала, то Вашей же функции приходилось освобождать это обратно. А как это проще всего сделать? Поставив весь код для освобождения в одном месте, перед выходом из функции... Эта традиция продолжается и по сей день".
Затем Кайму рассказал о рождении объектов, о деструкторах и финализаторах. Он рассказал о сборке мусора, подсчёте ссылок и алгоритме пометок, о компиляторах, которые могут определить, когда объект выходит из области видимости. Он рассказал о буферах, которые могут расти по необходимости или же уничтожаться, о файлах, закрывающих самих себя, о пулах соединений и пулах потоков, а также о том, насколько чудесным и волшебным является современный зверинец языков, где монахи могут направить свою энергию на более интересные задачи, чем суета с
malloc
и free
или goto fail
."Да", - в конце концов сказал уставший монах. - "Но согласны ли Вы с принципом разработки Один Вход Один Выход или нет?"
Кайму взглянул на стол и спросил: "Почему рис в чаше белый, а не коричневый?"
Original: Many Happy Returns