Каким должен быть язык программирования? Анализ и критика Описание языка Компилятор
Отечественные разработки 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-10-29    15:54

ОценитеОценки посетителей
   ██████████████████████████████████████████ 2 (100%)
   ▌ 0
   ▌ 0
   ▌ 0

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

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

Авторизация

Регистрация

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

Карта сайта


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

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

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

Компилятор

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

●  О размещении переменных в стеке

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

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

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

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

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

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

●  Об одной реализации специализированных операторов ввода-вывода

●  Особенности реализации структурной обработки исключений в Win64

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

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

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

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

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

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

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

Прочее

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

2018/12/08 23:03 ••• Попов Михаил
✎ Программирование без программистов — это медицина без врачей

2018/12/07 08:57 ••• Автор сайта
✎ Почему обречён язык Форт

2018/12/07 08:36 ••• Автор сайта
✎ Нужны ли беззнаковые целые?

2018/12/03 13:51 ••• kt
✎ Экстракоды при синтезе программ

2018/11/30 17:56 ••• Freeman
✎ Изменение приоритетов операций

2018/11/30 17:20 ••• Автор сайта
✎ Почему языки с синтаксисом Си популярнее языков с синтаксисом Паскаля?

2018/11/26 14:23 ••• Автор сайта
✎ Так ли нужны операции «&&», «||» и «^^»?

2018/11/18 15:21 ••• Freeman
✎ Устарел ли текст как форма представления программы

2018/11/17 03:28 ••• Comdiv
✎ Изменение длины объекта в стеке во время исполнения

2018/11/16 12:53 ••• Автор сайта
✎ Помеченные комментарии

2018/11/11 14:01 ••• Александр Коновалов aka Маздайщик
✎ Нерабочий код

2018/11/11 13:39 ••• Александр Коновалов aka Маздайщик
✎ О русском языке в программировании