Страница 124 из 142
— А что важно тогда, папа? ,— спросил Дима.
— Это как игра в карты, когда противники стараются угадать карты друг друга, и обмануть соперника. Мне тут фильм в гостях в Москве показывали с Челентано, называется Блеф (1980), но там детям до 16, без толку рассказывать … проще объяснить что когда играют два шулера, они обычно знают кучу всяких финтов, видят друг друга вроде насквозь, но всё равно один другого обманет, а потом наоборот … считайте, что СССР обманул США с пилотируемой космонавтикой, заставив потратить десятки миллиардов долларов вникуда. Но вот сейчас, США старается обмануть СССР с этими "Звездными войнами" — тоже заставляя повторить грандиозную программу Space Shuttle, которая самим американцам не по средствам! Да и технологии пока не доросли до того, чтобы штамповать 3-4 новых ракеты-носителя в год на 100% исправных. Сколько раз запуски и у нас и америкнцев откладываются, переносятся, просто отменяются — из-за того что в тысячах электронных узлов естественным образом находится или плохой контакт, или ошибка сборки, или банально протекающий шланг или перетёртая изоляция, дающая пробой на корпус … А в нескольких трагических случаях это не обнаруживалось вовремя и гибли люди, которым в космосе просто нечего делать!,— рассказывал нам Петров то, что видимо давно обдумывал.
— Скажите, Станислав — но ведь в ряде ситуаций человек в "железной бочке" может пригодиться — как космический слесарь что-то подкрутить, заменить, подремонтировать — и космическая станция продолжит работу, вместо того чтобы … например как отказавший спутник просто перестать реагировать на управляющие сигналы! В конце концов — я вот вроде бы разбираюсь кое в чем, но ума не приложу — как можно в спутник заложить такую программу, которая будет работать 10 лет, и не потребует либо замены, либо обновления — тогда как программисты в других программах — скажем управления производством, шлепают ошибку на ошибку, у них иногда дважды два равняется восемь, и пока не тыкнешь их в это явное несоответствие — они искренне считают, что всё в порядке, и так должно быть ,— высказалс я
— Эка Вы программистов, оказывается, не любите, Коля! ,— усмехнулся Станислав
— Я плохих программистов и не люблю, но при этом признаю, что программирование без ошибок, на все варианты событий в открытой системе особенно — это почти невозможное дело. И не везде робот в спутнике сообразит и догадается, что нужно делать, нежели чем человек в таком же спутнике, но с системой жизнеобеспечения и эвакуации … ,— говорил я так-то правду, то, что думал.
— Обратите внимание, ребята, на слова "открытая система" ,— ухватил главное Станислав и продолжил: — Кто из вас может объяснить, что здесь означает слово "открытая"?
Давид задумался, Дима порывался что-то сказать, но решил промолчать. Станислав заговорил сам:
— Так-то просто, ничего сложного. В закрытой системе есть ограниченное количество параметров входных данных. Скажем, в машине стоит термостат — при одной температуре охлаждающей жидкости, воды или тосола — он гоняет её по малому кругу, пока машина только начинает греться. А когда жидкость нагрелась и машина поехала — температура уже высокая, термостат переключает клапан на "большой круг" по втрое длинному пути из трубок и шлангов через радиатор охлаждения — чтобы машина не перегревалась. Наконец, если это не помогает, тогда термостат включает вентилятор — обдувающий радиатор с сильно разогретой охлаждающей жидкостью. Ну и в продвинутых автомобилях, если переключение клапанов почему-то невозможно, или вентилятор включить не удаётся — то компьютерная система либо просто выводит предупреждающий значок на панель приборов для водителя, либо даже может плавно заглушить двигатель, чтобы в автомобиле банально не взорвалась система охлаждения. Для закрытых систем программировать очень легко, фактически можно поставить пару реле, которые будут переключаться от датчиков, например температуры — в одно из двух, трех, или даже четырех возможных положений.
— А открытая система тогда что? -, спросил Дима, по-моему, уже знающий часть ответа.
— А пусть нам Коля ответит, а то он столько провокационных антисоветских вопросов задал, что теперь его очередь отдуваться ,— перевёл стрелки на меня Петров-старший.
— Эээ, ну я не готовился, если честно. Открытая система, это видимо та, где входные параметры данных заранее не известны, а только предполагаются, и система должна вроде как самообучаться, накапливать данные и корректировать алгоритм на ходу ,— рассказал я, то что помнил из общетеоретических статей скорее на vc ru, чем на habr, там обычно дальше шел рекламный блок про какой-нибудь мошеннический автотрейдинг, но начало таких статей я выучил неплохо, оно всегда повторялось.
— Было бы хорошо, если у нас было нелимитированное место на размещение кода программы и собственно накапливаемых данных ,— изложил Петров основную проблему программистов 60-х .. 80-х.
— Ну, в более простом варианте — для программирования открытых систем нужен гораздо более мудрый и опытный программист, к тому же имеющий возможность последовательными тестами доводить свой код до совершенства, но … ,— потянул паузу я.
— Но? ,— поддался на удочку Дима
— Но даже он не будет застрахован как от условий, которых не встречалось в тестах, так и того, что его обработка ошибок не предусмотрела все возможные варианты — а их может быть много и в разных комбинациях — отказали или врут те самые датчики, где-то проводка отключилась, где-то просто датчика такого нет, чтобы отобразить состояние узла или механизма без визуального осмотра и так далее. Оттого кстати чем сложнее прибор — тем меньше вероятность его починить быстро, простым прозвоном всех цепей и заменой предохранителей уже не обойдёшься — скорее всего придётся последовательно менять крупные узлы, пока не будет найден тот, который выдаёт проблему ,— немного напыщенно заявил я.
— Вот-вот ,— подхватил Петров — к этом всё и идёт, даже в бытовой технике начинают применять потихоньку этот военный принцип — сломалось что-то в двигателе танка — меняем двигатель целиком! Другое дело, что принципа военного тройного дублирования в гражданской технике нет — не экономично это.
— А что за тройное дублирование, это 6 раз повторить один узел? -, не понял Давид