Rambler's Top100
 
 
  05 декабря 2008 года Компьюлента
CIO
Терралаб
Бизнес-журнал
в поле зрения | обзоры и тесты | своя игра | интерактив
Метавычисления - теория метасистемных переходов в программировании
Автор: Андрей Чеповский
Опубликовано в журнале "Компьютерра" №25 от 02 июля 2001 года

www.csee.umbc.edu/~ebedweДля мира программ предположение,
 что «теория метасистемных переходов верна»,
оказалось чрезвычайно плодотворным.
С. Абрамов

Теория метасистемных переходов - это теория эволюции. Условия реализации эволюции можно создать в мире программ. Достаточно написать для них метапрограммы, то есть программы, преобразующие другие программы. Последовательное и (формально) бесконечное применение метапрограмм к программам и к самим себе будет порождать новые программы. При этом могут возникать метасистемные переходы, приводящие к качественно новым возможностям программ.

Созданием метапрограмм (новых метасистем) над программами на основе методов анализа и преобразования программ и занимается теория метавычислений.

Одним из самых увлекательных разделов метавычислений является инверсное программирование. Можно сказать, что это программирование наоборот. Вам надо решить некую задачу, а вы вместо нее программируете обратную ей, если для обратной задачи гораздо проще написать программный код. После этого программист обращается к средствам инвертирования программ, реализующим инверсное вычисление, и получает новую программу, решающую исходную задачу.

При таком подходе можно отказаться от программирования методов решения уравнения f(x)=b и написать программу вычисления значений функции f(x) по заданным значениям переменной x. После инвертирования такой программы получим программу решения исходного уравнения, не реализовывая какой-либо алгоритм решения уравнения. Фантастика! Захотели получить корни системы алгебраических уравнений - запрограммируйте саму матрицу, и дело сделано…

Что это за сказки? Программирование позволяет решать математические задачи без математики? Конечно, нет, просто мы упустили одну деталь: где взять средства инвертирования программ? Их действительно можно создать, анализируя граф процессов вычисления при помощи средств метавычислений над исходной программой. Однако для сложных функций f(x) эта задача может решаться неопределенно долго.

Естественная область применения метавычислений - тестирование программ. Тестирование можно рассматривать как «метадеятельность» над программой, в ходе которой изучаются процессы выполнения программы на тестовых данных. Метадеятельность позволяет рассматривать и анализировать текст программы целиком. Это отличает метавычислительный подход к тестированию от широко распространенного подхода, использующего структурные критерии выбора тестов, основанные на анализе управляющей структуры программы.

При метавычислительном подходе сама тестируемая программа и данные к ней являются объектами вычислений. В качестве системы, выполняющей вычисления, выступает интерпретатор языка реализации программы. А некоторая метасистема наблюдает за исполнением программы и определяет, какая информация о программе и данных используется системой выполнения. Такой метасистемой может быть окрестностный анализатор, реализующий разработанные в теории метавычислений алгоритмы окрестностного анализа программ.

Окрестностный анализ использует алгоритмы анализа текста программы, позволяющие точно определять, какая информация о тексте программы была использована в процессе некоторого выполнения программы. Такой анализ, в частности, дает возможность отвечать на вопрос о предполагаемом зацикливании программы.

Одним из самых интересных разделов метавычислений является суперкомпиляция - глобальное преобразование программ. Суперкомпиляция и традиционное преобразование программ существенно отличаются. Традиционно под «преобразованием» понимали цепочку пошаговых эквивалентных преобразований программы. Смысл же суперкомпиляции не в изменении исходной программы, а в создании полной модели вычислительного процесса, соответствующего исходной программе. В процессе суперкомпиляции анализируется и преобразуется некий граф состояний и переходов, пошагово описывающий вычисления. Процесс суперкомпиляции заканчивается, если граф является самодостаточным, то есть если для каждой вершины указано, как перейти к следующей вершине. В результате мы получаем принципиально новую программу, эффективно моделирующую исходную.

В последнее время стало актуальным создание промышленных версий суперкомпиляторов. Во многом это связано с широким использованием компонентного программирования, то есть технологии построения новых программ из разработанных ранее независимых и, возможно, плохо совместимых компонентов. Эффективность результирующих программ при таком подходе может оказаться низкой. Суперкомпиляция же, примененная к результату, позволяет добиться максимальной эффективности.

Суперкомпиляция, инверсные вычисления, окрестностный анализ являются составными частями теории метавычислений. Они используют алгоритмы построения и анализа графа процессов выполнения программы и реализуют метасистемные переходы в жизни и развитии программ.

Теория метавычислений - одно из самых увлекательных и перспективных направлений современных компьютерных наук. Но работа в этой области связана с необходимостью почти забытого в массовом программировании сочетания высокой математической культуры с владением современными методами кодирования. Поэтому не случайно, что именно на механико-математическом факультете МГУ им. М. В. Ломоносова в прошлом году появилась новая специальность «Теоретические вопросы информатики», изучение которой включает подробные курсы по метавычислениям и их применению. Эту специальность можно получить дополнительно к высшему образованию, и мехмат МГУ, пожалуй, единственное в мире место, где есть возможность изучить соответствующие алгоритмы, приобщиться к самым сложным и интересным проблемам теоретической информатики, объединенным общим названием «метавычисления».

[i40227]

ТАКЖЕ В РАЗДЕЛЕ
04 ноября 2008 года
Все будет х….о! 
04 ноября 2008 года
Продолжение следует 
28 октября 2008 года
Танцы на игле 
28 октября 2008 года
Чудесный порошок 
 
САМОЕ ПОПУЛЯРНОЕ
Как дела, "хромой"?
Два месяца назад Google с помпой объявила о выходе в свет бета-версии собственного браузера - Chrome, основанного на движке WebKit. Теперь, когда пыль улеглась, давайте посмотрим, как дела у гугловского подопечного.
Большой обман на маленьких носителях
Подобно сотовым телефонам, флэшка из элитарного продукта в конце концов стала массовым. Но только ли стремительным научно-техническим прогрессом объясняется дешевизна современных флэшек?
Много лучше воровства
Куда деть домашнюю видеоколлекцию? Покупать винчестеры - как самые дешевые, самые быстрые, и, возможно, самые надежные хранители информации. Но тут возникает следующий вопрос: купил, а что дальше?
Ноутбучные отчеты
Никакого повидла - Сергей Голубицкий отчитывается по ноутбукам, с которыми провел последние три года. Как сломать ASUS, чем хороша Toshiba и сколько стоит Sony.  
/  бумажный номер

Тема номера: Кризис в ИТ Читайте на сайте тему номера "Кризис в ИТ" и другие статьи из журнала "Компьютерра" от 04 ноября 2008 года
  Архив номеров журнала

О проекте | Реклама на сайте | Рассылки сайта | КПК–версия | RSS-трансляция

© ООО «Компьютерра–Онлайн», 1997 — 2008.
При цитировании и использовании любых материалов ссылка на портал «Компьютерра–Онлайн» обязательна (для Интернет–изданий — www.computerra.ru)
Редакция сайта: site@computerra.ru
Техподдержка сайта: websupport@computerra.ru
Редакция журнала: inform@computerra.ru
Отдел рекламы: reklama@computerra.ru
Телефон: (495) 232–22–61, (495) 232–22–63
Работает на «Битрикс: Управление сайтом»
Почта защищена сервером «СПАМОРЕЗ»
Трилан — продвижение сайта,
поисковая оптимизация сайта

Сайт работает на сервере DEPO Computers
Rambler's Top100