Общество топит себя в информации: традиционные циклы производства и потребления, привязанные к информационной среде, переносятся в Сеть почти без изменений. Мутные потоки информации превысили индивидуальные и социальные возможности их фильтрации для полезного использования. Подавляющая часть циркулирующей информации человеку не нужна: требуются лишь результаты ее обработки. Низкосортное перепроизводство можно прекратить, превратив аморфную Сеть из коммутатора, нагнетающего чрезмерные потоки, в регулярно программируемую вычислительную среду, снабжающую нас готовыми функциями.
Сеть эволюционирует. Ее следующее состояние — целостно интегрированный организм, который воспринимает информационную активность человечества и преобразует информационные потоки в разнообразие социальных функций. Через компьютерную среду информация заново структурирует социальную среду. Бюрократические структуры уступят, как менее эффективные, большую часть своих функций регулирования процессам самоорганизации.
Сеть необходима как инструмент развития, как фильтр информации. Естественные механизмы самозащиты информационной среды не справляются с запредельными потоками. Тотальности децентрализованных угроз можно противостоять только с помощью распределенной компьютерной среды. Для универсального использования распределенного интеллекта всех компьютеров Сети требуется регулярный и доступный инструмент глобального программирования. Необходима новая компьютерная парадигма.
Глобальные задачи против «классики»
Анализ растущего вместе с Сетью компьютерного кризиса указывает на фундаментальность его первопричин. В Сети ширится новый феномен — глобальные компьютерные задачи. Их предельные требования к интеграции компьютерных решений превысили возможности индустриального программирования.
Продвижение в Сеть массовых задач экономики и бизнеса, попавших в сферы интересов инвесторов, удалось в меньшей степени, чем ожидалось. Колоссальные инвестиции вместо дивидендов принесли глубокий спад в сфере ИТ. Быстрый откат индекса NASDAQ к уровню середины 90-х годов говорит об изначальной недооценке сложности глобальной интеграции ИТ-решений. Вовремя нераспознанный кризис уже заговорил жестким экономическим языком. Пора признать очевидное: в попытке сходу взять глобальные задачи технологии индустриального программирования потерпели фиаско. Первопричины кризиса не в экономике или политике, не в отсутствии инвесторов, не только в нехватке высококлассных специалистов, технических средств, передовых технологий. Но в чем же?
В поиске первопричин необходимо помнить следующее. Во-первых, парадигмы, когда выражают законы природы, не подчиняются настроениям рынка и массового производства. Во-вторых, парадигма не должна давать повода назвать себя догмой.
Изначальная классическая модель фон Неймана [1] уже более полувека служит теоретической основой архитектуры и программ универсального компьютера. Компьютеростроение материализовало ее в многомиллионных тиражах процессоров, программ, закрепило в триллионных оборотах ИТ-рынка. Но Сеть вдруг поменяла все, потребовав качественно иного уровня интеграции глобального информационного пространства.
В том, что в рамках исходной парадигмы глобальная интеграция не состоялась, нет вины классической аксиоматики. Ее изначальные полномочия распространяются только на изолированный компьютер. Однако об ограничениях сфер действия «классики» благополучно «забыли». Теперь о них языком экономического кризиса напоминает рынок.
Индикатором неадекватности классических постулатов в Сети стал информационный шум, являющийся главным препятствием глобальной интеграции. Деструктивная роль информационного шума многоязычия осознана еще в сюжете Вавилонского столпотворения. В отличие от социальной среды, где языки наряду с информационной несут и социально-психологическую нагрузку, компьютерную среду можно избавить от многоязычия. С помощью новой, полной и замкнутой модели единого и математически однородного поля компьютерной информации, не запрещающей программистам и пользователям строить удобные для себя языки, Сеть может избежать участи древнего амбициозного проекта.
Интеграция в Сети достижима пока только для каждого отдельного случая. Индустриальное программирование никак не найдет общего языка с интеграцией. То, что надо одному, неудобно для другого. Имеющийся инструментарий вынуждает дробить глобальные задачи на части, решать их в отдельности (локализовать), а затем по мере необходимости интегрировать воедино. Требуются общие и понятные принципы, единое и универсальное представление компьютерной информации.
Устранение недостатков классической аксиоматики
В модели фон Неймана произвольные структуры данных формируются последовательностями (потоками) адресов к памяти (для чтения/записи элементов данных). Значения адресов в потоке задаются алгоритмическими предписаниями. Модель позволяет произвольным образом кодировать в потоках произвольные структуры данных. Следовательно, в управлении машинным счетом на уровне потоков адресов имеются две степени свободы; обе они открыты программистам. По своему усмотрению они строят структуры данных и для каждой из них задают последовательности адресов доступа к памяти. Здесь и скрыт секрет воспроизводства информационного шума — избыточного и трудно преодолимого при интеграции многоязычия в представлениях структурированной информации. Комбинаторная природа шума усредненно проявляется так: сложность интеграции растет квадратично от разнородности информационного пространства. Источник шума — программисты, на уровне постулатов получившие лицензию на самовыражение в воспроизводстве плохо совместимых структур данных. Инструмент — средства индустриального программирования. Среда накопления — Сеть.
Устранить на уровне аксиоматики лишнюю степень свободы, а вместе с ней комбинаторное сопротивление глобальной интеграции, можно введением однородного поля компьютерной информации посредством математической регламентации используемых структур. Такая регламентация построена в виде компьютерного исчисления древовидных структур [2]. Единый и универсальный объект исчисления — деревья, самая простая связная структура из возможных. Двоичные деревья — рекурсивно-однородный структурный элемент компьютерной информации, представляющий программы и данные. Исчисление деревьев — это математически полные и замкнутые в множестве деревьев правила универсальной композиции/декомпозиции. При программировании деревья свободно интерпретируются в терминах предметной области решаемых задач. С математической точки зрения — это исчисление «слабое», а потому не имеющее обременительных ограничений в отношении классов решаемых в нем задач.
Предложенная модель устраняет изолированность, а вместе с ней и причины воспроизводства информационного шума. Математически полное и замкнутое исчисление древовидных структур инвариантно в отношении технических особенностей машинной среды.
Программирование в исчислении древовидных структур
Различные формы древовидных структур широко используются в языках программирования как формализованные типы данных, например, списки (Лисп). Их можно представить через общие структуры (Си, Паскаль) или через объекты (C++, Java). В прикладных системах с применением древовидных структур реализуются удобные пользовательские интерфейсы, гипертекстовые справочники и т.д. Практика показывает: использование деревьев упрощает пользование программными продуктами.
Язык и система программирования ПАРСЕК [2] реализует исчисление древовидных структур с открытой интерпретацией, представленных для программиста в форме вертикальной ленты строк («одна строка — одна вершина»), которую еще Питер Нортон ввел в массовый компьютерный обиход, дав геометрическое представление файловой системы. В языке ПАРСЕК деревья в подобной геометрической форме дают универсальное и математически замкнутое представление компьютерной информации как данных, так и программ. Решая задачи, программист создает необходимые деревья и функции их преобразования, по своему усмотрению назначая смысловую нагрузку и деревьям, и функциям их преобразования. Полнота и замкнутость исчисления древовидных структур в сочетании с их открытой содержательной интерпретируемостью дают практическую универсальность в применении к различным задачам. В значительной мере упрощается параметризация программ. На идеологическом уровне исключена опасность разрушения информации в памяти из-за переполнения индексных полей. При полностью динамическом управлении памятью ее расход ограничен заранее известными оценками.
Два подхода к глобализации программирования
Движение к глобальному программированию Сети идет встречными курсами. Одно — «снизу-вверх» (от практики), другое — «сверху-вниз» (от теории). Пример первого направления — Grid [3], подход к интеграции машинных ресурсов Сети для распределенных вычислений и систем. Многочисленные и разнородные версии Grid толерантны к классической компьютерной парадигме, потому органично вписываются в арсенал индустриального программирования. Это путь постепенного наращивания средств индустриального программирования в рамках классической парадигмы. Интеграция осуществляется силовым преодолением комбинаторного сопротивления информационного шума.
Встречное направление начинается с новой парадигмы математически однородного поля компьютерной информации, в которой на уровне аксиоматики устранены причины воспроизводства информационного шума. В новой парадигме проблемы программирования, интеграции и масштабирования компьютерных решений и распределенных процессов перестают зависеть от технических особенностей компьютеров и сетей. Регулярный инструмент глобального программирования строится сначала на теоретическом уровне в виде математически полной и замкнутой модели. Затем алгоритмы функционирования этой модели программно эмулируются в ресурсах Сети.
В математически однородном поле компьютерной информации интегрируются не ресурсы машинной среды, а решаемые в нем задачи. Эмуляция такого поля в Сети строится по математически замкнутой модели, дающей программистам все необходимое и достаточное для реализации универсального ядра глобально распределенных вычислений и систем.
Новый подход подразумевает и новую стратегию: проблемы переустройства Сети выходят за рамки какой-либо корпорации и должны опираться уже не на законы рыночной конкуренции, а на равно обязательные для всех фундаментальные свойства и законы развития компьютерной информации.
Литература
- Беркс А., Голдстейн Г., Нейман Дж. Предварительное рассмотрение логической конструкции электронного вычислительного устройства // Кибернетический сборник. М.: Мир, 1964. Вып. 9.
- Затуливетер Ю.С., Халатян Т.Г. ПАРСЕК - язык компьютерного исчисления древовидных структур с открытой интерпретацией. Стендовый вариант системы программирования. - М., 1997, Институт проблем управления РАН.
- Foster I., Kesselman C., Tuecke S. The Anatomy of the Grid. Enabling Scalable Virtual Organizations. http://www.globus.org/research/papers/anatomy.pdf.
Юрий Затуливетер (zvt@ipu.rssi.ru) — сотрудник Института проблем управления РАН (Москва).