Инженерные системы, если не все, то почти все, используют побочные эффекты в реализации, более того, любая система состоит из побочных эффектов чуть менее чем полностью. Поясню на примере.
Возьмем ДВС. как работает ГРМ? Он использует побочный эффект от вращения коленвала, синхронизируя газообмен с положениями поршней. генератор использует побочный эффект вращения, вырабатывая энергию. Турбонаддув использует побочный эффект движения газа. Карбюратор (я знаю, что сейчас используются инжектора, а ты сделал уроки?) использует вакуум создаваемый в цилиндрах. Этот список можно продолжать до бесконечности. Использование побочных эффектов создает гениально-простую систему.
В современном программировании наблюдается обратный процесс — анальное отгораживание от побочных эффектов. Стимулируется создание не гениально-простых, а уродливо-сложных систем. Вы представляете себе ДВС, работающий без побочных эффектов? Если такое и возможно, то это была бы бесполезная тарахтелка размером в пол-евразии, и побочные эффекты все равно бы остались.
К сожалению, современный разработчик — это не инженер, а пользователь. Для него важней «семантика» — рули и педали, нежели то, как все действительно устроено. Он далек от понимания систем, которые он проектирует или создает, если данные определения вообще тут уместны, он создает что-то в том же смысле, что оператор станка ЧПУ — нажимает кнопки.