Working with Data in the SYNHRO Educational Programming Language
DOI:
https://doi.org/10.14529/cmse230205Keywords:
memory access discipline, functional programming, multi-threaded programs, data immutability, data recovery, memory freeingAbstract
The article is devoted to clarifying the concepts that are useful in preparing small multi-threaded programs for teaching parallel programming. The approach was formed in the process of creating the SYNHRO language. The priority is given to the paradigm of functional programming, which is popular in the preparation of prototypes of multi-threaded programs. A description of differences from the usual ideas that hinder the solution of problems of organizing parallel computing and extremely distributed systems from a number of threads interacting in terms of access to the values of variables, possibly located in a shared memory is given. A mechanism for the interaction of local and shared memory is proposed. The main models of organizing parallel computing are taken into account and a number of concepts and methods are refined, which changes during the transition from conventional programming to the representation of multi-threaded and multiprocessor programs. First of all, this is the overcoming of the dependence of the order of calculations on the sequence of occurrence of expressions in the program text. Further, the basic mechanism of influences on memory changes. Some of them are made more complex to prevent surprises due to asynchrony and weakening the imperativeness of executing elements of distributed systems. The concept of twin commands has been added to control the imperative synchronization of interacting devices, useful in resolving memory freeing issues.References
Gorodnyaya L.V. Parallel programming language SYNHRO for learning. Novosibirsk. Preprint of ISI SB RAS No. 180, 2016. 30 p.
Gorodnyaya L.V. About the course “The Beginnings of Parallelism”. Ershov Conference on Informatics. Section “Informatics of education”, Novosibirsk, Russia, July 27, 2011. P. 51–54. (in Russian).
Voevodin V.V. Parallel Computing. St. Petersburg: BHV-Petersburg, 2002. 608 p. (in Russian).
Hoare C.A.R. Interacting Sequential Processes. Mir Publishing House, 1989. 264 p. (in Russian).
McCarthy J. LISP 1.5 Programming Manual. Cambridge: The MIT Press, 1963. 106 p. DOI: 10.7551/mitpress/5619.001.0001.
Backus J. Can programming be liberated from the von Neumann style? A functional stile and its algebra of programs. Commun. ACM. 1978. Vol. 21, no. 8. P. 613–641. DOI: 10.1145/359576.359579.
Henderson P. Functional programming. M.: Mir, 1983. 349 p. (in Russian).
Lavrov S.S. Functional programming. Computer tools in education. 2002. No. 2-4. (in Russian).
Lavrov S.S., Gorodnyaya L.V. Functional programming. Lisp language implementation principles. Computer tools in education. 2002. No. 5. P. 49–58. (in Russian).
Gorodnyaya L.V. Fundamentals of functional programming. M.: Internet University of Information Technologies, 2004. 272 p.
Gorodnyaya L.V. First implementations of the Lisp language in the USSR. Proceedings of the Second International Conference Development of Computing Technology and Its Software in Russia and the Former USSR Countries, SoRuCom-2011. P. 95–100. (in Russian).
Cann D.C. SISAL 1.2: A Brief Introduction and tutorial. Preprint UCRL-MA-110620. Lawrence Livermore National Lab., Livermore, California, May, 1992. 128 p.
Burdonov I.B., Kosachev A.S. Semantics of interaction with failures, divergence and destruction. Part 2. Conditions for final full testing. Bulletin of Tomsk State University. 2011. Vol. 2, no. 15. (in Russian).
Koopman P., Michels S., Plasmeijer R. Dynamic Editors for Well-Typed Expressions. Trends in Functional programming - 22nd International Symposium, 22nd International Symposium, TFP 2021, Virtual Event, February 17–19, 2021. Revised Selected Papers. Vol. 12834. Springer, 2021. P. 44–66. LNCS. DOI: 10.1007/978-3-030-83978-9_3.
Erann Gat Lisp as an Alternative to Java. URL: https://flownet.com/gat/papers/ lisp-java.pdf (accessed: 05.04.2022).
Irtegov D.V. Introduction to operating systems St. Petersburg: BHV-Petersburg, 2008. 1040 p. (in Russian).
Donald Knuth D.E. The Art of Programming, volume 1, issue 1. MMIX – RISC Computers of the New Millennium. M.: Williams, 2017. 160 p. (in Russian).
Wirth N. Compiler Construction. Moscow: DMK Press, 2010. (in Russian).
Ailiffe J.K. Principles of building a base machine. M.: Mir, 1973. 119 p. (in Russian).
Evans B., Gough J., Newland K. Java: program optimization. Practical methods for improving application performance in the JVM. M.: Dialectics, 2019. 448 p. (in Russian).
Gorodnyaya L.V. Abstract machine of the programming language for educational purposes SYNHRO. Bulletin of NGU. Series: Information technologies. 2021. Vol. 19, no. 4. P. 16–35. (in Russian).
Graber M. Introduction to SQL. M.: Lori, 1996. 377 p. (in Russian).
Levin V.K. National Family of MVS Supercomputers. URL: http://parallel.ru/mvs/ levin.html (accessed: 05.04.2022) (in Russian).


