M.V. Vinogradova – Ph.D.(Eng.), Associate Professor, Department «Information Processing and Control Systems», Bauman Moscow State Technical University
A.Yu. Bogachev – Post-graduate Student, Assistant, Department «Information Processing and Control Systems», Bauman Moscow State Technical University
E.V. Zelentsova – Ph.D.(Eng.), Associate Professor, Department «Information Security», Bauman Moscow State Technical University
Currently, in the process of software development, developers almost always face the problems of multithreaded and distributed pro-gramming. One of the possible ways to solve these problems is to use the mathematical actor model, which assumes the asynchronous interaction between parallel threads using the message mechanism instead of using shared data.
However, most existing implementations of the actor model are designed as additional libraries for existing programming languages, and they use the actor model only as a high-level abstraction over traditional threads.
An alternative and most effective way of implementing the actor model in practice is to create a specialized virtual machine designed to perform actors and provide the actors with a mechanism for message exchange. Although the existing implementations of such virtual machines, such as the virtual machine BEAM for the programming language Erlang, managed to prove themselves well, they are not flawless, and the technology can be improved.
As one of the possibilities for improving such virtual machines, considered to use the tagged memory architecture. The tagged memory architecture allows us to implement of strict dynamic typing, the mechanism of multiple dispatching, and also simplifies marshaling and demarshaling of actors and their data for transmission over the network. In addition, as one of the possibilities for simplifying the creation of actors, it is proposed to use a special imperative programming language to describe the behavior of actors.
Another important characteristic of the actor model is the ability to redefine the behavior of actors after the message arrives. In the case of using a special virtual machine, it is possible to replace the program code of the actor during the operation of the system, as well as the transfer of actors between the nodes of the system. It is proposed to use the actor model to create dynamically deployable systems, as well as work with big data using the MapReduce model.
Another important point of using the actor model for software development is the possibility of applying the methodology of object-oriented programming to the systems based on actors. It is proposed to consider actors as encapsulated objects that implement inte-raction among themselves through the message transfer system, which corresponds to the method of interaction between objects in the programming languages «Objective C» and «SmallTalk», as well as having a given interface with inheritance and polymorphism capabilities. In addition, it is proposed to apply existing design patterns to the systems built on the basis of actors.
The proposed model of a virtual machine can be a good basis for implementing distributed and parallel computations using the actor model. The proposed approach to imperative describing the behavior of actors with the help of a message processing loop makes it possible to simplify their development, while allowing developers to apply the familiar methodology of object-oriented programming to the actor based systems.
- Carl Hewitt, Peter Bishop, Richard Steiger. A Universal Modular Actor Formalism for Artificial Intelligence. IJCAI. 1973.
- Bernhardt, Manuel. Reactive Web Applications: Covers Play. Akka and Reactive Streams. Manning Publications. 2016.
- Agha Gul Abdulnabi. ACTORS: A Model of Concurrent Computation in Distributed Systems. MIT Press. 1986.
- Chernen'kij V.M., Semkin P.S. Metod opisaniya proczessov vy'polneniya zadanij v mul'tiprogrammny'x i mul'tiproczessorny'x sistemax // Vestnik moskovskogo gosudarstvennogo texnicheskogo universiteta im. N.E'. Baumana. Ser. Priborostroenie. M.: MGTU im. N.E'. Baumana. 2014.
- Vinogradova M.V. Metodika sozdaniya mul'tiaspektnoj informaczionnoj sistemy' s algoritmo-orientirovannoj strukturoj danny'x. Avtoref. dis. … kand. texn. nauk. M.: MGTU im. N.E'. Baumana. 2005.
- Gupta, Munish K. Akka essentials. Packt Publishing. 2012.
- Allen, Jamie. Effective Akka. O'Reilly Media. 2013.
- Bogachyov A.Yu. Speczializirovannaya virtual'naya mashina dlya sozdaniya raspredelennoj informaczionnoj sistemy' na osnove modeli aktorov // Dinamika slozhny'x sistem. 2017. № 3.
- Joe Armstrong Erlang // Communications of the ACM. 2010. V. 53. № 9.
- Feustel, Edward A. On the Advantages of Tagged Architecture. IEEE Transactions on Computers. 1973.
- Bogachyov A.Yu. Primenenie yazy'kov programmirovaniya s vozmozhnost'yu zameny' koda dlya razrabotki raspredelenny'x sistem // Inzhenerny'j vestnik. MGTU im. N.E'. Baumana (e'lektronny'j zhurnal). 2016. № 3. URL = engbul.bmstu.ru/doc/837038.html (data obrashheniya 08.12.2017).
- Kay, Alan C. The Early History of smalltalk. ACM SIGPLAN Notices. 1993.
- Cox, Brad J. Object Oriented Programming: An Evolutionary Approach. Addison-Wesley. 1991.
- Ole-Johan Dahl, Bjorn Myhrhaug, Kristen Nygaard. SIMULA 67: Common base language. Norwegian Computing Center. 1970.
- Bjarne Stroustrup. The Design and Evolution of C++. Addison-Wesley. 1994.
- Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides. Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley. 1994.
- Chidamber S.R., Kemerer C.F. A Metrics Suite for Object Oriented Design // IEEE Transactions on Software Engineering. June 1994. V. 20. № 6. P. 476−493.
- Abreu F.V., Esteves R., Goulao M. The Design of Eiffel Programs: Quantitative Evaluation Using the MOOD metrics // Proceedings of the TOOLS'96. Santa Barbara (California). July 1996. 20 p.
- Orlov S.A. Texnologii razrabotki programmnogo obespecheniya. SPb: Piter. 2002.