C language extension to support procedural-parametric polymorphism
Modelirovanie i analiz informacionnyh sistem, Tome 30 (2023) no. 1, pp. 40-62.

Voir la notice de l'article provenant de la source Math-Net.Ru

Software development is often about expanding functionality. To improve reliability in this case, it is necessary to minimize the change in previously written code. For instrumental support of the evolutionary development of programs, a procedural-parametric programming paradigm was proposed, which made it possible to increase the capabilities of the procedural approach. This allows to extend both data and functions painlessly. The paper considers the inclusion of procedural-parametric programming in the C language. Additional syntactic constructions are proposed to support the proposed approach. These constructions include: parametric generalizations, specializations of generalizations, generalizing functions, specialization handlers. Their semantics, possibilities and features of technical implementation are described. To check the possibilities of using this approach, models of procedural-parametric constructions in the C programming language were built. The example in the article demonstrates the flexible extension of the program and support of multiple polymorphism.
Keywords: programming languages, procedural-parametric programming, evolutionary software development.
Mots-clés : compilation, polymorphism, multiple polymorphism
@article{MAIS_2023_30_1_a3,
     author = {A. I. Legalov and P. V. Kosov},
     title = {C language extension to support procedural-parametric polymorphism},
     journal = {Modelirovanie i analiz informacionnyh sistem},
     pages = {40--62},
     publisher = {mathdoc},
     volume = {30},
     number = {1},
     year = {2023},
     language = {ru},
     url = {http://geodesic.mathdoc.fr/item/MAIS_2023_30_1_a3/}
}
TY  - JOUR
AU  - A. I. Legalov
AU  - P. V. Kosov
TI  - C language extension to support procedural-parametric polymorphism
JO  - Modelirovanie i analiz informacionnyh sistem
PY  - 2023
SP  - 40
EP  - 62
VL  - 30
IS  - 1
PB  - mathdoc
UR  - http://geodesic.mathdoc.fr/item/MAIS_2023_30_1_a3/
LA  - ru
ID  - MAIS_2023_30_1_a3
ER  - 
%0 Journal Article
%A A. I. Legalov
%A P. V. Kosov
%T C language extension to support procedural-parametric polymorphism
%J Modelirovanie i analiz informacionnyh sistem
%D 2023
%P 40-62
%V 30
%N 1
%I mathdoc
%U http://geodesic.mathdoc.fr/item/MAIS_2023_30_1_a3/
%G ru
%F MAIS_2023_30_1_a3
A. I. Legalov; P. V. Kosov. C language extension to support procedural-parametric polymorphism. Modelirovanie i analiz informacionnyh sistem, Tome 30 (2023) no. 1, pp. 40-62. http://geodesic.mathdoc.fr/item/MAIS_2023_30_1_a3/

[1] D. Shafer and D. A. Ritz, Practical Smalltalk. Using Smalltalk/V, Springer-Verlag, 1991, 233 pp. | Zbl

[2] H. John, Advanced Guide to Python 3 Programming, Springer, 2019, 497

[3] M. Gregoire, Professional C++, John Wiley Sons, 2018, 1122 pp.

[4] E. Sciore, Java Program Design, Apress Media, 2019, 1122

[5] J. Albahari and B. Albahari, C# 6 Pocket Reference: Instant Help for C# 6.0 Programmers, O'Reilly Media, 2016, 224

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

[7] J. Blandy, J. Orendorff, and L. F. S. Tindall, Programming Rust, O'Reilly Media, 2021, 735

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

[9] A. Alexandrescu, Modern C++ Design. Generic Programming and Design Patterns Applied, Addison-Wesley Professional, 2001, 360 pp.

[10] S. Meyers, More effective C++. 35 New Ways to Improve Your Programs and Designs, Addison-Wesley Professional, 1996, 318 pp. | MR

[11] A. I. Legalov, “OOP, Multimethods and Pyramidal Evolution”, Open Systems, 2002, no. 3, 41–45

[12] L. G. Demichiel, “Overview: The common lisp object system”, Lisp and Symbolic Computation, 1989, no. 1, 227–244 | DOI

[13] B. Stroustrup, Design and Evolution of C++, Addison-Wesley Professional, 1994, 480 pp.

[14] A. I. Legalov, Procedurally-parametric programming paradigm. Is it possible as alternative to the object-oriented style?, 622-V00 Dep. VINITI 13.03.2000, 2000, 43 pp. (In Russian)

[15] I. A. Legalov, “Using of generalized records in procedural-parametric programming language”, Scientific Bulletin of the NSTU, 28:3 (2007), 25–37

[16] A. I. Legalov and D. A. Schvetc, “Procedural language with support for evolutionary design”, Scientific Bulletin of the NSTU, 15:2 (2003), 25–38

[17] A. I. Legalov and P. V. Kosov, “Evolutionary extension of programs using the procedural-parametric approach”, Computational Technologies, 21:3 (2016), 56–69

[18] Linux x86 Program Start Up or - How the heck do we get to main()?, 86 pp. http://dbp-consulting.com/tutorials/debugging/linuxProgramStartup.html

[19] An example of an evolutionary extension of a program using a procedural-parametric approach, https://github.com/kreofil/c-evolution-example

[20] A. I. Legalov, “Multimethods and paradigms”, Open Systems, 2002, no. 5, 33–37

[21] Clang: a C language family frontend for LLVM, https://clang.llvm.org/

[22] The LLVM Compiler Infrastructure, https://llvm.org/

[23] LibTooling, https://clang.llvm.org/docs/LibTooling.html