Игорь Бурдонов

Рассечка

 

Я пришёл после мех-мата МГУ в Институт Точной Механики и Вычислительной Техники (ИТМиВТ) в 1971 г., когда БЭСМ-6 уже была сделана. Я попал в 5-ю лабораторию, которой заведовал Лев Николаевич Королёв. Это была лаборатория программистов, и она тесто сотрудничала с 1-й лабораторией, которую возглавлял академик Мельников. Впрочем, тогда Владимир Андреевич ещё не был академиком, и даже член.-кором.

Эти две лаборатории делали систему АС-6. Расшифровывается это как «аппаратура сопряжения», а «шестёрка» взята из названия БЭСМ-6. Задачей это системы было сопряжение БЭСМ-6 с разными каналами связи, по которым передавалась телеметрическая и баллистическая информация, что было уже совершенно необходимо для обеспечения космических полётов.

Ну, конечно, наши инженеры сделали не просто какую-то там аппаратуру сопряжения, а то, что мы сейчас называем локальной сетью. В неё могла входить БЭСМ-6, и даже не одна, ещё центральный процессор АС-6, машина более мощная, чем БЭСМ-6, хотя и на той же элементной базе, память, периферийные машины и коммутаторы, которые это всё соединяли. А к периферийным машинам прицеплялось всё, что можно было прицепить: ввод-вывод с перфокарт и перфолент, устройства печати, телетайпы, ленты, диски, потом появились дисплеи, особенно мне нравился венгерский видеотон, но это уже было потом. И, конечно, к периферийным машинам присоединялись каналы связи.

А БЭСМ-6 должна была взаимодействовать со всем этим через дополнительную стойку, которую называли рассечкой. Вот не помню, как у неё было официальное название. Мне предложили делать тест этой рассечки. Назывался он тест ГРОБ, потому что основной задачей рассечки был групповой обмен данными между памятью БЭСМ-6 и памятью АС-6, хотя там было ещё много чего. Делал эту рассечку Володя Чехлов. Он работал в ИТМиВТ, но познакомился я с ним на заводе САМ, где тогда собирали АС-6, больше её ещё нигде не было. Потом основная работа проходила в Болшево, в В/Ч 73790 – вот даже номер никак забыть не могу. Тогда было 4 центра управления космическими полётами: в Подлипках, в ЦНИИМАШе – это мы сейчас и называем ЦУПом, в Болшево, в военной части, в Институте прикладной математики и в Голицыно.

Ну, что значило тогда написать тест для стойки аппаратуры. Ведь тогда не было ничего из современных понятий о тестировании. Не было тестирования на основе формальных моделей – model based testing, не было conformance testing – тестирование объекта на его соответствие спецификации, не говоря уже о model cheking'а, потому что и моделей таких не было. Тесты, конечно же, делались вручную, о генерации тестов ещё никто не заикался.

Тесты эти обычно программисты делали для отладки своих программ, а инженеры, электронщики – для наладки аппаратуры. Вот не знаю, почему так в русском языке сложилось, что программы отлаживаются, а аппаратура налаживается. Потом, конечно, из некоторых таких тестов собирались пакеты, которые использовались уже во время эксплуатации: либо, когда что-то случалось, не работало, либо тесты запускались периодически для профилактики.

А с другой стороны, поскольку тесты делались вручную, они часто были гораздо эффективнее тех, что потом начали генерировать. Всё-таки мозг человека более изощрён чем самая сложная программная система. Конечно, когда сложность и объём программ, аппаратуры и, следовательно, тестов для них выросло в последующие десятилетия на несколько порядков, вручную тесты уже писать было нельзя (хотя индусы это делали ещё в конце 90-х). Стало быстро развиваться теоретическое тестирование как направление в компьютерной математике, и появились сложные системы генерации тестов и большие тестовые системы. Но вот я сейчас вспоминаю этот мой тест ГРОБ и на его примере вижу, что многие идеи и подходы, которые сейчас стали классикой, были уже и тогда. Пусть в зачаточном, зародышевом виде, нерасчленённые, неосознанные, что называется, неотрефлексированные, но – были.

Ну, вот на самом низком уровне тест – это просто цепочка тестовых воздействий, которая подаётся на тестируемый объект, то, что называется тестовым примером, test case. Потом надо собирать наблюдаемую реакции объекта на эти воздействия и выносить вердикт – правильные они или нет. Это делает программа-оракул. Тестирование проводится, конечно, не одним тестом, а системой тестов, и нужна управляющая тестовая система, которая организует перебор этих тестовых примеров и их прохождение. Таких тестовых примеров часто требуется очень много и так или иначе нужна какая-то их генерация. И в каком-то виде всё это было и в моём тесте ГРОБ. Он прогонял много разных тестов, при разных режимах, тесты формировались по ходу дела по заданным параметрам, выносились вердикты и т.п. Так что, в конечном счёте, это оказалась довольно сложная программа, хотя и несколько монстральная и неуклюжая с современной точки зрения.

Этой тестовой системой нужно было ещё как-то оперативно управлять, задавая параметры режимов прогона тестов, делать выборочное тестирование и т.д. Для этого требовался оперативный ввод информации от человека, от инженера, проводящего тестирование. Конечно, ввод с перфокарт, с телетайпа или «Consul’а» для этого не годился. Дисплеев поначалу ещё не было, тем более, таких как венгерский видеотон, который я первый раз увидел в Институте прикладной математики, но это было позже.

Поэтому я использовал клавиатуру пульта БЭСМ-6. Там у левой стойки была клавиатура с большим число клавиш, с помощью которых можно было управлять работой теста. Была сделана такая бумага и прорезями для клавиш, которую клали на клавиатуру. На ней было написано, какая клавиша что означает для теста ГРОБ.

Точно также нужен был и оперативный вывод информации для оператора. АЦПУ было неудобно – не бегать же всё время к нему, отрывать лист и возвращаться обратно к пульту. Да и бумага в дефиците была. На АЦПУ, конечно, выводились какие-то итоговые отчёты о тестировании. Но для оперативного вывода я использовал лампочки на регистрах БЭСМ-6. Там на левой стойке внизу был БРЗ – буферные регистры записи. Такая матрица из лампочек размером 8 на 48. На ней можно было писать всякие тексты и вердикты. Если текст не помещался, можно было устроить бегущую строку. Этим многие развлекались, вот и я тоже для теста ГРОБ.

А ещё мне нравились мелодии, которые издавали динамики БЭСМ-6 во время работы теста ГРОБ. Можно было догадаться, какой сейчас идёт режим работы, какие тестовые примеры прогоняются и даже каков вердикт.

Сам тест взаимодействовал с аппаратурой рассечки самым непосредственным образом. Тест, конечно, вводился с перфокарт в операционную систему Д-68 или НД-70, но сразу 76-м экстракодом входил в режим диспетчера и делал всё, что хотел, а после работы возвращался в пользовательский режим. Потом стало немного сложнее, но принцип был тот же.

Но более важным было не тесное взаимодействие теста и рассечки, а сотрудничество их авторов, т.е. меня и Володи Чехлова. Строго говоря, автор этого теста был не я, а мы оба с Володей. В конце концов, я был начинающим программистом, а в электронике плохо разбирался. Да и документация была в основном ориентирована на инженеров, я мало чего в ней понимал, ну, кроме некоторых рисунков, на которых были изображены регистры и команды. Но как это всё работает? Чего надо делать, какие команды давать, что ожидать в результате? Всё это, конечно, мне объяснял Чехлов.

Такое тесное взаимодействие, сотрудничество программистов и инженеров вообще было отличительной особенностью ИТМиВТ и того времени. Потом я занимался операционной системой для периферийной машины и, конечно, без инженеров ничего бы не мог сделать. Но и они всегда были готовы не только помочь, но и – вот сейчас это, наверное, странно слышать – изменить саму аппаратуру, если у меня чего-то не получалось или хотелось что-то сделать эффективнее. Такие случаи были. Дело даже доходило до курьёзов. Помню как-то подошли ко мне инженеры и спрашивают: «Говорят, тебе понадобилась десятичная арифметика? Ты не расскажешь, зачем она тебе нужна?» Я сначала не понял. а потом вспомнил, что что-то такое ляпнул в частном разговоре, что хорошо бы вот, что было такое, не помню уже что, но слова перепутал, сказал почему-то «десятичная арифметика». А они ведь на полном серьёзе готовы были сделать в периферийной машине десятичную арифметику, если она окажется и правда для чего-то нужна.

Вообще, мне кажется, что такое вот тесное сотрудничество, даже дружба программистов и инженеров, да и вообще всех людей, причастных к компьютерам, независимо от рода их деятельности, рангов и должностей было залогом и одной из причин успехов советской вычислительной техники в то время. Потом я уже как-то не наблюдал такого сотрудничества. Хотя, может быть, мне не очень везло. В 80-х, когда мы делали советский Крей – Электронику СС БИС – я опять занимался периферийными машинами, там они назывались front-end процессорами. Но это уже были не разработки наших инженеров, как периферийная машина в АС-6, а Электроники и СМ, содранные с DEC’овских PDP. Операционки на них уже были, так что мне нужно было только что-то туда привешивать, подправлять и всё. Коллегам, которые занимались центральным процессором Электроники СС БИС, было, конечно, интереснее и сложнее. Так что я заскучал и занялся кластерной операционной системой и кластерной технологией программирования на основе идей Виктора Петровича Иванникова, которые у него созрели ещё во время работы над АС-6.

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

А я вот, вспоминая своих учителей, вспоминаю не только программистов: Льва Николаевича Королёва, Александра Николаевича Томилина, Виктора Иванникова, Марка Чайковского, Нину Карабутову, Зою Канатникову, Тамару Суслову, Зину Лободенко, Валю Солодову, но в не меньшей степени и инженеров: Владимира Андреевича Мельникова, Андрея Андреевича Соколова, Володю Смирнова, Лёню Зака, Лемара Чайковского, Славу Жирова, который как раз делал память АС-6, с которой рассечка выполняла групповой обмен, Юрия Митропольского и Юрия Знаменского, Славу Сегаля, а ещё Витю Шнитмана и Сан Саныча Усана, с которыми мы и сейчас работаем в одном институте. И, конечно, с особенной теплотой, Володю Чехлова.

В ночь с 16-го на 17-е октября 2017 года