Никаких "вроде бы так", никаких "и тому подобное", избави боже от "аналогично". Мысль алгоритмиста обязана прощупать все звенья без исключения, алгоритмист должен пройти все пути, одолеть все "нет" и все "да", учесть все развилки, ответить на все вопросы, найти выход из всех циклов.
О эти любители напускать туману под лозунгом "Проблема сложна! Мы привыкли работать с ней на ощупь...". Алгоритмическое мышление разрывает пелену тумана, дробит сложное на части, находит приемы решения частных задач, а потом вновь, как по ступенькам, восходит к проблеме в целом.
Алгоритмическое мышление не шапкозакидательство. Сложность в мире существует, ее нужно штурмовать, а не отрицать. Программист знает - свидетельством тому вся история человеческого разума, - что самое дерзкое и высокое творчество отстаивается в алгоритмах, превращается в крепкие приемы ремесла.
Программист - исследователь, но он не из породы исследователей, привыкших, по саркастическому замечанию Р. Декарта, заниматься разгадками спутанных вопросов со спутанным умом. "Такие исследователи, - писал Р. Декарт, - не менее глупы, чем тот мальчуган, который так старается угодить, что бросается бежать прежде, чем получит поручение, даже не зная, куда ему идти".
Программист - настойчивый, усердный и волевой работник. В его руках отличные инструменты: команды, присваивания, проверки, циклы. И он применяет свои инструменты со всем человеческим искусством. Он не желает оставаться в проблеме как в ловушке, а ищет дорогу к свету и правде.
Член-корреспондент АН СССР Андрей Петрович Ершов, один из зачинателей отечественного программирования, ярко и точно охарактеризовал особенности работы программиста: "Программист должен обладать способностью первоклассного математика к абстракции и логическому мышлению в сочетании с эдисоновским талантом сооружать все что угодно из нуля и единицы. Он должен сочетать аккуратность бухгалтера с проницательностью разведчика, фантазию автора детективных романов с трезвой практичностью экономиста".
Внешне мягкий и уступчивый, А. Ершов предъявляет весьма суровые требования к личности программиста (и, значит, прежде всего к самому себе). Программисты обязаны быть предельно добросовестными в контактах с машиной, но, что еще важнее, они должны выполнить свой моральный долг перед человечеством - добиться, чтобы программирование из искусства для избранных стало грамотностью для всех.
В последние годы А. Ершов с головой ушел в теорию программирования. Он раскрывает потаенные возможности алгоритмов и нащупывает границы алгоритмического подхода. Работу современных программистов - теоретиков и практиков - он сравнивает с деятельностью авторов и издателей книг после изобретения книгопечатания: программисты создают машинное отображение мира, наделяя людей небывалой властью над природой.
Мощная и динамичная страна алгоритмирования быстро расширяется, совершенствуется, крепнет, и пределов ей не видно, и границы алгоритмирования не просматриваются отчетливо.
Сегодня алгоритмирование идет победным маршем, захватывая все новые и новые области, привлекая под свои знамена все новых и новых людей. Токарь и врач, экономист и учитель, инженер и юрист становятся алгоритмистами. Я прервал свой перечень на юристе, хотя мог бы продолжать его еще и еще: в алгоритмирование втянуто около тысячи человеческих специальностей.
Й это только начало. Потому что в наш век алгоритмическим мышлением должен овладеть каждый сознательный работник.
Законы алгоритмирования уже сегодня столь же важны для нас, как основные законы физики. Чем больше работников будет владеть ими, тем больше ЭВМ окажется на производстве, тем активнее и плодотворнее станут контакты человека с машиной.
Нельзя откладывать знакомство со страной алгоритмирования на будущее. Обращаясь к комсомольцам, Л. И. Брежнев говорил:
"Нет пограничной черты, нет водораздела, глядя на который можно было бы сказать: вот это - настоящее, а вот это - будущее. Уже сегодня каждым днем своей трудовой жизни надо строить и утверждать это будущее, приближать его, делать явью".
Научно-техническую революцию делают не другие люди, ее совершаем мы сами, а алгоритмическое мышление служит нам острым оружием.
Осваивая профессиональные секреты и тонкости, одолевая рутину и недоверие, то в ладу, то в споре с вычислительными машинами идут алгоритмисты к новому пониманию природы, производства, школы, искусства, общества.
Сквозь тернии к алгоритмам!
В нашей библиотечке алгоритмов три образца: в библиотеке алгоритмов человечества сегодня их десятки тысяч, и каждый день на полки всемирного хранилища ложится тридцать новых алгоритмов.
Приглядитесь к прохожим любого города нашей страны, и вы в любой час и день увидите среди них девушек, в сумках которых пачки перфокарт и большие белые торчащие наружу ведомости, что ли. Это программистки, а ведомости - результат их только что окончившегося общения с вычислительной машиной. Девушки называют свои ведомости неуклюжим словом "распечатки" или уж совсем диким словом - "листинги".
Ладно, пусть листинги, не в жаргоне дело, а в быстром распространении алгоритмического мышления, в передаче вычислительной машине все новых и новых задач, которые раньше одолевал только человеческий интеллект. Если дело пойдет так и дальше, то в скором времени будет создан алгоритм, ничем не уступающий человеку. Если дело пойдет так и дальше, то по дорогам Марса покатит автомобиль, собранный из отдельных атомов...
Идея марсианского автомобиля принадлежит М. Бонгарду, талантливому советскому кибернетику, погибшему несколько лет назад в горах в результате несчастного случая. Вообразите себе, говорил М. Бонгард, что наука у марсиан развивается совсем иначе, чем на земле. Марсиане преуспели в теоретической физике, но ничего не знают о механике. У них нет никаких машин, единственный их способ передвижения - верхом на лошади.
И вдруг возникает идея заменить лошадь, это живое упрямое и болезненное существо, неким устройством. Перед марсианским КБ ставится задача: найти такое расположение атомов в пространстве, чтобы их ансамбль мог перевозить человека не хуже лошади. Задача эта принципиально осуществима, так как один такой ансамбль атомов уже бегает перед глазами каждого марсианина: имя ему - лошадь.
Марсианские ученые, однако, не могут снять копию с лошади: при всей своей теоретической проницательности они не знают точного расположения атомов в ее теле. И потому они решают создавать свой экипаж шаг за шагом, атом за атомом усложняя конструкцию до тех пор, пока она сама не начнет двигаться. Они ведут свои работы широким фронтом, большими силами, с огромным энтузиазмом.
Как, по-вашему, читатель, будет ли создан атомарный автомобиль?
Увы, нет. Нельзя изобрести машину, думая о ней только на уровне элементарных частиц.
Чтобы сделать автомобиль, марсианам пришлось бы сначала выработать понятия о больших группах атомов, именуемых на земле материалами (металлами, пластмассой, резиной); им понадобилось бы далее от взаимодействия элементарных частиц перейти к крупным технологическим процессам обработки материалов; им потребовалось бы подняться еще выше и запросто обращаться с такими гигантскими скоплениями атомов, как кузов, колеса или бензобак, объединяя их в конструкцию автомобиля.
Без многократного укрупнения, без крупноблочного подхода построить автомобиль нельзя.
История с марсианским автомобилем потребовалась М. Бонгарду только для того, чтобы ярко обозначить трудности алгоритмического подхода. Команды, проверки, присваивания, циклы - это элементарные частицы мира алгоритмов. В принципе из них можно собрать программу любой сложности так же, как из атомов в принципе можно сконструировать автомобиль.
Но только в принципе.
А на практике нужно сначала создать "интеллектуальные материалы", потом придумать технологию их переработки, потом изобрести блоки, узлы, агрегаты и общую конструкцию универсального алгоритма.
Создание интеллектуальных материалов
Огромная, беспримерная, полная коварных неожиданностей работа. Некоторые современные ученые считают, что она никогда не приведет к успеху, что алгоритмический путь к Искинту заказан. По их мнению, алгоритм четок и результативен, но лишен творческого начала, однообразен, как мелодия шарманки. "Разум и алгоритм, - утверждают они, - две вещи несовместные..."
Зато другие ученые свято верят в алгоритмический путь. Их доводы: с каждым годом крепнет алгоритмическое мышление, нам становится под силу то, на чти мы и не надеялись раньше. Мы разрабатываем все более общие, все более универсальные алгоритмы. Нам удастся отыскать единый ключ, универсальную отмычку, подходящую к любым задачам, вскрывающую любые проблемы. Мы сделаем Иекинт.