Научная статья на тему 'Формальное доказательство семантической эквивалентности ядра языка АОП AspectTalk и языка ООП Smalltalk'

Формальное доказательство семантической эквивалентности ядра языка АОП AspectTalk и языка ООП Smalltalk Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
118
29
i Надоели баннеры? Вы всегда можете отключить рекламу.

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Стефанцов Дмитрий Александрович, Крюкова Анастасия Евгеньевна

Denotational semantics of programming languages are considered. The core of an aspect-oriented programming language is defined as its subset which is not aspect-oriented. Semantics equivalence between the core of the aspect-oriented programming language AspectTalk and the objectoriented programming language Smalltalk is proven with commutativity of the diagram in which objects are syntax or semantic domains and arrows are homomorphisms. The proof shows in particular that the core of AspectTalk is really an object-oriented programming language and the automatic translation of programs from the core of AspectTalk into Smalltalk and vice versa is possible.

i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Formal proof of the semantic equivalence between the core of the AOP language AspectTalk and the OOP language smalltalk

Denotational semantics of programming languages are considered. The core of an aspect-oriented programming language is defined as its subset which is not aspect-oriented. Semantics equivalence between the core of the aspect-oriented programming language AspectTalk and the objectoriented programming language Smalltalk is proven with commutativity of the diagram in which objects are syntax or semantic domains and arrows are homomorphisms. The proof shows in particular that the core of AspectTalk is really an object-oriented programming language and the automatic translation of programs from the core of AspectTalk into Smalltalk and vice versa is possible.

Текст научной работы на тему «Формальное доказательство семантической эквивалентности ядра языка АОП AspectTalk и языка ООП Smalltalk»

УДК 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.

i Надоели баннеры? Вы всегда можете отключить рекламу.