понедельник, 19 января 2015 г.

Много счастливых возвращений

Один послушник сказал учителю Кайму: "Я слышал, что предпочтительнее иметь только один оператор возврата в одной функции. Вы согласны?"

Кайму спросил: "Где Ваша чаша?"

Монах извинился и ушёл, чтобы взять свою чашу.



Когда послушник вернулся, то показал учителю свою чашу и сказал: "Я слышал, что предпочтительнее иметь только один оператор возврата в одной функции. Вы согласны?"

Кайму спросил: "Почему в чаше нет риса?"

Монах извинился и ушёл, чтобы принести немного риса.



Когда послушник вернулся, то показал учителю свою чашу, полную дымящегося белого риса, и сказал: "Я слышал, что предпочтительнее иметь только один оператор возврата в одной функции. Вы согласны?"

Кайму взял у монаха чашу и поставил её на стол.

"Вы говорите об одном из самых древних принципов разработки, который называется Один Вход Один Выход", - сказал учитель. Затем он рассказал монаху о давно минувших славных днях кодирования, когда памяти было мало, компьютеры были медленными, а ресурсами надо было управлять с осторожностью. - "Язык С совсем не помогал с этим", - сказал Кайму, - "а Ассемблер и тем более. Так что, если Ваша функция что-то заимствовала, то Вашей же функции приходилось освобождать это обратно. А как это проще всего сделать? Поставив весь код для освобождения в одном месте, перед выходом из функции... Эта традиция продолжается и по сей день".

Затем Кайму рассказал о рождении объектов, о деструкторах и финализаторах. Он рассказал о сборке мусора, подсчёте ссылок и алгоритме пометок, о компиляторах, которые могут определить, когда объект выходит из области видимости. Он рассказал о буферах, которые могут расти по необходимости или же уничтожаться, о файлах, закрывающих самих себя, о пулах соединений и пулах потоков, а также о том, насколько чудесным и волшебным является современный зверинец языков, где монахи могут направить свою энергию на более интересные задачи, чем суета с malloc и free или goto fail.

"Да", - в конце концов сказал уставший монах. - "Но согласны ли Вы с принципом разработки Один Вход Один Выход или нет?"

Кайму взглянул на стол и спросил: "Почему рис в чаше белый, а не коричневый?"

Original: Many Happy Returns

1 комментарий: