Препроцессор языка Templet: инструмент программирования в терминах модели «процесс-сообщение»


Цитировать

Полный текст

Аннотация

Мотивация: Для большого числа прикладных задач целесообразно представление кода решаемой задачи в виде совокупности процессов, обменивающихся сообщениями. Традиционное применение модели «процесс-сообщение» в средстве программирования состоит в разработке специального языка или библиотеки времени исполнения для имеющегося языка. Недостаток первого подхода - это сложность разработки, а второго - сложность применения. Предлагается новый метод описания модели «процесс-сообщение», использующий язык программирования с процедурной семантикой и препроцессор, устраняющий указанные недостатки. Метод: Код программы в терминах модели «процесс-сообщение» делится на блоки: библиотека времени исполнения; связывающий код, объединяющий библиотеку времени исполнения и код конкретной задачи; типы данных для сообщений и процедуры их обработки. Границы блоков обозначаются комментариями. Для описания структуры кода в целом предлагается предметно-ориентированный язык, названный Templet. Метод позволяет проводить контроль соответствия структуры кода модели «процесс-сообщение» автоматически перед компиляцией. Описание каналов: Канал описывает протокол обмена сообщениями между парой процессов. Приведён синтаксис каналов с использованием расширенной нотации Бекуса-Наура (EBNF). Информационная структура каналов, используемая для генерации кода, описана с применением диаграммы «сущность-связь» (ER). Описание процессов: Процесс определяет алгоритм обработки сообщений, поступающих по каналам от других процессов, и ответы на сообщения. Показана информационная структура каналов во взаимосвязи с синтаксисом. В описании также использованы метамодели EBNF и ER. Описание синтаксиса сопровождается примером процесса «разветвление-слияние». Схема работы препроцессора: Рассматривается укрупнённый алгоритм работы и архитектура препроцессора языка Templet. Препроцессор состоит из подсистем синтаксического анализатора, анализатора блоков, базы данных, семантического анализатора, механизма вывода и генератора кода. Описывается алгоритм работы препроцессора. На основе анализа количества строк кода в контрольном примере показано сокращение объёма ручного кодирования примерно в 20 раз. Применение и сравнение с аналогами: Препроцессор применяется в составе web-сервиса для автоматизации параллельных вычислений. Он используется для подготовки скелетов программ, которые пользователи дополняют проблемно-ориентированным кодом. Описаны преимущества, общие черты и различия предложенного подхода в сравнении с технологиями разметки последовательного кода, генерирующими макропроцессорами, специализированными параллельными языками, метапрограммированием и разработкой, управляемой моделями. Настоящая статья представляет собой расширенный вариант доклада [1], сделанного автором на Международной научно-технической конференции «Перспективные информационные технологии» (Самара, СГАУ, 30 июня - 2 июля 2014).

Об авторах

Сергей Владимирович Востокин

Самарский государственный аэрокосмический университет им. ак. С. П. Королёва (национальный исследовательский университет)

Email: easts@mail.ru
(д.т.н., доц.; easts@mail.ru), профессор, каф. информационных систем и технологий 443086, Россия, Самара, Московское ш., 34

Список литературы

  1. Востокин С. В. Базовый синтаксис языка разметки Templet для представления модели «процесс-сообщение» / Перспективные информационные технологии (ПИТ 2014): Труды Международной научно-технической конференции; ред. С. А. Прохоров. Самара: Изд-во Самарского научного центра РАН, 2014. С. 317-323, http://templet.ssau.ru/wiki/lib/exe/fetch.php?media=pit2014:templetlang.pdf.
  2. Артамонов Ю. С., Востокин С. В., Назаров Ю. П. Templet - Сервис непрерывной интеграции для разработки высокопроизводительных приложений / Высокопроизводительные параллельные вычисления на кластерных системах: Материалы XII всероссийской конференции. Нижний Новгород: Изд-во НГУ, 2012. С. 82.
  3. Востокин С. В. Templet - метод процессно-ориентированного моделирования параллелизма // Программные продукты и системы, 2012. № 3. С. 11-14.
  4. Ward M. P. Language-oriented programming // Software-Concepts and Tools, 1994. vol. 15, no. 4. pp. 147-161.
  5. Dmitriev S. Language oriented programming: The next programming paradigm: JetBrains onBoard, 2004. 13 pp., http://www.onboard.jetbrains.com/articles/04/10/lop/
  6. Hoare C. A. R. Communicating sequential processes / The origin of concurrent programming. New York: Springer, 2002. pp. 413-443. doi: 10.1007/978-1-4757-3472-0_16.
  7. Wirth N. The programming language Oberon // Software: Practice and Experience, 1988. vol. 18, no. 7. pp. 671-690. doi: 10.1002/spe.4380180707.
  8. Chandra R., Menon R., Dagum L., Kohr D., Maydan D., McDonald J. Parallel Programming in OpenMP. San Francisco: Morgan Kaufmann, 2000. 230+xvi pp.
  9. Коновалов Н. А., Крюков В. А., Михайлов С. Н., Погребцов A. A. Fortran-DVM - язык разработки мобильных параллельных программ // Программирование, 1995. № 1. С. 49-54.
  10. Бахтин В. А., Крюков В. А., Четверушкин Б. Н., Шильников Е. В. Расширение DVMмодели параллельного программирования для кластеров с гетерогенными узлами // Доклады Академии наук, 2011. Т. 441, № 6. С. 734-736.
  11. Blumofe R. D., Joerg C. F., Kuszmaul B. C., Leiserson C. E., Randall K. H., Zhou Y. Cilk: An efficient multithreaded runtime system // Journal of parallel and distributed computing, 1996. vol. 37, no. 1. pp. 55-69. doi: 10.1006/jpdc.1996.0107.
  12. Moskovsky A., Roganov V., Abramov S. Parallelism Granules Aggregation with the TSystem / Parallel Computing Technologies / Lecture Notes in Computer Science, 4671. Berlin, Heidelberg: Springer, 2007. pp. 293-302. doi: 10.1007/978-3-540-73940-1_30.
  13. Moskovsky A., Roganov V., Abramov S., Kuznetsov A. Variable Reassignment in the T++ Parallel Programming Language / Parallel Computing Technologies / Lecture Notes in Computer Science, 4671. Berlin, Heidelberg: Springer, 2007. pp. 579-588. doi: 10.1007/978-3-540-73940-1_58.
  14. Seindal R. GNU m4 (version 1.4): Technical report: Free Software Foundation, 1997.
  15. Cook S., Jones G., Kent S., Wills A. K. Domain-Specific Development with Visual Studio DSL Tools. Boston: Pearson Education, 2007. 576 pp.
  16. Hewitt C. Actor Model of Computation: Scalable Robust Information Systems, 2010. 48 pp., arXiv: 1008.1459 [cs.PL].
  17. Hewitt C. Viewing control structures as patterns of passing messages // Artificial Intelligence, 1977. vol. 8, no. 3. pp. 323-364. doi: 10.1016/0004-3702(77)90033-9.
  18. Athas W. C., Boden N. J. Cantor: an actor programming system for scientific computing // SIGPLAN Notices (ACM Special Interest Group on Programming Languages), 1989. vol. 24, no. 4. pp. 66-68. doi: 10.1145/67386.67402.
  19. Larson J. Erlang for concurrent programming // Communications of the ACM, 2009. vol. 52, no. 3. pp. 48-56. doi: 10.1145/1467247.1467263.
  20. Selic B. The pragmatics of model-driven development // IEEE Software, 2003. vol. 20, no. 5. pp. 19-25. doi: 10.1109/MS.2003.1231146.
  21. Atkinson C., Kühne T. Model-driven development: A metamodeling foundation // IEEE Software, 2003. vol. 20, no. 5. pp. 36-41. doi: 10.1109/MS.2003.1231149.
  22. Hailpern B., Tarr P. Model-driven development: The good, the bad, and the ugly // IBM Systems Journal, 2006. vol. 45, no. 3. pp. 451-461. doi: 10.1147/sj.453.0451.
  23. Mukerji J., Miller J. Overview and guide to OMG’s architecture: IBM Whitepaper, 2001. 62 pp.
  24. Hazzard K., Bock J. Metaprogramming in.NET. Shelter Island: Manning Publ., 2013. 334+xxiv pp.

Дополнительные файлы

Доп. файлы
Действие
1. JATS XML

© Самарский государственный технический университет, 2014

Creative Commons License
Эта статья доступна по лицензии Creative Commons Attribution 4.0 International License.

Согласие на обработку персональных данных с помощью сервиса «Яндекс.Метрика»

1. Я (далее – «Пользователь» или «Субъект персональных данных»), осуществляя использование сайта https://journals.rcsi.science/ (далее – «Сайт»), подтверждая свою полную дееспособность даю согласие на обработку персональных данных с использованием средств автоматизации Оператору - федеральному государственному бюджетному учреждению «Российский центр научной информации» (РЦНИ), далее – «Оператор», расположенному по адресу: 119991, г. Москва, Ленинский просп., д.32А, со следующими условиями.

2. Категории обрабатываемых данных: файлы «cookies» (куки-файлы). Файлы «cookie» – это небольшой текстовый файл, который веб-сервер может хранить в браузере Пользователя. Данные файлы веб-сервер загружает на устройство Пользователя при посещении им Сайта. При каждом следующем посещении Пользователем Сайта «cookie» файлы отправляются на Сайт Оператора. Данные файлы позволяют Сайту распознавать устройство Пользователя. Содержимое такого файла может как относиться, так и не относиться к персональным данным, в зависимости от того, содержит ли такой файл персональные данные или содержит обезличенные технические данные.

3. Цель обработки персональных данных: анализ пользовательской активности с помощью сервиса «Яндекс.Метрика».

4. Категории субъектов персональных данных: все Пользователи Сайта, которые дали согласие на обработку файлов «cookie».

5. Способы обработки: сбор, запись, систематизация, накопление, хранение, уточнение (обновление, изменение), извлечение, использование, передача (доступ, предоставление), блокирование, удаление, уничтожение персональных данных.

6. Срок обработки и хранения: до получения от Субъекта персональных данных требования о прекращении обработки/отзыва согласия.

7. Способ отзыва: заявление об отзыве в письменном виде путём его направления на адрес электронной почты Оператора: info@rcsi.science или путем письменного обращения по юридическому адресу: 119991, г. Москва, Ленинский просп., д.32А

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

9. Порядок уничтожения персональных данных при достижении цели их обработки или при наступлении иных законных оснований определяется Оператором в соответствии с законодательством Российской Федерации.

10. Я согласен/согласна квалифицировать в качестве своей простой электронной подписи под настоящим Согласием и под Политикой обработки персональных данных выполнение мною следующего действия на сайте: https://journals.rcsi.science/ нажатие мною на интерфейсе с текстом: «Сайт использует сервис «Яндекс.Метрика» (который использует файлы «cookie») на элемент с текстом «Принять и продолжить».