Найти в Дзене
PHP Боярин

Кошка в пилораме и осьминог в авоське учат законотворчеству

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

Дело в том, что программист имеет дело с бесконечными и неупорядоченными сущностями: первозданным хаосом, непослушными электронами и человеческой глупостью.

Столяр, производя мебель из деревях, никогда не получает "на входе" деревяхи произвольной формы. Все они более-менее стандартные, и его задачей является доведение их до идеала, и сборка в понятные простому человеку стулья с гнутыми ножками.

Представим, что на склад доставили, вместо сухих досок, следующий набор: бревна, опилки, опалубка в бетоне, шифер и дохлую кошку. Что скажет вам столяр? Правильно: лучше не будем это повторять.

Александр Друзь изображает удивление столяра
Александр Друзь изображает удивление столяра

А для программиста это вполне нормально: входные данные могут быть любыми, в том числе содержать разные веселости, о которых нормальный пользователь и понятия не имеет, хотя сам порождает их ежедневно.

Поэтому первым делом приходится отвергнуть то, что совсем никак не подойдет для дела. Это прекрасно умеет делать мой любимый PHP: можно вспомнить принцип "php must die" и просто убить процесс, показав пользователю на прощание фигу и код ответа 400 ("Bad Request"). Сделав, таким образом, вид, что мы и не видели в нашей пилораме дохлой кошки.

Кстати, по этой причине также есть смысл проверить объект на пригодность к распилу заранее, а не в процессе: после распила дохлая кошка, как и шифер, произведут на нашу мастерскую неизгладимое впечатление.

Программист после всего этого выглядит как-то так
Программист после всего этого выглядит как-то так

Казалось бы, вот оно: работа же ощутимо сложнее столярного дела, го на завод, там все просто и понятно. Почему же все-таки программисту лучше?

А все потому, что программист никогда не проверяет этой корректности самостоятельно. На самом деле продукт деятельности программиста - закон, упорядочивающий окружающую белиберду. Столяр своими руками щупает каждое полено, а толковый разработчик на склад даже и не ходил.

Неприятно и трудозатратно вручную расчищать конюшни, поэтому известный греческий программист Геракл тоже не стал этого делать, делегировав задачу автоматической реке (звучало это, вероятно, примерно так: "пусть все, что не прикручено и не может самостоятельно удержаться на ногах, будет признано навозом и покинет помещение").

И самый главный бонус от всей этой истории - масштабируемость. Автоматическую мастерскую можно клонировать столько раз, на сколько хватит денег и наглости. Можно даже в какой-то момент отправить на покой самого программиста.

Уверен, он найдет чем заняться, сидя на мешках золота.