Есть у нас здоровенный программный комплекс, обслуживающий научное оборудование. Оборудование весьма занимательное (на то и научное), поэтому и комплекс должен быть гибким: служит он такой куче исследований, что и сам не знаешь, на что именно натравишь этого монстра завтра.
Писался этот комплекс в три попытки. Первая представляла собой просто одиночную программу, которая перебиралась и перекомпилировалась, обрастая форками, ключами запуска и дефайнами до полной нередактибельности. Весь отдел ПО, вооружившись последними достижениями от MS, полгода ваял на Visual C++ замену. Итог: весь рабочий код уже обкатан на старой версии, язык C++, среда визуальная типа «интерфейс за один клик». Замена получилась модульная, и хотя перестыковка модулей осуществлялась с определённым сексом, приняли её на «ура».
Грянул кризис, утекли мозги, да и модульная софтина обросла костылями из-за трудностей с перестыковкой модулей. Свершилась третья попытка: руководство дало новым мозгам задание переписать всё заново, а для сокращения времени задействовали наимоднейшую концепцию «программирование без программирования» (UML и иже с ним: даёшь машине формулу, она в ответ — готовую программу). В этот раз в полгода уложиться явно не получилось: достижение стадии «самое начало комплекса уже иногда почти работает» вызвало всеобщий экстаз. Это, конечно, хорошо, но работать-то как?
Комплекс с сохранением модульности (только теперь модули перегруппировываются за секунду без всяких хитрых тайных знаний) я переписал в одно рыло (даже скорее в полрыла) вечерами за три месяца. Пользовался Open Watcom — дикой древней средой, в которой мышкой рисуются только диалоги. Си, «плюсы» в следовых количествах. Код полон if ((wParam&0xFFFF)==RUN_SERVO) SendCommand (MOTOR, 1); — кто знает WinAPI, тот поймёт, что такое ручная обработка оконных событий и какая это куча писанины. В теле сплошная работа непосредственно с указателями, проскакивают следы ассемблерных вставок. И почему же эта писанина совершенно не помешала мне работать в разы быстрее, чем все предшественники? Я вижу только две причины:
1) Работа программиста отнюдь не в наборе текста. Программист всё-таки не машинистка, скорость его работы не от количества знаков в минуту зависит.
2) Современные среды служат не для ускорения работы, а для снижения порога вхождения. Абстракция, оборачивающаяся во всё более и более толстую луковицу, нужна больше для сбора ста индусов в один хайвмайнд без их рассинхронизации (и вообще для того, чтобы индусы могли хоть как-то принять участие), а квалифицированному программисту, один раз изучившему системные «кирпичики», на которых держатся все разновидности таких сред, она производительность труда только снижает.
Завтра моя внеплановая четвёртая попытка, вызвавшая лёгкий шок, сдаётся в эксплуатацию. Бета выловила от силы полтора глюка — не в пример предшественникам (и это при том, что часть кода писалась вслепую без оборудования, с которым должна взаимодействовать). Вопрос напоследок: которая из четырёх версий обладает наибольшим быстродействием?
#3119: Квестовая цепочка
13:00 16.05.2010, IT happens
Как-то понадобилась помощь нашего админа по очередным ошибкам винды. Он в этом шарит, но не больно-то любит отвечать на вопросы чайников, а мне всё надо знать.
Обычно связь держим через мыло техподдержки. Пишу ему на мыло. Приходит ответ от автоответчика: «Если я вам СРОЧНО нужен, ищите меня в аське». Смотрю в аську: его там нет, стоит двухдневной давности статус: «Если я вам СРОЧНО нужен, ищите меня в скайпе». Иду в скайп. Смотрю статус: «Если я вам СРОЧНО нужен, ищите меня в контакте». Иду в контакт: «Если я вам СРОЧНО нужен, ищите меня по мобиле». Блин, а ведь правда, лучше б сразу позвонил, а то скоро терпение лопнет. Надо сказать, что номер немногие знают (тоже своеобразная защита от полных чайников), благодаря чему квест на этом этапе может зависнуть.
Звоню. Что бы вы думали? Автоответчик вещает: раз, мол, я такой упорный, что выполнил многоступенчатый квест, то, может, толк и выйдет. И на том конце поднимается трубка.
#3120: Наглядное пособие для отвода глаз
13:00 16.05.2010, IT happens
У на на работе стоит два сервера: обычный и конфиденциальный. Так вот, в отличие от многих «коллег», наш стелс-сервер находится не в потайной каморке, а прямо у меня в серверной.
Рецепт прост: на лист фанеры прикручиваются мамка, харды, блок питания и остальные внутренности. Всё это добро вешается на стенку с подписями, из чего состоит комп, как наглядное пособие для ламеров и интересующихся. А что оно жужжит — ну чтоб показать, что и как работает.
Удивительно, но ни одна комиссия не интересуется наглядным пособием, а над основным сервером они как только не издеваются. Как говорится, если хочешь что-то спрятать, положи это прямо перед глазами — никогда не найдут.
#3121: Песня из-за кулис
13:00 16.05.2010, IT happens