0:00
[МУЗЫКА]
[МУЗЫКА] Я
уже много раз рассказывал, как мы начали работать с военными.
Это был конец 70-х годов.
В это время началось массовое внедрение цифровой вычислительной
техники в оборонную промышленность, в армию.
То есть и раньше использовались ЭВМ, но буквально так: кусочно и лоскутно.
А в это время началось массовое внедрение.
И они столкнулись с большими трудностями: оказалось, что программировать — трудно.
И как-то это было заранее неясно.
И вот, оборонный отдел обкома партии (Смольный) обратился в университет с
просьбой о помощи.
Однако должен сказать,
что оборонный отдел — это была всемогущая организация в те времена.
Тогда был ректором нашего университета Алесковский Валентин Борисович.
Он вызвал меня (я был тогда самый молодой руководитель лаборатории,
руководил лабораторией системного программирования).
Я первый раз попал в кабинет ректора.
Там сидело довольно много народу.
Многие из них были военные в военно-морской форме.
И мне сказано было, что «ты будешь с ними работать».
Я удивился: с чего бы это?
И сказал, что мне надо подумать и посоветоваться с коллегами.
Но ответ был такой: «Ты вошел сюда руководителем лаборатории,
можешь выйти вообще не сотрудником университета».
Я сказал: «Мне все ясно», — и перестал задавать глупые вопросы.
Примерно около года ушло на «раскачку», знакомства, понимание задач.
А потом мы начали активно работать.
Меня назначили инструктором обкома партии, причем я думаю,
что я в это время был единственный инструктор обкома партии,
который был беспартийный (а я не был членом партии).
И вот получил пропуск, мы его называли «вездеход», с этим пропуском
вы входите в любое предприятие оборонное (их тогда было девять министерств).
И мне была поставлена задача внедрять цифровую вычислительную технику.
Я читал лекции, проводил занятия.
Иногда мне приходилось читать лекции директорам заводов, например.
Запомнил встречу с директором Кировского завода (это же огромное предприятие,
человек очень высокий и здоровый такой).
И очень меня многие воспринимали в штыки.
И на все мои вопросы ответы были очень странные.
Например, я задал вопрос: «Какая программа лучше: которая
правильная или которая быстрее работает?» И очень часто отвечали [НЕРАЗБОРЧИВО],
что которая быстрее работает.
И когда я говорил:«Как же?
Это же нелогично!
Так не может быть!» Мне говорили:«Послушай, молодой.
Мы работаем с микропроцессором, который 64 килобайта памяти,
больше ничего: ни дисков, ни барабанов — ничего.
Если программа и данные занимают хотя бы на 1 байт больше,
то ничего работать не будет.
Поэтому нам надо программировать в кодах, ужиматься».
А почему программировать в кодах?
Потому что экономить память.
А ведь это же нерационально, производительность труда падает,
надежность программирования падает, легко ошибиться.
И все мои попытки внедрить языки высокого уровня натыкались на глухую стену: «Нет,
мы ничего сделать не можем, мы ограничены техникой.
Давай, вкладывайся в наши условия».
Хорошо, мы стали работать.
Больше всего мне запомнился заказ «Кавказ-1» (тогда это было
страшно секретное слово, но сейчас уже это все опубликовано).
Это был главный заказ в правительстве связи КГБ,
правительственная «междугородка».
Было сделано 27 станций с платиновыми контактами (вообще очень дорогие).
Они были установлены в самых разных местах Советского Союза,
и никак их не могли запустить.
Понимаете, хорошо было бы, если б они не работали.
Но они работали.
Только как?
То потухнет, то погаснет.
То есть то работает, то — раз!
— и вдруг вырубится.
А представляете, если в это время говорит по телефону Горбачев?
И станция замолчит...
Много бы голов полетело!
И вот нас направили на спасение вот такого рода заказов.
Мы выступали в качестве пожарной команды.
То есть кто-то сделал, работает плохо (или вообще не работает), а мы,
университетские люди, должны это дело спасти.
Я хорошо помню обстановку вокруг этого самого «Кавказа первого».
Миллиметровка метр на метр,
на ней просто цветными карандашами расписано, где какой модуль «сидит».
То есть каждый модуль получал свое место в памяти, и его нельзя было изменить,
потому что пришлось бы двигать все остальные модули.
Если вам надо сделать какую-то «заплатку» в модуле, то есть вставить несколько
команд, вы должны вставить передачу управления куда-то вовне,
там написать несколько команд, а потом вернуться обратно.
Конечно, такая «лоскутная» схема и не могла работать.
Поэтому мы начали с того, что начали наводить минимальный порядок,
то есть заниматься технологией программирования.
Сделали редактор связи, чтобы можно было модули легко компоновать без всяких
миллиметровок, сделали какие-то кросс-трансляторы,
чтоб можно было не на тумблерах и перфокартах, а на ЕС ЭВМ, на дисплеях.
То есть мы сделали документацию, чтобы они писали документы не на печатающей машинке,
где ничего исправить нельзя, а в виде файлов, которые можно править, исправлять,
печатать.
Короче, навели минимальный порядок, сделали новые трансляторы для них,
но все это было на уровне Assembler, на уровне языков низкого уровня.
Поэтому принципиального скачка не произошло, но какой-то порядок мы навели,
и в конце концов с нашей помощью «Кавказ-1» сдали за два года.
Первое время я стеснялся своей работы.
В те времена не очень любили людей,
которые работают с партийными органами (особенно в университетской среде).
Но поскольку мы все-таки не пускали пыль в глаза, а занимались вполне конкретным
делом, то никто из моих друзей от меня не отвернулся.
Хотя были люди, которые (и на матмехе),
которые на меня показывали пальцем и говорили:«Вот, он со Смольным работает».
Но, тем не менее, работа продолжалась, и постепенно я в это дело втянулся и понял,
что на самом деле мне просто повезло в жизни: новые задачи, новые условия,
лучшее финансирование, мы получали лучшую технику, нам платили
какие-то дополнительные зарплаты и, самое главное, новые требования.
Вот никогда за те годы у меня не было требования технико-экономического
обоснования.
Было требование — надежность, потом второе требование — снова надежность,
и третье требование — снова надежность.
То есть надежность программирования была краеугольным камнем.
И, в общем, именно поэтому потом все последующие годы и до сих пор я
занимаюсь технологиями программирования, потому что я именно тогда понял,
что если программировать «на коленках», то надежности никогда не достигнуть.
Высоконадежные программы можно строить,
только используя современные мощные надежные технологии программирования.
И в 1991 году, кстати, я защитил докторскую диссертацию под
названием «Технологии программирования встроенных систем реального времени».
То есть это было результатом моих работ с военными.
Итак, надежность и технологии — это очень важные слова,
и они сильно повлияли на мою дальнейшую жизнь.
Как я уже сказал, хотя мы навели какой-то порядок, и заставили «Кавказ-1» работать,
мы понимали, что программировать на Assembler — это тупиковый вариант,
и следующий заказ займет снова много-много лет (а «Кавказ-1» занял 17
лет на его изготовление), и поэтому надо что-то делать более радикальное.
Мы все-таки уговорили наших заказчиков использовать языки высокого
уровня и сделали подмножество языка Алгол 68 (который в то время был самым любимым
нашим языком программирования), ориентированное на задачи коммутации,
и назвали его А68К (от слова «коммутация»).
Это было подмножество, но довольно узнаваемое подмножество Алгол 68
(а в это время это был самый защищенный язык программирования).
Кстати, и тут не удержусь.
Расскажу еще одну байку.
Дело в том, что нам очень помогли американцы.
Они сделали язык Ada в это время (в 1976 году был
опубликован язык Ada), который был очень похож на Алгол 68
и совершенно непохож на царствовавшие в это время в Америке языки Fortran и PL/I.
И я стал говорить военным:«Смотрите,
американцы пошли по пути статических языков с высоким контролем.
Базовый язык министерства обороны США — Ada,
давайте сделаем аналогичный базовый язык Алгол 68, не менее защищенный, чем Ada».
И это мне помогло.
А не было бы примера американцев — как со стенкой бороться.
Итак, сделали подмост языка A68К,
стали делать трансляторы и кросс-трансляторы для него,
для различия специализированных машин: СУВК СС, СУВК СМ, НЕВА, УК 1010.
Это были довольно хорошие машины с точки зрения инженеров: они выдерживали тряску,
броски питания, могли работать в КУНГе (это такая машина,
которая едет по лесной дороге).
Вот только одного для них было сделать нельзя: программировать для них было
очень трудно.
А уж сделать оптимальный транслятор для такой машины — это вообще
задача неразрешимая.
И, в общем, нас в свое время это раздражало.
Ну почему инженеры делают машины, которые хороши для инженеров,
но плохи для математиков?
Тогда нам пришла в голову идея,
что спасение утопающих — дело рук самих утопающих,
и мы решили сделать свою машину, под себя: математики для математиков.
И сделали, о чем я расскажу вам далее.