Работа с данными в учебном языке программирования СИНХРО

Лидия Васильевна Городняя

Аннотация


Статья является продолжением собственных предыдущих исследований автора в рамках многолетней работы по созданию учебного языка программирования СИНХРО, предназначенного для ознакомления с параллелизмом. Основное направление работ — уточнение понятий, способствующих подготовке небольших многопоточных программ при обучении параллельному программированию. Главный результат последнего года заключается в развитии механизма взаимодействия локальной и общей памяти. Дан приоритет парадигме функционального программирования, популярной при подготовке прототипов многопоточных программ. Это помогло преодолеть зависимость порядка вычислений от последовательности вхождения выражений в текст программы и размещения данных в памяти. Описаны отличия от привычных понятий программирования, сдерживающих решение задач организации параллельных вычислений и предельно распределенных систем из ряда потоков, взаимодействующих в терминах доступа к значениям переменных, возможно расположенных в общей памяти. Повышен базовый уровень воздействий на память. Часть из них укрупнены для предотвращения неожиданностей из-за асинхронности и ослабления императивности элементов распределенных систем. Добавлено понятие команд-двойников для управления императивной синхронизацией взаимодействующих устройств, полезное при решении вопросов освобождения памяти.

Ключевые слова


дисциплина доступа к памяти; функциональное программирование; многопоточные программы; неизменяемость данных; восстановление данных; освобождение памяти

Полный текст:

PDF

Литература


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).




DOI: http://dx.doi.org/10.14529/cmse230205