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