В обширном списке работ Леонида Витальевича восемь относятся к крупноблочному программированию (см. библиографию). Идеи, высказанные в этих работах, предвосхитили развитие программирования по меньшей мере на четверть века. Эти идеи заложили основы крупноблочной школы программирования, созданной Л. В. Канторовичем в Ленинграде в 1954 году. Работа школы протекала весьма активно в 50–60-е годы, но она находилась вне основного русла развития традиционного (фон-Неймановского) программирования, что, естественно, затрудняло развитие этих идей. Школа следовала математическому направлению, которое связывается сейчас, в частности, с функциональным стилем и проявляется также в других подходах, когда проблемы программирования все теснее начинают увязываться с математическими представлениями, результатами и теориями.
Первыми по времени написания были три работы 1956 года [1–3], кратко излагающие основы идеологии и содержащие сообщения о первых реализациях крупноблочных систем автоматизации программирования — о первых “прорабах”. Одна из заметок [2] представляет тезисы сообщения на Третьем Всесоюзном математическом съезде.
Характерной особенностью крупноблочных систем являлось то, что они оперировали не с индивидуальными числами и символами, а с величинами — укрупненными агрегированными информационными объектами. Такие укрупненные структуры данных (матрицы, векторы, последовательности, деревья, схемы и т. д.) выступали как целое в вычислительных планах; стандартные способы обработки отдельных элементов величин выполнялись автоматически на нижних уровнях. Это вносило иерархическую структуру в языки программирования, освобождая верхние уровни от ненужной детализации. Отметим следующий принципиальный момент. С каждой величиной при вводе ее в машину связывались три характеристики, выделялись три ее стороны:
Так очень естественно уже на первых шагах были отчетливо введены в рассмотрение синтаксический, смысловой и интерпретационный уровни информационных объектов, и объект рассматривался “объемно”, как целостное единство этих компонент.
Существенно, что и сам вычислительный процесс мыслился при этом также “объемным”, протекающим одновременно либо попеременно на каждом из этих уровней. Хорошо известно, что громоздкие и трудоемкие вычисления часто чрезвычайно упрощаются при переходе на другой уровень. Представляется, что в разумной стратегии переходов с одного уровня на другой кроется значительный резерв экономичности вычислений. Внимание этому уделялось уже в первых прорабах (транспонирование матрицы и другие преобразования на уровне справки и т. п.). В дальнейшем вопросы экономичности рассматривались в связи с реализацией в прорабах вычислений с задержкой. На этой же уровневой основе была создана оригинальная теория и методология трансляции, гибко сочетающая компиляцию и интерпретацию. Следует отметить ту особенность крупноблочных систем, что универсальные средства усиления выразительности включались в языки под строгим контролем экономичности вычислений.
К 1957 году относятся две основные работы Л. В. Канторовича по программированию — это заметка в Докладах АН СССР [4] и развернутая статья [5], написанная по следам сообщения на сессии Академии наук Армянской ССР.
Другим фундаментальным информационным объектом, который Л. В. Канторович ввел в рассмотрение наряду с величинами, были абстрактные схемы. Вместо обычных формул со скобками предлагается запись связей и зависимостей математических объектов в виде расчлененной схемы типа
К = К1 К2 ... Кn
К1 = ...
...
Здесь К и Кi являются элементами некоторого нумерованного множества, образованного из математических объектов различной природы (числа, матрицы, функции и т. п.). Схема выражает систему отношений между объектами.
Каждая строка вида
К = К1 К2 ... Кn
означает, что объект К определяется системой объектов К1, К2, ... Кn, при этом элемент К называется результатом, а К1, К2, ... Кn — аргументами. Рассматривается отношение непосредственной подчиненности между результатом и его аргументами, вводится важное понятие явной схемы. Отмечается возможность анализа и преобразования абстрактных схем на синтаксическом уровне. На семантическом уровне рассматривается отношение совместности аргументов, вводится понятие решения схемы, рассмотрены преобразования схем по схемным тождествам (по образцам). Указывается возможность применения схемной символики в качестве языка программирования со своей методикой трансляции.
В 1968 году была напечатана статья [6], в которой описаны и проанализированы опубликованные к тому времени работы крупноблочной школы (библиография содержит 40 названий). Здесь намечены перспективы развития этого направления.
Работы 1974 года [7–8] посвящаются обсуждению настоятельной необходимости комплексного системного подхода к взаимосвязанному развитию таких областей знания, как
Одним из средств подобного согласования могут служить крупноблочные формы описания и машинной реализации вычислительных процессов. Большое внимание уделяется роли массовых операций в вычислениях.
Несомненно, что многие решения, найденные в крупноблочной схемной символике, актуальны и сегодня. Схемы Канторовича, модельный (уровневый) подход, методы трансляции, многие другие принципы, опробованные в крупноблочных системах, должны найти свое применение и дальнейшее развитие в нарождающихся новых подходах. Снова и снова удивляешься силе и глубине творческой мысли Леонида Витальевича, позволившей ему 30 лет назад верно представить принципиальные пути развития зарождающейся науки и немало сделать в этом направлении. В целом же значение подхода, развитого Л. В. Канторовичем, не ограничивается решением отдельных, пусть и очень важных задач. Здесь намечались пути и развивалась методология привлечения компьютеров к участию в самых различных областях интеллектуальной деятельности человека.
©1997-98 Лаборатория Конструирования и Оптимизации Программ
Институт Систем Информатики CO PAH
Web master webmst@pcosrv.iis.nsk.su