УДК 004.423, 519.682.1
ФОРМАЛЬНОЕ ДОКАЗАТЕЛЬСТВО СЕМАНТИЧЕСКОЙ ЭКВИВАЛЕНТНОСТИ ЯДРА ЯЗЫКА АОП ASPECTTALK И ЯЗЫКА ООП SMALLTALK1
Д. А. Стефанцов, А. Е. Крюкова
Язык аспектно-ориентированного программирования (АОП) AspectTalk [1] разработан с целью создания защищённых систем обработки информации. На нём могут быть реализованы информационная система и политика её безопасности, а также осуществлена их интеграция с помощью соединительных модулей [2]. Основой этой технологии является возможность создания с помощью АОП дополнительных модулей и интеграции их с программой без изменения её исходного текста [3]. Согласно [4], всякий язык АОП L является надмножеством (расширением) некоторого языка программирования, не являющегося языком АОП и называемого далее ядром языка L. Ядро языка AspectTalk, по замыслу его автора, построено как язык объектно-ориентированного программирования (ООП). В данной работе даётся формальное доказательство семантической эквивалентности ядра языка АОП AspectTalk и языка ООП Smalltalk 80 [5]. Тем самым, в частности, формально доказывается, что ядро языка AspectTalk является действительно языком ООП.
Основными компонентами определения языка программирования являются его синтаксис и семантика. Синтаксис задаётся с помощью формы Бэкуса-Наура (БНФ) или расширенной БНФ (РБНФ) [6]. Денотационное описание семантики (ДОС) [7] — один из способов формального описания семантики языков программирования, который состоит в задании тройки объектов: 1) множеств, определяемых системой уравнений на моноиде слов в алфавите языка и называемых синтаксическими областями; 2) совокупности множеств, являющихся непрерывными решётками и называемых множествами семантических объектов, или доменами [8]; 3) множества функций, являющихся отображениями из синтаксических областей в домены, называемого множеством семантических отображений.
В [9] семантическая эквивалентность языков программирования определена как коммутативность диаграммы, в которой объектами являются множества синтаксических областей и множества доменов, а стрелками — гомоморфизмы между этими множествами. Аналогичным образом семантическая эквивалентность ядра языка АОП AspectTalk и языка Smalltalk доказана коммутативностью диаграммы на рис. 1, где A — ядро языка АОП AspectTalk, B —язык Smalltalk, Synx —множество синтаксических областей языка X, Semx —множество доменов языка X.
3
SynA^^ Synß
4
і
2
5
Sem а^____- SemB
6
Рис. 1. Диаграмма семантической эквивалентности языков А и В
Гомоморфизымы 1 и 2 —это множества семантических отображений ДОС языков А и В соответственно. ДОС ядра языка Аэрес1Та1к построено на основе [10], ДОС
1 Работа выполнена в рамках реализации ФЦП «Научные и научно-педагогические кадры инновационной России» на 2009-2013 гг. (гос. контракт № П1010).
языка Smalltalk позаимствовано из работы [11]. Гомоморфизмы 3 и 4 определяются правилами трансляции одного языка в другой, 5 и 6 являются гомоморфизмами на непрерывных решётках. Заметим, что в [9] в качестве языков A и B рассматриваются высокоуровневый язык программирования и машинный язык соответственно и ставится вопрос о корректности трансляции одного в другой. Поскольку задача восстановления исходного текста программы не всегда имеет решение, гомоморфизм 4 отсутствует на диаграммах в [9].
Доказательство семантической эквивалентности ядра языка AspectTalk и языка Smalltalk позволяет использовать все принципы ООП, разработанные для Smalltalk, в программировании на AspectTalk. Более того, возможна автоматическая трансляция программ с языка Smalltalk в AspectTalk и обратно.
ЛИТЕРАТУРА
1. Стефанцов Д. А. Реализация политик безопасности в компьютерных системах с помощью аспектно-ориентированного программирования // Прикладная дискретная математика. 2008. №1(1). С. 94-100
2. Стефанцов Д. А. Технология и инструментальная среда создания защищённых систем обработки информации // Прикладная дискретная математика. 2009. Приложение №1. С.55-56.
3. Filman R. E., Friedman D. P. Aspect-oriented programming is quantification and obliviousness [Электронный ресурс] // Technical report, RIACS, 2000. URL: http://www. riacs.edu/research/technical_reports/TR_pdf/TR_01.12.pdf, свободный доступ (дата обращения: 9.04.2010)
4. Elrad T., Filman R.E., Bader A. Aspect-Oriented Programming // Communicat. ACM. 2001. October. V. 44. No. 10. P. 29-32.
5. Goldberg A., Robson D. Smalltalk 80: The Language and its implementation. Addison-Wesley, 1983. 742 p.
6. Whitney G. An extended BNF for specifying the syntax of declarations // AFIPS Joint Computer Conferences, Boston, MA, USA. 1969. P. 801-812.
7. Tennet R. D. The denotational semantics of programming languages // Communicat. ACM. 1976. August. V. 19. No. 8. P. 437-453.
8. Scott D. Data types as lattices // Lect. Notes Mathem. 1975. V. 499. P. 579-651.
9. Janssen T. M. V. Algebraic translations, correctness and algebraic compiler construction // Theoret. Comp. Scie. 1998. V. 199. P. 25-56.
10. Abelson H., Dybvig R. K., Haynes C. T., etal. Revised5 Report on the Algorithmic Language Scheme // Higher-Order Symb. Comp. 1998. V. 11. No. 1. P. 7-105.
11. Kamin S. Inheritance in Smalltalk-80: a denotational definition // POPL ’88: Proceedings of the 15th ACM SIGPLAN-SIGACT symposium on Principles of programming languages. 1988. P. 80-87.