The Templet language preprocessor: a programming tool for process-per-message modeling


Cite item

Full Text

Abstract

Motivation: A large number of applications can be described as a set of processes that exchange messages. Traditionally the process-per-message model is used in the form of a specialized language or a run-time library for general purpose language. The first approach lacks implementation simplicity, while the second approach is difficult in use. We propose a new method that comprises domain-specific language called Templet for code markup, a general purpose language, and the preprocessor. Our approach is free from disadvantages mentioned above. Method: A code of a program is divided into blocks. Block boundaries are indicated by comments. The entire code structure is defined in Templet language so it can be checked out automatically before compilation. Description of Channels: A channel defines a message exchange protocol between two interconnected processes. We provide channel syntax in the form of Extended Backus-Naur Formalism (EBNF). The informational structure of the channel is described with Entity-Relation diagram (ER). Description of Processes: A process defines the algorithm for message processing. Information structure of the process is shown in conjunction with the syntax. EBNF and ER models are also used in the process specification. Syntax rules are illustrated with the fork-join code sample. Preprocessor structure and work scheme: We present the algorithm and the structure of the preprocessor. Subsystems discussed are: syntax analyzer; semantics analyzer; internal database; inference mechanism; and code generator. The method for estimation of workload of manual coding is presented. It shows the diminishment of workload in 20 times comparing with manual coding. Discussion: The preprocessor is used for skeleton programming as a part of web-service for automated parallel programming. Its advantages and features are discussed in comparison with parallelization with markup technique; general-purpose macro processor; parallel programming language, metaprogramming; and model-driven development. This paper is an extended version of a PIT 2014 paper [1].

About the authors

Sergey V Vostokin

S. P. Korolyov Samara State Aerospace University (National Research University)

Email: easts@mail.ru
(Dr. Techn. Sci.; easts@mail.ru), Professor, Dept. of Information Systems and Technology 34, Moskovskoe sh., Samara, 443086, Russian Federation

References

  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.

Supplementary files

Supplementary Files
Action
1. JATS XML

Copyright (c) 2014 Samara State Technical University

Creative Commons License
This work is licensed under a Creative Commons Attribution 4.0 International License.

Согласие на обработку персональных данных

 

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