Проект «Сфера-82»: Цвет и слой - Станислав Миков
Громов откинулся на спинку стула. Его лицо стало сосредоточенным, почти сердитым, как всякий раз, когда хорошая идея заставляла выбросить любимое решение.
— То есть ты предлагаешь дисциплинированную программу. Она ведёт счёт прямоугольникам, помнит зазоры и оставляет технологу те места, где нужна живая производственная оценка.
— Да.
— И на Си это будет читабельно.
— Должно быть.
— А потом я самые медленные места перепишу на ассемблере.
— Когда увидим, что именно медленно.
Громов помолчал, потом тихо рассмеялся.
— Вот это, Алексей Николаевич, уже похоже на преступление против моей профессиональной гордости.
— Почему?
— Потому что я бы начал с красивого машинного ядра и через три дня сам запутался бы в собственных переходах. А ты начал с того, что правило должно быть видно глазами.
Морозов пожал плечами.
— В моём деле иначе вся работа разваливалась. Когда проектируешь кристалл, ошибка редко выглядит как одна героическая поломка. Чаще это мелкая погрешность, которая прошла через десять рук и стала дорогим браком.
— Ты опять про свои чайники?
Морозов покосился на него.
Громов улыбнулся шире.
— Извини. Я всё ещё привыкаю, что человек, который рисовал микросхемы для чайников, теперь учит меня экономить машинное время для Зеленограда. Голова сопротивляется.
— Чайник тоже плохо переносит, когда у него на кристалле зазор пропал.
Громов коротко фыркнул, уже с другой интонацией.
— Ладно. Пиши дальше.
Они работали почти два часа.
Олег за это время дважды подходил спросить, можно ли на минуту занять линию с нормальной землей, и оба раза уходил, услышав от Громова невнятное рычание. Наташа принесла лист с перечнем контрольных точек шасси, посмотрела на экран, где мелькали скобки и короткие английские слова, и осторожно спросила, можно ли подойти ближе. Громов даже понял вопрос с задержкой.
Птицын один раз принёс свой лист с проверочными картинками. Морозов просмотрел его, вычеркнул слишком сложный пункт про плавный переход яркости и оставил поля, полосы, шахматку, смену признака знакоместа и отдельную строку «ошибка чтения цветной платы».
— Вот это годится, — сказал Алексей. — Только называй её точнее. Пиши: «цветной блок отсутствует». Человек должен понимать, что делать дальше.
— Это инструкция как для школьников? — спросил Птицын.
— Это из опыта всех, кто когда-нибудь сидел перед молчащей машиной, — сказал Громов, глядя в экран. — Иди, Саша. У тебя хорошая задача. Не порть её лишней умностью.
Птицын ушёл довольный.
К полудню первая программа Морозова заработала, но пока только с пробным участком топологии. Она читала короткий искусственный набор из семи прямоугольников, занесённых вручную в простой текстовый файл. Два прямоугольника были безопасны. Один нарушал зазор. Один лежал на другом слое и должен был пройти мимо проверки. Ещё один был вписан с ошибкой в координате, чтобы проверить, поймает ли программа неправильный порядок углов.
Громов настоял на том, чтобы все семь строк сначала переписали на бумагу и рядом руками посчитали ожидаемый результат.
— Первым программам я доверяю с карандашом в руке, — сказал он. — Особенно чужим.
— Моим?
— Любым. Своим меньше всего.
Морозов запустил трансляцию. «Сфера-82» задумалась. Дисковод щёлкал короткими сериями, потом надолго замолкал. На экране сменялись сухие строки сообщений транслятора. Один раз машина выдала ошибку, и Громов тут же ткнул пальцем в строку.
Морозов исправил строку. Второй прогон дошёл до конца. Объём получившейся программы Громова огорчил; он сразу выписал на полях, какие куски потом надо будет заменить машинным кодом. Но программа запустилась.
На экране появились четыре строки:
«READ 7»
«CHECK 5»
«BAD GAP 3»
«BAD ORDER 6»
Громов долго смотрел на них, будто пытался поймать машину на обмане.
— Номера совпали, — сказал Морозов.
— На игрушечном наборе.
— На проверочном наборе.
— Рамки опыта. Снова в ход пошли твои словесные фокусы.
— Хорошо. На семи строках.
Громов взял бумажный лист с ручным расчётом и положил рядом с экраном. Потом аккуратно обвёл карандашом две строки: третью и шестую.
— Семь строк — это семь строк, до Зеленограда ещё далеко, — сказал он. — Но я понял. Середина должна быть такой. Чистой. Чтобы Ланская могла посмотреть правило и сказать: здесь вы поняли технологию, а здесь придумали за неё.
Морозов кивнул.
— А твоя часть должна сделать так, чтобы эта середина получала данные без ручной набивки.
— Получит, — Громов уже перевел взгляд с экрана в свою тетрадь. — Я сделаю программу чтения последовательного файла. Без попытки глотать весь слой. Буфер на несколько записей, проверка контрольного числа, перевод координат в твой внутренний вид. На выходе — такой же простой набор, только из рабочей дискеты вместо семи строк.
— И ведомость замечаний.
— Да. Структуру ведомости надо взять у Липатова.
Морозов провёл ладонью по лицу и снова наклонился к листу.
— Значит, после обеда зовём Липатова.
— После обеда ты покажешь мне, как эта штука работает с таблицей допусков.
— Ты же только что сказал, что поверил.
— Я сказал, что понял середину. Это разные вещи.
После обеда лаборатория стала тише.
Олег с Наташей унесли одно шасси вместе с ЛАТРом в соседнюю комнату, чтобы оставить остальным тишину. Люба ушла к кладовщице сверять список недостающих деталей. Птицын сидел на подоконнике с тетрадью и переписывал проверочные картинки уже в виде последовательности действий для будущей служебной программы: очистить экран, вывести поле, подождать нажатия, сменить признак, снова подождать. Громов ему велел писать так, чтобы через неделю он сам понял, что имел в виду.
У «Сферы-82» остались Морозов и Громов.
На столе лежала распечатка из папки Ланской. Они выбрали часть данных, достаточную для первого участка: слой металлизации, минимальный зазор, технологический запас, отметки, которые принимаются за дефект только после просмотра технологом.
Громов, глядя на таблицу, недовольно постукивал пальцем по краю стола.
— Вот здесь начинается сложность. Алгоритм проверки примитивен: зазор меньше допустимого — выдаём замечание. А Ланская говорит: на этом слое допустимый зазор один, рядом технологический выступ, здесь припуск на травление, там метка совмещения. Если мы всё это напишем отдельными исключениями, программа превратится в мешанину частных случаев.
Морозов придвинул к себе лист и написал сверху: «таблица правил».
— Данными, а не исключениями.
— Объясни.
— Правило прибивать к тексту программы каждый раз заново опасно. Для первого опыта у нас будет маленькая таблица: номер слоя, вид