Однако этим возможности компьютеров не исчерпываются, с чем, собственно, и связаны и наши надежды, и наши трудности. Подобно тому, как мы представляли себе шары с числами, помещенные в отдельные ячейки и готовые к дальнейшей компьютерной обработке, можно представить ячейки и с такими шарами, на которых содержатся записи о тех или иных вычислительных операциях, своего рода сигналы к действию. Компьютер в этом случае получает команду, смысл которой приблизительно таков: «Возьми следующий шар и сделай то, что написано на этом шаре.» (Естественно, в действительности нет никаких шаров, которые компьютер мог бы «брать», как при игре в лото. Скорее, можно говорить о существовании особого запоминающего устройства, где компьютер хранит данные и откуда получает электрические сигналы, означающие для него команду «выполнить то или иное действие».) «Шар» может содержать, например, указание перемножить два заданных числа; но может также и представлять собой команду для запуска какой-то посторонней сложной программы. В результате объединения в одно целое столь разнообразных предписаний компьютерные процессы могут становиться очень и очень сложными. Эта сложность, кстати, приводит к возникновению особой «разновидности» программистов, называемой на компьютерном жаргоне английским словом «hacker»[27]
. Хакер — это программист, который из чистого интереса к творчеству без конца придумывает все новые и новые программы, перестает в конце концов ориентироваться в собственных наработках, сидит перед компьютером ночь напролет с разбухшей головой, пытаясь разобраться, что и где пошло не так. При этом незадачливый хакер забирается все глубже и глубже, и к утру оказывается вынужден признать, что в его компьютере царит теперь полнейшая неразбериха. Приведенный пример, без сомнения, наглядно свидетельствует о том, насколько коварной штукой может быть программирование.Трудности, с которыми сталкивается хакер, знакомы, разумеется, каждому программисту. Одной ведущей компьютерной фирмой в этой связи были проведены исследования вопроса о конструкции суперкомпьютеров с точки зрения их архитектуры. Исследования эти, правда, не дали никаких пригодных к использованию результатов, что совершенно неудивительно — с точки зрения синергетики. Компьютер, если разобраться, представляет собой нечто большее, нежели просто совокупность жестких структур; здесь постоянно идут процессы, которые для обеспечения их успешного взаимодействия обязаны быть так или иначе взаимно согласованы. Иными словами, компьютер можно безо всяких оговорок полагать синергетической системой.
Компьютерные сети
Сегодняшний суперкомпьютер «отделен» от ввода/вывода данных. В нескольких отдельных помещениях находятся терминалы, с которых компьютер получает команды и на которые отсылает полученные в ходе работы результаты: здесь они либо появляются на экранах мониторов, либо распечатываются при помощи специальных устройств.
Однако все большую силу набирает новая тенденция, соответствующая важнейшему направлению развития синергетики. Согласно этой тенденции, вместо одного большого компьютера создается сеть из множества соединенных друг с другом обычных компьютеров, которая берет на себя решение задач, раньше предназначавшихся для суперкомпьютера. В этом случае большая машина, прежде руководившая процессом ввода/вывода данных, собственно, уже и не нужна, ведь компьютеры, включенные в сеть, вполне могут «договориться» друг с другом самостоятельно (рис. 17.1).
Рис. 17.1. Организация и самоорганизация компьютеров. Вверху: главный компьютер распределяет задачи — организация. Внизу: отдельные компьютеры распределяют задачи между собой — самоорганизация