– Да, на завод, но в другой отдел.
Давиденко попросил неделю на изучение состояния дел. Бриль обещал, но уже после обеденного перерыва пригласил на экстренное совещание.
Виталию оказалось достаточно нескольких часов, чтобы понять, что с тех пор, как он проводил заседание ПДПС, состояние дел на ИВЦ усугубилась. На двух ЭВМ «Минск-32» реально эксплуатировались три задачи: проверка копий массивов перфокарт полетных заданий, финальная обработка расчета аванса и расчета заработной платы. Все три программы были созданы Зенковым. Виталий познакомился с ним давно. Тогда Зенков работал в отделе Савченко. Зинков был инвалид с детства и имел соответствующие комплексы в характере и поведении. Видимо его фанатическое упрямство надоело: он упорно продолжал программировать на ламповой ЭВМ М-20 и не хотел переходить на БЭСМ-6. За это ему столь же упорно не повышали заработную плату, поэтому Зенков перешел на ИВЦ, как только узнал, что там заработала ЭВМ «Минск-32». Имея хорошие навыки по обработке информации на перфокартах, программы он создал чуть больше чем за полгода.
Первая задача решалась эпизодически по заявкам отдела технической документации КБ, а расчет аванса и зарплаты выполнялся по одному разу в месяц до двадцатого и пятого числа соответственно.
На самом деле расчеты аванса и заработной платы проводились на табуляторах, а затем итоговые перфокарты вводились в ЭВМ для распечатки выходных документов различного назначения: лицевых счетов, платежных ведомостей, группировок по шифрам производственных затрат и других.
Неделю на адаптацию Виталий просил по другой причине. Графики работ, задания исполнителям и проектная документация были в таком жалком состоянии, что Давиденко первым делом наметил создать документы, регламентирующие процесс проектирования и состав проектной и эксплуатационной документации на прикладное программное обеспечение. Как оказалось, московский отраслевой институт «Агат» за много лет ничего подобного не создал. «Агат» ограничился тиражирование устаревших проектных решений АСУ «Кунцево», разработка которой была обязана инициативе академика Глушкова из киевского Института кибернетики.
Из-за отвлечений на текущие горячие проблемы, Виталий потратил на организацию процесса почти месяц. Зато он создал три фундаментальных документа: «Инструкция по разработке и внедрению задач АСУ», «Нормативы трудоемкости и длительности разработки и программирования задач АСУ» и «Положение о Техническом совете ИВЦ».
Для этого Виталию пришлось перелопатить массу литературы, в основном переводы иностранных источников, а так же методические материалы фирмы IBM и отечественных специализированных проектных институтов АСУ Минска и Перми. Главное, что с начала июля документы вступили в силу и с тех пор работали безукоризненно. На удивление, Бриль их утвердил без возражений после беглого ознакомления.
Вечер того же дня
Вторник, 26 мая
Поток воспоминаний (5):
* * *
В конце мая Давиденко прошел знакомую проходную уже в качестве заместителя начальника ИВЦ по разработке. Замом по эксплуатации уже пять лет был Ковтенко. Он настороженно встретил весть о возвращении Давиденко в ИВЦ на должность зама по разработке. То, что он знал о Давиденко, предвещало борьбу за влияние на Бриля, тем более что зам по разработке считался первым заместителем начальника. В том, что в отделе почти каждый год менялся зам по разработке, была немалая заслуга Ковтенко, однако сам он не мог по своим знаниям занять это место, да и не хотел огромной ответственности, которая сопряжена с этой должностью. Лучше за такую же зарплату быть шофером и поругивать конструктора и производителя автомобиля за огрехи, чем самому создавать этот автомобиль с нуля.Давиденко попросил неделю на изучение состояния дел. Бриль обещал, но уже после обеденного перерыва пригласил на экстренное совещание.
Виталию оказалось достаточно нескольких часов, чтобы понять, что с тех пор, как он проводил заседание ПДПС, состояние дел на ИВЦ усугубилась. На двух ЭВМ «Минск-32» реально эксплуатировались три задачи: проверка копий массивов перфокарт полетных заданий, финальная обработка расчета аванса и расчета заработной платы. Все три программы были созданы Зенковым. Виталий познакомился с ним давно. Тогда Зенков работал в отделе Савченко. Зинков был инвалид с детства и имел соответствующие комплексы в характере и поведении. Видимо его фанатическое упрямство надоело: он упорно продолжал программировать на ламповой ЭВМ М-20 и не хотел переходить на БЭСМ-6. За это ему столь же упорно не повышали заработную плату, поэтому Зенков перешел на ИВЦ, как только узнал, что там заработала ЭВМ «Минск-32». Имея хорошие навыки по обработке информации на перфокартах, программы он создал чуть больше чем за полгода.
Первая задача решалась эпизодически по заявкам отдела технической документации КБ, а расчет аванса и зарплаты выполнялся по одному разу в месяц до двадцатого и пятого числа соответственно.
На самом деле расчеты аванса и заработной платы проводились на табуляторах, а затем итоговые перфокарты вводились в ЭВМ для распечатки выходных документов различного назначения: лицевых счетов, платежных ведомостей, группировок по шифрам производственных затрат и других.
Неделю на адаптацию Виталий просил по другой причине. Графики работ, задания исполнителям и проектная документация были в таком жалком состоянии, что Давиденко первым делом наметил создать документы, регламентирующие процесс проектирования и состав проектной и эксплуатационной документации на прикладное программное обеспечение. Как оказалось, московский отраслевой институт «Агат» за много лет ничего подобного не создал. «Агат» ограничился тиражирование устаревших проектных решений АСУ «Кунцево», разработка которой была обязана инициативе академика Глушкова из киевского Института кибернетики.
Из-за отвлечений на текущие горячие проблемы, Виталий потратил на организацию процесса почти месяц. Зато он создал три фундаментальных документа: «Инструкция по разработке и внедрению задач АСУ», «Нормативы трудоемкости и длительности разработки и программирования задач АСУ» и «Положение о Техническом совете ИВЦ».
Для этого Виталию пришлось перелопатить массу литературы, в основном переводы иностранных источников, а так же методические материалы фирмы IBM и отечественных специализированных проектных институтов АСУ Минска и Перми. Главное, что с начала июля документы вступили в силу и с тех пор работали безукоризненно. На удивление, Бриль их утвердил без возражений после беглого ознакомления.
Вечер того же дня
Альбина встретила Виталия так, словно ничего не произошло. После дождя выдался чудесный вечер. Небо очистилось полностью и все вокруг отмытое дождем сверкало чистотой и дышало свежестью. После торопливого ужина Альбина потащила всех на прогулку. Маршрут вечерних прогулок часто включал посещение известного в городе магазина «Колбасы» на улице Петровского и булочной. Пакет тонко нарезанной колбасы высшего сорта «Сервелат» и несколько городских булок шли на изготовление бутербродов, которые съедались на лавочке в парке или дома после прогулки. Лавки были мокрые после дождя или занятые, поэтому бутерброды большей частью дожили до чаепития после прогулки.
Дети со свежего воздуха быстро заснули. Альбина и Виталий тоже легли в постель раньше обычного. Альбина была ласковой и активной более обыкновенного, что даже смутило Виталия. Он боялся, что их отношения трансформируются в модель «любовь-ссора», детально описанную Стендалем и упомянутую Львом Толстым.
Когда умиротворенная Альбина приготовилась заснуть на плече Виталия, он произнес:
– Малышка, ты давно читала «Трактат о любви» Стендаля?
– Не помню! А в чем дело?
– Меня пугают наши бурные примирения после ссор без видимой причины. Так не долго привыкнуть искать повод для ссоры ради следующего за ней сладкого примирения.
– Тебе не хочется мириться?
– Напротив, мне не хочется ссориться!
– Так не ссорься!
– Ты думаешь это просто?
– Опять я виновата!
– Может, виноват я, но убей бог, не знаю, в чем состоит моя вина и как ее избежать.
– Поменьше возражай, больше соглашайся. У тебя и в отношениях с Брилем те же проблемы – твой характер.
– Ну не могу я посыпать голову пеплом просто так, когда кому-то этого хочется. И не сравнивай себя с Брилем. У нас с ним конфликт интересов, которого, вообще говоря, не должно было быть. Ему хочется, чтобы все было сделано без всяких усилий с его стороны и чтобы я был в дерьме. Парадокс, но теперь он готов завалить дело только для того, чтобы меня замарать. До меня таким способом он избавился от четырех замов.
– У вас что-то произошло?
– Не хотел тебе говорить, чтобы не расстраивать, но ты мое плохое настроение истолковываешь в другой плоскости, принимаешь на свой счет, поэтом приходится признаваться. Он занялся очковтирательством. В декабре директор написал письмо замминистра по поводу ошибки в пятилетнем плане, я тебе говорил об этом. Бриль в Москву не поехал и меня не пустил, чтобы решить вопрос. А за первый квартал отписал полное выполнение. Теперь я в дураках и директор тоже. Директору на это плевать, а мне нужно сделать за два года план четырех лет. У нас есть кое-какой задел. Один год мы бы наверстали, но не два. Я не кудесник и мои люди тоже. Он же сам тормозил начало работ по переходу на ЕС. Мы потеряли вчистую больше чем полгода. И теперь не помогает. У нас забирают машинное время, он соглашается и мне не дает разрешения на выход к Деду.
– А как же ваш директор?
– Бондаренко подчиняется Сергеичеву и не будет за нас бодаться, если Бриль ставит согласующую подпись под графиком распределения машинного времени ЕС-1033.
– Ой, я так волнуюсь!
– Оставь все это! Меня больше беспокоят наши отношения. Эти скандалы на ровном месте…
– Для тебя на ровном, ты толстокожий…
– Это не так уж плохо для мужчины. Спи, завтра нам на работу.
Он поцеловал Альбину в висок, глаза, потом в губы… Заснули они не скоро.
Дети со свежего воздуха быстро заснули. Альбина и Виталий тоже легли в постель раньше обычного. Альбина была ласковой и активной более обыкновенного, что даже смутило Виталия. Он боялся, что их отношения трансформируются в модель «любовь-ссора», детально описанную Стендалем и упомянутую Львом Толстым.
Когда умиротворенная Альбина приготовилась заснуть на плече Виталия, он произнес:
– Малышка, ты давно читала «Трактат о любви» Стендаля?
– Не помню! А в чем дело?
– Меня пугают наши бурные примирения после ссор без видимой причины. Так не долго привыкнуть искать повод для ссоры ради следующего за ней сладкого примирения.
– Тебе не хочется мириться?
– Напротив, мне не хочется ссориться!
– Так не ссорься!
– Ты думаешь это просто?
– Опять я виновата!
– Может, виноват я, но убей бог, не знаю, в чем состоит моя вина и как ее избежать.
– Поменьше возражай, больше соглашайся. У тебя и в отношениях с Брилем те же проблемы – твой характер.
– Ну не могу я посыпать голову пеплом просто так, когда кому-то этого хочется. И не сравнивай себя с Брилем. У нас с ним конфликт интересов, которого, вообще говоря, не должно было быть. Ему хочется, чтобы все было сделано без всяких усилий с его стороны и чтобы я был в дерьме. Парадокс, но теперь он готов завалить дело только для того, чтобы меня замарать. До меня таким способом он избавился от четырех замов.
– У вас что-то произошло?
– Не хотел тебе говорить, чтобы не расстраивать, но ты мое плохое настроение истолковываешь в другой плоскости, принимаешь на свой счет, поэтом приходится признаваться. Он занялся очковтирательством. В декабре директор написал письмо замминистра по поводу ошибки в пятилетнем плане, я тебе говорил об этом. Бриль в Москву не поехал и меня не пустил, чтобы решить вопрос. А за первый квартал отписал полное выполнение. Теперь я в дураках и директор тоже. Директору на это плевать, а мне нужно сделать за два года план четырех лет. У нас есть кое-какой задел. Один год мы бы наверстали, но не два. Я не кудесник и мои люди тоже. Он же сам тормозил начало работ по переходу на ЕС. Мы потеряли вчистую больше чем полгода. И теперь не помогает. У нас забирают машинное время, он соглашается и мне не дает разрешения на выход к Деду.
– А как же ваш директор?
– Бондаренко подчиняется Сергеичеву и не будет за нас бодаться, если Бриль ставит согласующую подпись под графиком распределения машинного времени ЕС-1033.
– Ой, я так волнуюсь!
– Оставь все это! Меня больше беспокоят наши отношения. Эти скандалы на ровном месте…
– Для тебя на ровном, ты толстокожий…
– Это не так уж плохо для мужчины. Спи, завтра нам на работу.
Он поцеловал Альбину в висок, глаза, потом в губы… Заснули они не скоро.
Вторник, 26 мая
Бриль появился на рабочем месте с опозданием. В своем костюме в коричневых тонах и белоснежной рубашке он выглядел загорелым и жизнерадостным. До оперативки с ним поговорить не удалось. Бриль не отпускал трубку телефона. Он звонил и ему звонили из Совета ветеранов, парткома и профкома. Да и оперативка превратилась в час воспоминаний о поездке от Керчи до Севастополя по местам боев.
Все разошлись, кроме Голевского. Виталий хотел для начала поговорить с Брилем один на один, но Голевский упорно не уходил.
– Анатолий Петрович, есть серьезный вопрос. Завтра на один день приезжает Алешкин проверять ход выполнения плана по разделу АСУ, – начал разговор Давиденко.
Бриль потемнел лицом и насторожился. Он промолчал и Давиденко продолжил.
– Меня удивило, что вы отчитались за первый квартал о выполнении. Вы ведь не забыли, что Бондаренко подписал письмо на имя зам министра по поводу корректировки плана.
– Нам отказали!
– Кто и когда? Документа я не видел…
– Не нужно со мной разговаривать прокурорским тоном, я не обязан перед вами отчитываться…
– Понятно! Документа нет. Вас уговорил Алешкин, чтобы скрыть свою ошибку. Вам нужно повидаться с Бондаренко и все ему объяснить.
– Мне не нужны ваши рекомендации. Пока не вы начальник отдела. Нужно лучше работать! Идите, работайте! Распустили людей по турпоходам…
– Они оформились в счет ежегодного отпуска. Что в этом незаконного?! Вы тоже не из забоя вернулись…
– Виталий Семенович, сравнил хрен с пальцем! – вступился за Бриля Голевский.
– За пять месяцев вы не нашли неделю для поездки в Москву и меня не пустили, – почти прокричал Давиденко и покинул кабинет и приемную.
Персонал диспетчерской группы и секретарь проводили его удивленно-любопытными взглядами.
Настроение у Виталия было испорчено окончательно и до конца дня. Бриль больше его не вызывал. В заводскую столовку на обед Виталий пошел в обычный перерыв, чтобы не столкнуться с Брилем в «офицерском» зале. Судя по нескольким эпизодам, Голевский ходил за начальником весь день, как щенок за сукой.
Начальники бюро разработки Сергей Андреев и Борис Бурцев были в упомянутом начальником туристическом походе, кстати, их заявления на отпуск подписал Бриль собственноручно, поэтому Виталию пришлось решить несколько мелких вопросов, с которыми к нему обратились разработчики и программисты. Рутина его немного отвлекла от тягостных раздумий, пока он не стал подбирать документы для завтрашнего разговора с Алешкиным. Воспоминания нахлынули на него опять.
В бумагах была полная история работ по переходу на ЕС ЭВМ: графики работ, методические указания отраслевого института «Агат», разнарядки на поставку вычислительной техники, проект пятилетнего плана, копия письма директора заму министра, приказы и графики выделения машинного времени и многое другое.
Все разошлись, кроме Голевского. Виталий хотел для начала поговорить с Брилем один на один, но Голевский упорно не уходил.
– Анатолий Петрович, есть серьезный вопрос. Завтра на один день приезжает Алешкин проверять ход выполнения плана по разделу АСУ, – начал разговор Давиденко.
Бриль потемнел лицом и насторожился. Он промолчал и Давиденко продолжил.
– Меня удивило, что вы отчитались за первый квартал о выполнении. Вы ведь не забыли, что Бондаренко подписал письмо на имя зам министра по поводу корректировки плана.
– Нам отказали!
– Кто и когда? Документа я не видел…
– Не нужно со мной разговаривать прокурорским тоном, я не обязан перед вами отчитываться…
– Понятно! Документа нет. Вас уговорил Алешкин, чтобы скрыть свою ошибку. Вам нужно повидаться с Бондаренко и все ему объяснить.
– Мне не нужны ваши рекомендации. Пока не вы начальник отдела. Нужно лучше работать! Идите, работайте! Распустили людей по турпоходам…
– Они оформились в счет ежегодного отпуска. Что в этом незаконного?! Вы тоже не из забоя вернулись…
– Виталий Семенович, сравнил хрен с пальцем! – вступился за Бриля Голевский.
– За пять месяцев вы не нашли неделю для поездки в Москву и меня не пустили, – почти прокричал Давиденко и покинул кабинет и приемную.
Персонал диспетчерской группы и секретарь проводили его удивленно-любопытными взглядами.
Настроение у Виталия было испорчено окончательно и до конца дня. Бриль больше его не вызывал. В заводскую столовку на обед Виталий пошел в обычный перерыв, чтобы не столкнуться с Брилем в «офицерском» зале. Судя по нескольким эпизодам, Голевский ходил за начальником весь день, как щенок за сукой.
Начальники бюро разработки Сергей Андреев и Борис Бурцев были в упомянутом начальником туристическом походе, кстати, их заявления на отпуск подписал Бриль собственноручно, поэтому Виталию пришлось решить несколько мелких вопросов, с которыми к нему обратились разработчики и программисты. Рутина его немного отвлекла от тягостных раздумий, пока он не стал подбирать документы для завтрашнего разговора с Алешкиным. Воспоминания нахлынули на него опять.
В бумагах была полная история работ по переходу на ЕС ЭВМ: графики работ, методические указания отраслевого института «Агат», разнарядки на поставку вычислительной техники, проект пятилетнего плана, копия письма директора заму министра, приказы и графики выделения машинного времени и многое другое.
Поток воспоминаний (5):
Первые месяцы работы на новом месте были сплошным кошмаром. Еще до ухода в ХАИ Виталий посещал по вечерам ИВЦ, где освоил программирование на языке КОБОЛ для ЭВМ «Минск-32». Он написал и отладил на искусственных массивах данных несколько достаточно сложных программ. Одна из них была программой расчета состава изделий на основании конструкторских спецификаций узлов. Эту базовую программу для расчета потребностей в ресурсах на изделия дискретного производства называли на профессиональном жаргоне программой «разузлования». Программа Виталия не имела практического значения, так как базировалась на условных структурах данных, но содержала все тонкости логики и алгоритма решения данной задачи.
Давиденко был лично знаком со многими руководителями и работниками ИВЦ также в результате контактов при выполнении своих прямых обязанностей. Его лаборатория спроектировала и организовала изготовление оборудования для хранилища магнитных лент, тележек для комплектования носителей под сменное задание операторам ЭВМ. Виталий подготовил при участии Корниенко, начальника бюро разработки задач бухгалтерского учета, детальную инструкцию по учету отработанного времени персоналом предприятия для переноса информации на перфокарты с целью расчета заработной платы на табуляторах.
В первый день работы после обеденного перерыва Бриль пригласил Давиденко в свой кабинет. Там все еще размещался стол Ковтенко.
– Виталий Семенович, обещал не трогать вас неделю, но чрезвычайные обстоятельства заставили.
– Что собственно произошло?
– Опробовали программу разузлования. Один прибор на пятьсот спецификаций раскрывался восемь часов. В разработке и производстве полторы тысячи приборов и это без испытательной аппаратуры, которую мы тоже должны раскрывать. Катастрофа!
– Кто автор программы?
– Екатерина Петренко.
– Насколько я помню, очень толковая девушка.
– Да, старательная! На седьмом месяце беременности окончила курсы программирования в Москве, успела родить и вышла на работу сразу после декретного отпуска.
– Ее муж консультировал, программист 8-го отделения КБ. Работает на СМ-2. Не понимаю, что он мог посоветовать?! – вставил Ковтенко.
В кабинет плотной группой вошли участники совещания: Есина – начальник бюро разработки в то время, Андреев – еще молодой специалист, Денисова – начальник бюро программирования и Петренко – автор программы.
– Докладывайте!
– Что докладывать! Программа постоянно перематывает ленту на начало. Почему, пока не понимаю! – ответила за всех Петренко.
– Анатолий Петрович, пусть сначала расскажут об организации данных, например, массива спецификаций, – вмешался Давиденко.
– Каждая спецификация оформлена как отдельный файл, – ответила за всех Петренко.
– Тогда все понятно! Вы знаете средний размер спецификации? Вы снимали такую статистику?
– Нет! А зачем?
– Как можно проектировать процесс и алгоритмы обработки данных, не имея представления о количественных характеристиках этих самых данных! – продолжил Давиденко. – Так вот, спецификация в среднем имеет четыре записи. Есть сто, есть двести, но в среднем четыре детали или узла. Остальное – покупные изделия, которые в разузловании не участвуют. У вас лента содержит на восемьдесят процентов пустоту – метки файлов. Кроме того, стандартная программа открытия файла всегда перематывает ленту на начало или конец.
– У меня свой каталог файлов, где хранится номер физического блока начала файла конкретной спецификации, – не сдавалась Екатерина.
– Это только увеличивает накладные расходы. Кто разрабатывал постановку задачи разузлования? – спросил Давиденко.
– Мое бюро, – ответила Есина. – Но мы определили только структуру записи и общие требования. Физическая структура задана программистами.
– Понятно. Главное вы отдали на откуп программистам. Для окончательного решения мне нужно поработать с Екатериной над конкретным алгоритмом. Поэтому предлагаю совещание закрыть.
– Виталий Семенович, мне нужно решение уже сегодня. У нас сорваны все сроки разработки, – подал голос Бриль.
– Решение будет сегодня. Насколько я знаю, вы работаете над задачей разузлования более полугода. Полдня можно потерпеть.
Бриль поморщился.
– С восьми утра сегодня – это уже ваши проблемы, – добавил Бриль.
Ковтенко растянул губы в язвительной усмешке.
Рабочий стол Виталия временно разместили прямо в машинном зале, пока ремонтировали комнату на втором этаже. Сидеть в кабинете вместе с Брилем Виталий отказался. Будут постоянно отвлекать посетители начальника и звонки.
– Садитесь! – Виталий предложил стул Екатерине.
– Можно, я приглашу мужа. Он мне помогал в разработке блок-схемы программы. Боюсь, я что-нибудь упущу и вечером не смогу ему толком рассказать.
– Приглашайте!
Екатерина позвонила мужу по телефону. Она не стала вдаваться в детали, просто пригласила обсудить алгоритм с новым замом по разработке.
– Будет через пятнадцать минут.
– Подождем.
– Понимаете, это моя первая программа. Спросить не у кого. Все ребята у нас из первого выпуска системотехников ХИРЭ. А там и преподаватели не знакомы с обработкой данных. Все они специалисты по автоматике и автоматическому управлению.
– Могли бы почитать литературу. Например, работу Джадда «Работа с файлами». Она переведена на русский язык.
– Нужно еще знать, что прочитать.
– Нужно работать с литературой, прежде чем изобретать велосипед. В мире пятнадцать лет работают с последовательными файлами, в частности, с ленточными. Уже выработаны принципы проектирования эффективных систем обработки. Нужно, чтобы все немедленно познакомились с этой книгой.
Появился высокий красивый парень. Екатерина тоже была не дурна собой: высокая, красивое лицо, карие глаза, ровные ноги. Пожалуй, несколько плоская фигура.
Она представила мужа Давиденко:
– Так какие проблемы с алгоритмом вы обнаружили? – самоуверенным тоном спросил Алексей.
– Физическая организация данных выбрана неверно. Записи всех спецификаций должны быть в одном файле, упорядоченном по обозначению спецификации. Кроме того, нужно раскрывать сразу пакет приборов, а не один. Главный принцип эффективной работы с последовательными файлами гласит, что за один просмотр файла нужно выбирать максимальный объем информации. Если изделия имеют до пятнадцати уровней вхождения (в среднем десять), то десять просмотров неизбежны. Идентификатор прибора должен быть в каждой записи выходного файла, тогда соответствующая сортировка позволит распечатать или разрезать выходной файл на части как угодно. Хотя и дальнейшую обработку тоже целесообразно выполнять пакетом. Эффективность еще выше, из-за того что многие спецификации входят в несколько приборов. Наконец, я сомневаюсь в целесообразности построения трехуровневого индекса. Индексы эффективны только при прямом доступе к блокам данных или записям.
– О боже! Это значит, нужно все выбросить и начать заново
– Ничего не нужно переделывать! Каталог эффективен, потому что мы осуществляем поиск по номеру блока, а это быстрее, чем последовательное чтение, – возразил Алексей.
– Не буду спорить без цифр на руках. Можно оценить, что эффективнее: поиск в каталоге, потом в файле или сразу поиск в файле. Особенно если в последнем случае при поиске спецификации обрабатывать информацию непосредственно в буфере ввода.
– Это элементарно! – отреагировал Алексей.
– Согласен, что элементарно, если знаешь временные характеристики накопителя на магнитной ленте. Каталог можно оставить по другой причине. Чтобы не нарушать структуру программы.
– Я все поняла, доработаю за неделю. А пакетный вариант можно сделать и позже. Программа разузлования держит все. Хотя не знаю, что мы будем делать без программы корректировки файла расцеховок.
– Вы имеете в виду, файл технологических маршрутов.
– Да. Бодрова никак не может сдать программу, а через две недели уходит в декрет.
– А там что за проблема?
– Все время нарушается сортировка выходного массива, пропадают записи: то основного файла, то корректуры.
– Все ясно, неверный алгоритм слияния файлов. Я посмотрю. Кстати, в упомянутой мною книге приведен алгоритм слияния любого количества файлов. Для каждого файла нужно иметь две булевы переменные: открыт/закрыт, читать/не читать. Установка первой переменной понятна, а установка второй определяется по результатам сравнения ключей каждого файла друг с другом.
– Бог мой, я использую нечто подобное при корректировке спецификаций, хотя Джадда не читала.
– Это говорит о наличии у вас алгоритмических способностей!
– Спасибо! Но судя по всему не очень.
– Все будет отлично. Я уверен.
Так оно и оказалось. Через месяц программа разузлования в пакетном варианте была сдана в эксплуатацию. Анализ программы Бодровой показал, что Виталий оказался прав. Для трех файлов, двух на входе и одного на выходе начинающая программистка ухитрилась написать восемнадцать программных блоков для различных вариантов сравнения текущих значений ключей входных файлов. С помощью Екатерины она доработала и сдала программу в эксплуатацию до ухода в декрет. Бодрова занималась своей программой почти девять месяцев, что дало повод для соответствующих шуток.
Давиденко пришлось срочно провести техническую учебу с разработчиками и программистами по материалам книги Джадда. Виталий настоятельно порекомендовал всем еще раз с ней ознакомиться самостоятельно.
Так за полтора месяца было закрыто три пункта плана, а еще предстояло выполнить двадцать. По некоторым пунктам работа еще не начиналась. Все программисты использовали в качестве языка программирования ЯСК, язык символического кодирования. По сути это машинный язык со стандартными подпрограммами ввода-вывода данных для соответствующих носителей: магнитной ленты, перфокарт, перфоленты, устройства печати.
Виталий недоумевал, почему не используется язык высокого уровня КОБОЛ, специально предназначенный для обработки организационно-экономической и учетной информации. Производительность труда программиста с использованием КОБОЛ в три-пять раз выше, чем на ЯСК.
Сначала он побеседовал со своими подчиненными. Все в один голос указывали на Ковтенко. Это он подсунул Брилю журнальную статью, где приводились сравнение быстродействия тестовых программ на языках высокого уровня и машинно-ориентированных языках. Время решения тестовых задач на машинном языке в среднем было почти в два раза меньше, чем для языков высокого уровня. Этот факт был широко известным, знал о нем и Виталий. Действительно существовал класс задач, которые было не эффективно программировать на языках высокого уровня, потому что экономия на программировании затем оборачивалась потерями в процессе эксплуатации. Но в их ситуации, когда на годы срывались сроки реализации плана по АСУ, когда две ЭВМ использовались с натяжкой четыре часа в сутки при нормативе пятнадцать часов, причем три часа из четырех на отладку программ, запрет программировать на языке КОБОЛ выглядел, по меньшей мере, как недомыслие. На самом деле это был откровенный саботаж.
Виталий так и сказал об этом Брилю при разговоре наедине:
– Конечно, вы как ответственный за разработку можете использовать КОБОЛ, но сдавать программу вы должны службе эксплуатации, поэтому вы должны убедить Петра Федосеевича.
– Не понимаю вас. Вопрос КОБОЛ или ЯСК всего на всего вопрос затрат ресурсов. Например, программа корректировки любого файла нормативно-справочной информации будет содержать следующие этапы: ввод перфокарт корректуры и запись на магнитную ленту, ленточная сортировка корректуры, слияние корректуры с исходным массивом, распечатка протокола корректировки и вывод обновленной версии файла. Потом получение страховочной копии. От языка программирования зависит длительность только этапа слияния, поэтому общее время корректировки файла увеличится не более чем на десять минут, например, с сорока до пятидесяти.
– Давайте проведем совещание, пригласим ваших специалистов и от служб эксплуатации: электронщиков, операторов…
– Не возражаю против совещания, однако не понимаю вас. Ресурсами отдела распоряжаетесь вы или Ковтенко? У него есть утвержденные нормативы времени решения задач?
– Нет, машины все равно не загружены.
– Не имеет значения. Сегодня не загружены, через год не будет хватать машинного времени, если не планировать загрузку ЭВМ строго по нормативам.
– Я считаю, что вы как разработчики и должны выдавать нормативы.
– С этим замечанием полностью согласен. Инструкции по эксплуатации будут теперь содержать нормативы времени в обязательном порядке. А после утверждения вами инструкции операторам, Ковтенко должен взять под козырек и исполнять, а не диктовать на каком языке программирования нам разрабатывать программы.
– Все же я просил бы вас доложить все это на совещании.
– Назначайте время проведения и состав участников.
– А вы не боитесь, что переход на КОБОЛ приведет к еще большему отставанию от плановых сроков.
– Задержка на обучение займет от силы один месяц. Потом мы наверстаем этот месяц и догоним плановые сроки. Уж это я могу гарантировать.
На совещании Ковтенко не поддержали даже его подчиненные, кроме Голевского, настолько абсурдна была его забота о гипотетической экономии десятков минут на фоне реальной потери сотен часов машинного времени ЭВМ в месяц из-за простоя.
Все разработчики и программисты получили на июль месяц план работ, расписанный по часам. Для программистов предусматривалось время на освоение языка КОБОЛ. Каждый из них получил по экземпляру учебника, из партии, закупленной в срочном порядке через отдел научно-технической информации.
Каждый четверг проводилось заседание технического совета, где рассматривались предложения разработчиков по реализации задач обработки данных: структуры файлов и блок-схема макро алгоритма.
Разработчиков нужно было обучить культуре проведения совещаний: сначала наметить цель, сформулировать критерии выбора решения и ограничения, потом сгенерировать все мыслимые варианты решений, дать им оценку и выстроить в порядке предпочтения. В этих условиях каждый участник совещания мог считать себя автором принятого решения.
Виталий придерживался концепции, что разработку алгоритма задачи нельзя передоверять программистам.
Анатолий Долгих, программист, который, кстати, освоил КОБОЛ быстрее всех, противился нововведениям больше всех.
– Виталий Семенович! Вы превращаете нас в заурядных кодировщиков. Никакого творчества!
– Нам нужны надежные и высокоэффективные программы. Хочешь творить переходи в разработку. Но, должен заметить, что никто не мешает тебе при согласовании технического задания на программирование предложить другой вариант алгоритма. Ни одно решение технический совет не утверждает, не выслушав мнение программиста.
Давиденко был лично знаком со многими руководителями и работниками ИВЦ также в результате контактов при выполнении своих прямых обязанностей. Его лаборатория спроектировала и организовала изготовление оборудования для хранилища магнитных лент, тележек для комплектования носителей под сменное задание операторам ЭВМ. Виталий подготовил при участии Корниенко, начальника бюро разработки задач бухгалтерского учета, детальную инструкцию по учету отработанного времени персоналом предприятия для переноса информации на перфокарты с целью расчета заработной платы на табуляторах.
В первый день работы после обеденного перерыва Бриль пригласил Давиденко в свой кабинет. Там все еще размещался стол Ковтенко.
– Виталий Семенович, обещал не трогать вас неделю, но чрезвычайные обстоятельства заставили.
– Что собственно произошло?
– Опробовали программу разузлования. Один прибор на пятьсот спецификаций раскрывался восемь часов. В разработке и производстве полторы тысячи приборов и это без испытательной аппаратуры, которую мы тоже должны раскрывать. Катастрофа!
– Кто автор программы?
– Екатерина Петренко.
– Насколько я помню, очень толковая девушка.
– Да, старательная! На седьмом месяце беременности окончила курсы программирования в Москве, успела родить и вышла на работу сразу после декретного отпуска.
– Ее муж консультировал, программист 8-го отделения КБ. Работает на СМ-2. Не понимаю, что он мог посоветовать?! – вставил Ковтенко.
В кабинет плотной группой вошли участники совещания: Есина – начальник бюро разработки в то время, Андреев – еще молодой специалист, Денисова – начальник бюро программирования и Петренко – автор программы.
– Докладывайте!
– Что докладывать! Программа постоянно перематывает ленту на начало. Почему, пока не понимаю! – ответила за всех Петренко.
– Анатолий Петрович, пусть сначала расскажут об организации данных, например, массива спецификаций, – вмешался Давиденко.
– Каждая спецификация оформлена как отдельный файл, – ответила за всех Петренко.
– Тогда все понятно! Вы знаете средний размер спецификации? Вы снимали такую статистику?
– Нет! А зачем?
– Как можно проектировать процесс и алгоритмы обработки данных, не имея представления о количественных характеристиках этих самых данных! – продолжил Давиденко. – Так вот, спецификация в среднем имеет четыре записи. Есть сто, есть двести, но в среднем четыре детали или узла. Остальное – покупные изделия, которые в разузловании не участвуют. У вас лента содержит на восемьдесят процентов пустоту – метки файлов. Кроме того, стандартная программа открытия файла всегда перематывает ленту на начало или конец.
– У меня свой каталог файлов, где хранится номер физического блока начала файла конкретной спецификации, – не сдавалась Екатерина.
– Это только увеличивает накладные расходы. Кто разрабатывал постановку задачи разузлования? – спросил Давиденко.
– Мое бюро, – ответила Есина. – Но мы определили только структуру записи и общие требования. Физическая структура задана программистами.
– Понятно. Главное вы отдали на откуп программистам. Для окончательного решения мне нужно поработать с Екатериной над конкретным алгоритмом. Поэтому предлагаю совещание закрыть.
– Виталий Семенович, мне нужно решение уже сегодня. У нас сорваны все сроки разработки, – подал голос Бриль.
– Решение будет сегодня. Насколько я знаю, вы работаете над задачей разузлования более полугода. Полдня можно потерпеть.
Бриль поморщился.
– С восьми утра сегодня – это уже ваши проблемы, – добавил Бриль.
Ковтенко растянул губы в язвительной усмешке.
Рабочий стол Виталия временно разместили прямо в машинном зале, пока ремонтировали комнату на втором этаже. Сидеть в кабинете вместе с Брилем Виталий отказался. Будут постоянно отвлекать посетители начальника и звонки.
– Садитесь! – Виталий предложил стул Екатерине.
– Можно, я приглашу мужа. Он мне помогал в разработке блок-схемы программы. Боюсь, я что-нибудь упущу и вечером не смогу ему толком рассказать.
– Приглашайте!
Екатерина позвонила мужу по телефону. Она не стала вдаваться в детали, просто пригласила обсудить алгоритм с новым замом по разработке.
– Будет через пятнадцать минут.
– Подождем.
– Понимаете, это моя первая программа. Спросить не у кого. Все ребята у нас из первого выпуска системотехников ХИРЭ. А там и преподаватели не знакомы с обработкой данных. Все они специалисты по автоматике и автоматическому управлению.
– Могли бы почитать литературу. Например, работу Джадда «Работа с файлами». Она переведена на русский язык.
– Нужно еще знать, что прочитать.
– Нужно работать с литературой, прежде чем изобретать велосипед. В мире пятнадцать лет работают с последовательными файлами, в частности, с ленточными. Уже выработаны принципы проектирования эффективных систем обработки. Нужно, чтобы все немедленно познакомились с этой книгой.
Появился высокий красивый парень. Екатерина тоже была не дурна собой: высокая, красивое лицо, карие глаза, ровные ноги. Пожалуй, несколько плоская фигура.
Она представила мужа Давиденко:
– Так какие проблемы с алгоритмом вы обнаружили? – самоуверенным тоном спросил Алексей.
– Физическая организация данных выбрана неверно. Записи всех спецификаций должны быть в одном файле, упорядоченном по обозначению спецификации. Кроме того, нужно раскрывать сразу пакет приборов, а не один. Главный принцип эффективной работы с последовательными файлами гласит, что за один просмотр файла нужно выбирать максимальный объем информации. Если изделия имеют до пятнадцати уровней вхождения (в среднем десять), то десять просмотров неизбежны. Идентификатор прибора должен быть в каждой записи выходного файла, тогда соответствующая сортировка позволит распечатать или разрезать выходной файл на части как угодно. Хотя и дальнейшую обработку тоже целесообразно выполнять пакетом. Эффективность еще выше, из-за того что многие спецификации входят в несколько приборов. Наконец, я сомневаюсь в целесообразности построения трехуровневого индекса. Индексы эффективны только при прямом доступе к блокам данных или записям.
– О боже! Это значит, нужно все выбросить и начать заново
– Ничего не нужно переделывать! Каталог эффективен, потому что мы осуществляем поиск по номеру блока, а это быстрее, чем последовательное чтение, – возразил Алексей.
– Не буду спорить без цифр на руках. Можно оценить, что эффективнее: поиск в каталоге, потом в файле или сразу поиск в файле. Особенно если в последнем случае при поиске спецификации обрабатывать информацию непосредственно в буфере ввода.
– Это элементарно! – отреагировал Алексей.
– Согласен, что элементарно, если знаешь временные характеристики накопителя на магнитной ленте. Каталог можно оставить по другой причине. Чтобы не нарушать структуру программы.
– Я все поняла, доработаю за неделю. А пакетный вариант можно сделать и позже. Программа разузлования держит все. Хотя не знаю, что мы будем делать без программы корректировки файла расцеховок.
– Вы имеете в виду, файл технологических маршрутов.
– Да. Бодрова никак не может сдать программу, а через две недели уходит в декрет.
– А там что за проблема?
– Все время нарушается сортировка выходного массива, пропадают записи: то основного файла, то корректуры.
– Все ясно, неверный алгоритм слияния файлов. Я посмотрю. Кстати, в упомянутой мною книге приведен алгоритм слияния любого количества файлов. Для каждого файла нужно иметь две булевы переменные: открыт/закрыт, читать/не читать. Установка первой переменной понятна, а установка второй определяется по результатам сравнения ключей каждого файла друг с другом.
– Бог мой, я использую нечто подобное при корректировке спецификаций, хотя Джадда не читала.
– Это говорит о наличии у вас алгоритмических способностей!
– Спасибо! Но судя по всему не очень.
– Все будет отлично. Я уверен.
Так оно и оказалось. Через месяц программа разузлования в пакетном варианте была сдана в эксплуатацию. Анализ программы Бодровой показал, что Виталий оказался прав. Для трех файлов, двух на входе и одного на выходе начинающая программистка ухитрилась написать восемнадцать программных блоков для различных вариантов сравнения текущих значений ключей входных файлов. С помощью Екатерины она доработала и сдала программу в эксплуатацию до ухода в декрет. Бодрова занималась своей программой почти девять месяцев, что дало повод для соответствующих шуток.
Давиденко пришлось срочно провести техническую учебу с разработчиками и программистами по материалам книги Джадда. Виталий настоятельно порекомендовал всем еще раз с ней ознакомиться самостоятельно.
Так за полтора месяца было закрыто три пункта плана, а еще предстояло выполнить двадцать. По некоторым пунктам работа еще не начиналась. Все программисты использовали в качестве языка программирования ЯСК, язык символического кодирования. По сути это машинный язык со стандартными подпрограммами ввода-вывода данных для соответствующих носителей: магнитной ленты, перфокарт, перфоленты, устройства печати.
Виталий недоумевал, почему не используется язык высокого уровня КОБОЛ, специально предназначенный для обработки организационно-экономической и учетной информации. Производительность труда программиста с использованием КОБОЛ в три-пять раз выше, чем на ЯСК.
Сначала он побеседовал со своими подчиненными. Все в один голос указывали на Ковтенко. Это он подсунул Брилю журнальную статью, где приводились сравнение быстродействия тестовых программ на языках высокого уровня и машинно-ориентированных языках. Время решения тестовых задач на машинном языке в среднем было почти в два раза меньше, чем для языков высокого уровня. Этот факт был широко известным, знал о нем и Виталий. Действительно существовал класс задач, которые было не эффективно программировать на языках высокого уровня, потому что экономия на программировании затем оборачивалась потерями в процессе эксплуатации. Но в их ситуации, когда на годы срывались сроки реализации плана по АСУ, когда две ЭВМ использовались с натяжкой четыре часа в сутки при нормативе пятнадцать часов, причем три часа из четырех на отладку программ, запрет программировать на языке КОБОЛ выглядел, по меньшей мере, как недомыслие. На самом деле это был откровенный саботаж.
Виталий так и сказал об этом Брилю при разговоре наедине:
– Конечно, вы как ответственный за разработку можете использовать КОБОЛ, но сдавать программу вы должны службе эксплуатации, поэтому вы должны убедить Петра Федосеевича.
– Не понимаю вас. Вопрос КОБОЛ или ЯСК всего на всего вопрос затрат ресурсов. Например, программа корректировки любого файла нормативно-справочной информации будет содержать следующие этапы: ввод перфокарт корректуры и запись на магнитную ленту, ленточная сортировка корректуры, слияние корректуры с исходным массивом, распечатка протокола корректировки и вывод обновленной версии файла. Потом получение страховочной копии. От языка программирования зависит длительность только этапа слияния, поэтому общее время корректировки файла увеличится не более чем на десять минут, например, с сорока до пятидесяти.
– Давайте проведем совещание, пригласим ваших специалистов и от служб эксплуатации: электронщиков, операторов…
– Не возражаю против совещания, однако не понимаю вас. Ресурсами отдела распоряжаетесь вы или Ковтенко? У него есть утвержденные нормативы времени решения задач?
– Нет, машины все равно не загружены.
– Не имеет значения. Сегодня не загружены, через год не будет хватать машинного времени, если не планировать загрузку ЭВМ строго по нормативам.
– Я считаю, что вы как разработчики и должны выдавать нормативы.
– С этим замечанием полностью согласен. Инструкции по эксплуатации будут теперь содержать нормативы времени в обязательном порядке. А после утверждения вами инструкции операторам, Ковтенко должен взять под козырек и исполнять, а не диктовать на каком языке программирования нам разрабатывать программы.
– Все же я просил бы вас доложить все это на совещании.
– Назначайте время проведения и состав участников.
– А вы не боитесь, что переход на КОБОЛ приведет к еще большему отставанию от плановых сроков.
– Задержка на обучение займет от силы один месяц. Потом мы наверстаем этот месяц и догоним плановые сроки. Уж это я могу гарантировать.
На совещании Ковтенко не поддержали даже его подчиненные, кроме Голевского, настолько абсурдна была его забота о гипотетической экономии десятков минут на фоне реальной потери сотен часов машинного времени ЭВМ в месяц из-за простоя.
Все разработчики и программисты получили на июль месяц план работ, расписанный по часам. Для программистов предусматривалось время на освоение языка КОБОЛ. Каждый из них получил по экземпляру учебника, из партии, закупленной в срочном порядке через отдел научно-технической информации.
Каждый четверг проводилось заседание технического совета, где рассматривались предложения разработчиков по реализации задач обработки данных: структуры файлов и блок-схема макро алгоритма.
Разработчиков нужно было обучить культуре проведения совещаний: сначала наметить цель, сформулировать критерии выбора решения и ограничения, потом сгенерировать все мыслимые варианты решений, дать им оценку и выстроить в порядке предпочтения. В этих условиях каждый участник совещания мог считать себя автором принятого решения.
Виталий придерживался концепции, что разработку алгоритма задачи нельзя передоверять программистам.
Анатолий Долгих, программист, который, кстати, освоил КОБОЛ быстрее всех, противился нововведениям больше всех.
– Виталий Семенович! Вы превращаете нас в заурядных кодировщиков. Никакого творчества!
– Нам нужны надежные и высокоэффективные программы. Хочешь творить переходи в разработку. Но, должен заметить, что никто не мешает тебе при согласовании технического задания на программирование предложить другой вариант алгоритма. Ни одно решение технический совет не утверждает, не выслушав мнение программиста.