Каким должен быть язык программирования? Анализ и критика Описание языка Компилятор
Отечественные разработки Cтатьи на компьютерные темы Компьютерный юмор Прочее

Крах операции «Инкогнито»

Время действия – начало 80-х.

            Место действия НПО «Энергия». Конкретно ВЦ его окрестности.

            Техническое оснащение – три БЭСМ-6 и десятков шесть удаленных терминалов Videoton-340 венгерского производства. Это то самое таинственное устройство, которое засветилось в кабинете директора в фильме «Служебный роман» и принимаемое современными зрителями за какую-то экзотическую ЭВМ. Знатоки даже отметят, что в фильме мелькнул терминал первых выпусков с квадратными колпачками лампочек (в следующих моделях они были круглыми). Эти терминалы соединялись с БЭСМ-6 по телефонной линии 1200 бод.

            Программное оснащение –ДОС ДИСПАК, транслятор БЭСМ-Алгол (версии 1976 года), диалоговая программа «Пульт».

            Несмотря на прогресс вычислительной техники, множество расчетов идет по-старинке – колода перфокарт и заказываемое время счета (обычно не более 2 часов). Счет проходит ночью (дежурят девочки-операторы). Утром (с 8:00) закрывается возможность работать с терминалов и начинается так называемая «профилактика» часов до 10. Затем можно работать и с терминалов, но там выделенное время ЦП не более 2 минут. Для редактирования текста – это даже много, за пару часов редактирования и набора текстов за этим самым «Видеотоном» тратится секунд 20 времени ЦП, но вот для расчета – этого мало. Не забывайте, что производительность БЭСМ-6 соизмерима с IBM-PC/XT. И это при наличии одновременно 50-60 страждущих.

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

            Наши расчеты довольно серьёзные и ответственные. Идет разработка «Энергии-Буран» и нужно обоснование количества гарантированных остатков топлива. Поясню в чем тут дело. В конце вывода ракеты на орбиту и при выключении двигателей должно еще быть немного топлива, чтобы в двигатель не попал газовый пузырь из баков иначе может быть взрыв. Нужно, чтобы топливо гарантированно не закончилось. Но с другой стороны – лишнее топливо на орбите – это только мертвый груз, снижающий пользу. А сценарии полетов – разные. Есть даже такой, где из-за отказа один из боковых блоков выключается и полет идет на центральном блоке и трех оставшихся (из неисправного прямо в полете сливается керосин, чтобы центровка не сильно уходила).

            В общем, сложно все это. И не будешь же 1000 раз ракету пускать, чтобы понять, сколько гарантированно топлива заливать, чтобы ничего не взорвалось. Поэтому что? Правильно, моделирование. У нас модель блока, размноженная четыре раза для всех блоков. На входе – случайный разброс некоторых заданных параметров. На выходе – случайный разброс остатка топлива. По куче прогонов строится «Гауссиана». А далее – не наша забота, далее пусть академики из какого-нибудь ИПУ по «трем сигмам» что-то там определят. Наша задача – график вероятности построить, а дело это не быстрое. После (условно) 100 модельных пусков вместо плавной кривой все еще только бесформенная кучка точек на графике. Времени нужно много, а БЭСМ – она не резиновая. И тут как назло приходит начальник и говорит, что кровь из носу нужен расчет по уточненной модели, поскольку завтра очередное совещание на эту тему. А у нас всего два часа счета на ночь заказано. Не получится при таком времени полезный график. И перезаказать время на ночь уже поздно, оно все расписано и не поделится никто — каждый считает свой расчет самым важным.

            И тут мне приходит в голову, что можно провернуть операцию, рассчитанную на слабые знания дежурной смены ВЦ. Несмотря на то, что программу я храню на диске (диск аж 7 Мбайт!) а результаты очередного моделирования дописываю на магнитную ленту, я все равно ношу в ВЦ маленькую колоду-«пускач». Состоит эта колода из «паспорта» (стандартных перфокарт) и нескольких команд запуска программы с диска. Внешне все также как и у других программ – вечером даю колоду, утром забираю ее с распечаткой. На распечатке – только «посмертная» выдача, ведь программа никогда не заканчивается, ее снимают операторы. Как только они ее сняли – ОС печатает эту маленькую распечатку и программа завершает работу. Операторам наплевать, чем закончилась работа: вот колода, вот распечатка – прогон выполнен.

            Я докладываю в паспорт карту с директивой «Инкогнито». На этой карте набит значок «ромбик» и слово ИНКО. Эта директива ОС отменяет «посмертную» выдачу. Расчет на то, что вот запустят ночью программу, пройдет два часа – снимут ее – и тишина. Никаких следов, что программа вообще запускалась. Девчонки испугаются, что что-то сделали не так, а спросить некого – ночь же! Инструкция по эксплуатации с подробным описанием всех этих директив на странице №25 лежит здесь же, на столе. Но они никогда ее не читают и прочитать нужную страницу ни за что не догадаются.

            Поэтому, что они сделают? Правильно – запустят еще раз. Программа проведет следующие 100 модельных «полетов» и график станет более полным. Прекрасная мысль – одобряют все. Проводи свою операцию.

            Утром как-то даже боязно на ВЦ идти. А вдруг скандал? Говорю своим: да черт с ней с колодой, не пойду туда. Откроют работу с терминалов – посмотрю, сколько отработала.

            Начальник в ответ: нет, нехорошо. Все должно быть официально. Иди, забери колоду. Там же и журнал замечаний ведется. Прихожу. Смена буквально в слезах. Такие добросовестные операторши попались, стыдно даже стало. «А Ваша программа ничего не выдает! Мы уж и так и этак». В общем, гоняли они ее всю ночь на трех машинах и мы получили около 25 часов чистого счета и очень чистенькие графики. Хотел для виду повозмущаться: дескать как так? Я записывался на счет, где моя распечатка? Но смотрю, начальница их на работу пришла. Работала такая Кира Федоровна Семенюк. Она бы быстро определила, почему нет распечатки. Поэтому быстренько я колоду схватил, в журнале замечаний ничего не написал (операторши сразу повеселели) и ушел.

            Увы, плавные графики оказались скособоченными. А из смысла формул модели – они должны были быть строго симметричными относительно оси ординат. Быстро провели анализ и нашли ошибку в модели. И хоть потом и утешали себя, что если бы не провели такой длинный расчет, то ошибку никогда бы не заметили, все же следует признать, что блестяще задуманная операция «Инкогнито» закончилась провалом.

Автор: Д.Ю.Караваев. 02.02.2017

Последняя правка: 2018-08-26    15:34

Оцените

Написать отзыв

Написать автору можно на электронную почту mail(аt)compiler.su

Авторизация

Регистрация

Выслать пароль

Карта сайта


Каким должен быть язык программирования?

Анализ и критика

Описание языка

Компилятор

Отечественные разработки

Cтатьи на компьютерные темы

Двадцать тысяч строк кода, которые потрясут мир?

Почему владение/заимствование в Rust такое сложное?

Масштабируемые архитектуры программ

Почему Хаскелл так мало используется в отрасли?

Бесплатный софт в мышеловке

Исповедь правового нигилиста

Русской операционной системой должна стать ReactOS

Почему обречён язык Форт

Программирование без программистов — это медицина без врачей

Электроника без электронщиков

Статьи Дмитрия Караваева

●  Идеальный транслятор

●  К вопросу о совершенствовании языка программирования

●  О реализации метода оптимизации при компиляции

●  О реализации метода распределения регистров при компиляции

●  О распределении памяти при выполнении теста Кнута

●  Опыты со стеком или «чемпионат по выполнению теста Кнута»

●  Сколько проходов должно быть у транслятора?

●  Чтение лексем

●  Экстракоды при синтезе программ

●  Об исключенных командах или за что «списали» инструкцию INTO?

●  Типы в инженерных задачах

●  Непрерывное компилирование

●  О русском языке в программировании

●  Формула расчета точности для умножения

●  Права доступа к переменным

●  Скорость в попугаях

●  Крах операции «Инкогнито»

●  Предопределенный результат

Компьютерный юмор

Прочее

Последние комментарии

2018/10/11 22:29, Автор сайта
Формула расчета точности для умножения

2018/10/08 14:00, Неслучайный читатель
Сколько проходов должно быть у транслятора?

2018/10/06 12:19, Автор сайта
Тексто-графическое представление программы

2018/10/04 17:39, Автор сайта
Об исключенных командах или за что «списали» инструкцию INTO?

2018/09/29 16:52, Автор сайта
Как отличить унарный минус от бинарного

2018/09/22 20:13, Д.Ю.Караваев
Идеальный транслятор

2018/09/22 12:32, Автор сайта
Типы в инженерных задачах

2018/09/22 12:20, Д.Ю.Караваев
О русском языке в программировании