bash.im ithappens.me zadolba.li
9570

Ждём в гости космических дятлов

16 июля 2012, 07:15

Что было бы, если бы программисты строили дома? Не буду говорить за всех, но расскажу, как их строила бы наша команда из двух фрилансеров, программиста, время от времени ковыряющегося с паяльником, и аппаратчика, который не прочь написать пару строчек кода, а потом ещё пару сотен.

Дом построен из самых обычных на вид железобетонных плит. Впрочем, при просветке интравизором становится ясно, что если материал и имел что-то общее с железобетоном и плитами, то разве что на стадии выбора материала.

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

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

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

Дом обменивается служебной информацией с другими Домами.

Аварийный переход к полной автономии — штатный режим функционирования Дома, как и защита от неблагоприятных внешних факторов, не говоря уже об индивидуальном климат-контроле с воспроизведением, например, грозы.

99,5% времени наши Дома не тратят впустую энергию, а просто спят.

Первый же залетевший дятел, говорите, уничтожит цивилизацию? Нашу — только если это будет космический дятел, желающий санировать «шарик» полностью. Если успеет. У наших Домов очень силён защитный инстинкт — на сбор «ядерного кулака» из ничего уйдёт минут пятнадцать.

А все почему? Сразу были выкинуты напрочь все «современные» среды и технологии. Нам не хайвмайнд собирать, а работать надо. Был выбран компилятор с неплохой библиотекой, отвечающей нашим целям, генерирующий стабильный логичный код — разумеется, Си с «плюсами» в следовых количествах. Мы никогда не писали тест-кейсов — это пустая трата времени, если код написан очевидно. Вы же не пишете тест-кейсы для while(1)? Никогда не менялись работой — каждый должен сделать то, что умеет лучше, и суметь объяснить, как этим пользоваться. У нас никогда не было менеджера: нет бригады дармоедов — нет и работы для дармоед-контролёра.

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

Да, кстати, работает это добро (отказоустойчивая база данных, обмен данными между изолированными оконечными устройствами, восстановление после отказов любой степени критичности) на ATmega128 на 16 МГц. А прежние европейские цивилизованные разработчики, с менеджером, аджайлом и тест-кейсами, собирались переходить с PIC сразу на mini-ITX от VIA, не реализовав и четверти нашей функциональности.