Страницы

Строительная аналогия в программировании

Думаю, найдётся мало таких программистов, которым бы не рассказывали про правильный подход к созданию программ через строительную аналогию. Под ней подразумевается, что перед тем, как что-то строить, его сначала нужно спроектировать. При этом под строительством в программировании подразумевается кодирование на языке, а под проектированием — создание высокоуровневой архитектуры. Знаете, почему так происходит? Думаю, из-за того, что те, кто приводят эту аналогию, плохо понимают в строительстве.

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

На деле же проектирование в строительстве — это создание информационной модели, создание которой во многом похоже на программирование и подвержено тем же проблемам: неясность того, что нужно, исходя из начальной постановки цели, внесение новых требований, итеративное перепроектирование при согласовании промежуточных результатов, сложность прогнозирования полного времени, нужного для проектирования, проблема сопровождения унаследованной архитектуры. Всё это есть в создании чего угодно довольно сложного, будь-то здание, машина, кино или ПО.

Даже существует обратное желание у строителей — чтобы у них тоже было как у программистов. Чтобы было достаточно спроектировать конструкцию, а дальше запустить свой build.sh и наблюдать, как строительный 3D-принтер строит задуманное.

Комментариев нет:

Отправить комментарий