Dmitry Astapov (_adept_) wrote,
Dmitry Astapov
_adept_

Иногда проще отдаться, чем объяснить, почему нельзя ...

Что-то сильно и плотно ударился в GSM. А ну-ка, сменим тему.

Расскажу я вам удивительную историю про скрипт на С.

В компании Х жил да был CVS. К нему был прикручен т.н. commit mailout - рассылка по почте уведомлений о коммитах в репозиторий, с указанием того, кто чего куда закоммитил, и каким комментарием сопроводил.

Будучи человеком неленивым, я подписался на все-все-все изменения, которые делались в CVS, и периодически их просматривал. Чтобы, значит, быть в курсе происходящего и периодически наставлять на путь истинный новичков.

И вот однаждые мои глаза цепляются за коммит, в метаданных которого указана версия 1.1 (т.е. самая-самая первая), а в комментарии которого написано "Скрипт на С".

Открываю, читаю. Вижу код примерно такого содержания (чур за синтаксические ошибки не шпынять!):

void main(argc, argv) {
f=fopen(argv[1]);
while(fgets(l,15,f)!=NULL) {
printf("Some Long Multiline Template with %s inside\n", l);
}
fclose(f);
}


Т.е. мы вычитываем из указанного файла какие-то идентификаторы, и суем их в нужное место шаблона. Заполненный шаблон выдаем на stdout.

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

Странно. Автор этого творения вроде бы отличался умом и сообразительностью... Почему он не взял bash/sed/perl? Зачем С? Это ж на порядок больше работы - надо чтобы кто-то компилировал и deploy-ил это творение на production серверах, давал права на исполение, а потом его оттуда удалял.

Иду к разработчику, около него уже стоит тестер, пришедший с тем же вопросом - "какого ...?"

Высняется следующее - к разработчику пришел менеджер проекта по миграции с одной большой системы на другую, поставил задачу и остался смотреть через плечо. Разработчик сделал двухстрочник на перле. Менеджер возразил, что перл будет тормозить. Разработчик показал скорость выполнения. Менеджер возразил, что это, мол, тут, на локальной машине, перл быстро работает, а там, на Загруженном Сервере - явно будет тормозить. Разработчик убеждал. Разработчик вызвал к здравому смыслу. Разработчик сгененрировал входной файл из 10 млн строк и показал скорость работы.

В конце-концов разработчик устал и спросил менеджера, что, по его мнению, надо делать. Менеджер сказал: "ну, вот я, например, решал бы такие критические задачи только на С ...". Не вопрос, - ответил разработчик. Перепишем на С. Только с тестерами, администраторами и сотрудниками поддержки будешь разбираться сам ... А менеджер возьми и согласись. Убить его не убили, но здоровье после этой истории у него уже было не то ...

С тех пор "скрипт на С" показывают всем менеджерам, любящим микро-менеджмент. И знаете - помогает :)
Tags: баечки, работа
Subscribe
  • Post a new comment

    Error

    default userpic

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 16 comments