COMPARATIVE ANALYSIS OF PROGRAMMING PARADIGMS IN THE DEVELOPMENT OF SOFTWARE SYSTEMS BASED ON ARTIFICIAL INTELLIGENCE
DOI:
https://doi.org/10.31891/2219-9365-2022-72-4-12Keywords:
functional programming, parallel computing, programming languages, programming paradigms, multiparadigmalityAbstract
The article analyzes a number of parallel computing paradigms supported in various programming languages with a description of the requirements for language support for parallel programming. Also, the main principles and limitations revealed when transferring the FP technique to parallel computing are considered. At the end, the requirements for language support are described.
For each of the difficult-to-solve problems of parallel computing, a separate convenient paradigm for its solution has already been formed, and a number of programming languages have been created that support such a paradigm, which confirms its status as a paradigm. The difference between the paradigms is manifested in the ordering of the importance of the means and methods used in solving individual tasks, individual tasks require a different ordering. At each moment of program development, one paradigm is usually used. Accordingly, a basic paradigm is distinguished in various programming languages. The requirements for solving rather complex tasks of parallel computing are associated with a number of difficult tasks, which entails the need to use different paradigms at different stages of their creation and phases of their life cycle. When switching to parallel programming technology, it is important to guarantee a practical result, which requires support for the full range of paradigms used at various stages of program development. The complexity of using different paradigms when solving one task is usually minimized by creating multilingual systems that allow, if necessary, the possibility of switching from one paradigm to another without the costs of mastering different interfaces. This leads to the expediency of creating a multi-paradigm parallel computing language that simultaneously supports all the main paradigms of parallelism and different levels of abstraction - from lower than is accepted in high-level languages to ultra-high-level languages.