Preview

Proceedings of the Institute for System Programming of the RAS (Proceedings of ISP RAS)

Advanced search

Comparison of Object-Oriented and Procedural-Parametric Polymorphism

https://doi.org/10.15514/ISPRAS-2025-37(6)-3

Abstract

Dynamic polymorphism is widely used in situations involving the identification and processing of alternatives during program execution. Dynamic polymorphism allows to flexibly expand programs without changing previously written code. It is widely used in statically typed object-oriented programming languages by combining inheritance and virtualization. The programming languages Go and Rust also provide support for dynamic polymorphism, using static duck typing to implement it. Another approach to implementing dynamic polymorphism is offered by the procedural-parametric programming paradigm, which at the same time provides direct support for multimethods and flexible evolutionary expansion of both alternative data and their processing functions. The paper compares the capabilities of object-oriented and procedural-parametric paradigms to support agile software development. The basic techniques that ensure the expansion of the functionality of programs are compared. The features of the implementation of design patterns are considered. 

About the Authors

Pavel Vladimirovich KOSOV
Higher school of Economics, National research University
Russian Federation

A postgraduate student of the Faculty of Computer Science at the Higher School of Economics. His research interests are related to the development of programming languages and compilers, LLVM optimization, and evolutionary software development.



Alexander Ivanovich LEGALOV
Higher school of Economics, National research University
Russian Federation

Dr. Sci. (Tech.), Professor of the Faculty of Computer Science at the Higher School of Economics. His research interests include software engineering, evolutionary software development, architecture-independent parallel programming, programming languages.



References

1. Фуксман, А. Л. Технологические аспекты создания программных систем. / А. Л. Фуксман – М.: Статистика, 1979. – 184 с.

2. Горбунов-Посадов, М. М. Система открыта, но что-то мешает. / М. М. Горбунов-Посадов // Открытые системы. 1996. № 6. С. 36–39.

3. Горбунов-Посадов, М. М. Конфигурационные ориентиры на пути к многократному использованию. / М. М. Горбунов-Посадов – ИПМ им. М.В.Келдыша РАН. Препринт № 37, 1997 г.

4. Горбунов-Посадов, М. М. Облик многократно используемого компонента. / М. М. Горбунов-Посадов // Открытые системы. 1998. № 3. С. 45–49.

5. Горбунов-Посадов, М. М. Расширяемые программы. / М. М. Горбунов-Посадов – М.: Полиптих, 1999.

6. Горбунов-Посадов, М. М. Эволюция программы: структура транзакции. / М. М. Горбунов-Посадов // Открытые системы. 2000, № 10. С. 43–47.

7. M. Gregoire, Professional C++, John Wiley & Sons. 2018, p. 1122.

8. E. Sciore, Java Program Design, Apress Media. 2019, p. 1122.

9. A. Freeman, Pro Go: The Complete Guide to Programming Reliable and Efficient Software Using Golang, Apress. 2022, p. 1105.

10. J. Blandy, J. Orendorff, and L. F. Tindall, Programming Rust, O’Reilly Media. 2021, p. 735.

11. E. Gamma, R. Helm, R. Johnson, and J. Vlissides, Design Patterns. Elements of Reusable Object-Oriented Software, Addison-Wesley Professional. 1994, p. 416.

12. Легалов А.И. Процедурно–параметрическая парадигма программирования. Возможна ли альтернатива объектно-ориентированному стилю? - Красноярск: 2000. Деп. рук. № 622-В00 Деп. в ВИНИТИ 13.03.2000. - 43 с. Доступна в сети Интернет: http://www.softcraft.ru/ppp/pppfirst/, accessed 30.08.2024.

13. Легалов И.А. Применение обобщенных записей в процедурно–параметрическом языке программирования // Научный вестник НГТУ, 2007. № 3 (28). С. 25–38.

14. Легалов А.И. Швец Д.А. Процедурный язык с поддержкой эволюционного проектирования. --- Научный вестник НГТУ, № 2 (15), 2003. С. 25-38.

15. Легалов А.И., Косов П.В. Эволюционное расширение программ с использованием процедурно–параметрического подхода // Вычислительные технологии. 2016. Т. 21. № 3. С. 56–69.

16. Прата С. Язык программирования C. Лекции и упражнения, 5-е издание. : Пер. с англ. – М.: Издательский дом «Вильямс», 2013. – 960 с.

17. Легалов А.И., Косов П.В. Процедурно-параметрический полиморфизм в языке с для повышения надежности программ. // XIV Всероссийское совещание по проблемам управления, ВСПУ-2024, Москва 17-20 июня 2024 г. С. 2827-2833. https://vspu2024.ipu.ru/preprints/2827.pdf, accessed 30.08.2024.

18. Легалов А.И., Косов П.В. Расширение языка C для поддержки процедурно–параметрического полиморфизма. Моделирование и анализ информационных систем. 2023;30(1):40-62. doi: 10.18255/1818-1015-2023-1-40-62.

19. Clang: A c language family frontend for llvm. [Online]. Available: https://clang.llvm.org/, accessed 05.06.2025.

20. Язык процедурно-параметрического программирования PPC. Репозиторий компилятора языка на Gitverse: https://gitverse.ru/kpdev/llvm-project. Ветка pp-extension-v2, accessed 05.06.2025.

21. Примеры на Гитхаб, написанные с использованием процедурно–параметрической версии языка C: https://github.com/kreofil/evo-situations, accessed 05.06.2025.

22. Реализация паттерна ОО проектирования Visitor на языке программирования C++: https://refactoringguru.cn/ru/design-patterns/visitor/cpp/example, accessed 02.09.2025.


Review

For citations:


KOSOV P.V., LEGALOV A.I. Comparison of Object-Oriented and Procedural-Parametric Polymorphism. Proceedings of the Institute for System Programming of the RAS (Proceedings of ISP RAS). 2025;37(6):43-58. (In Russ.) https://doi.org/10.15514/ISPRAS-2025-37(6)-3



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


ISSN 2079-8156 (Print)
ISSN 2220-6426 (Online)