Radiotekhnika
Publishing house Radiotekhnika

"Publishing house Radiotekhnika":
scientific and technical literature.
Books and journals of publishing houses: IPRZHR, RS-PRESS, SCIENCE-PRESS


Тел.: +7 (495) 625-9241

 

Software implementation of interlingual programming communication based on dynamic link libraries

Keywords:

S.I. Popkov - Post-graduate Student, Computer Science Faculty, Moscow State University of Psychology and Education
E-mail: rslw25@gmail.com


The article describes two basic method of interaction between programs written in different programming languages. The first one, the interprocess interaction, is represented by communication of the group of independent processes proceeding with their own tasks and returning necessary data on demand. While this method is quite effective, its also rather time-consuming, especially with the rise of the number of the sequential transactions.
The second method of interaction between programs, the interlingual programming communication, is studied more thoroughly through the article. This method is often used within applications and software systems requiring fast processing of the data, such as highload systems or distributed neural networks. The interlingual programming communication allows the program components to be written in different programming languages, using benefits of corresponding platforms, with transformation to the same language during compilation process (for example, to the binary code represented as the group of shared objects or dynamic link libraries supporting the main program or calling applications).
The corresponding source codes are provided to build the dynamic link libraries for three programming languages, in-cluding examples for imperative and functional programming paradigms. The software implementation of interlingual pro-gramming communication for topical, modern and in-demand programming languages is included in the article. Golang, Haskell and Kotlin are sequentially studied as the languages allowing to build dynamic link libraries, providing the source code as well as the short instructions for corresponding compilation environment. The base code is written in Python, representing the main program implementing the call.
The article also contains the source code of the tool providing the means to automatically build a dynamic link library written in Golang programming language for Windows operating system (which is not possible by the standard, usual means at the moment).
As a result, the article successfully demonstrates the practical implementation of the interlanguage processing for the programs written in various programming languages based on different programming styles and paradigms.

References:
  1. Fljenagan D. JavaScript: karmannyj spravochnik. Izd. 3-e / Per. s angl. M.: OOO «I.D. Vil'jams». 2015. 320 s.
  2. Kernigan B., Ritchi D. Jazyk Programmirovanija Si / Per. s angl. Izd. 3-e, ispr. SPb: Nevskij dialekt. 2001. 352 s.
  3. Shildt G. Java. Polnoe rukovodstvo. Izd. 8-e izd. / Per. s angl. M.: OOO «I.D. Vil'jams». 2013.
  4. Earle Castledine. Jump Start CoffeeScript  SitePoint Pty. Ltd. 2012.
  5. Interprocess Communication and Networking. URL: http://docs.python.org/3/library/ipc.html (data obrashhenija 31.01.2018 г.).
  6. How to create windows golang DLL and load into C, or delphi, or freepascal. URL: http://github.com/z505/goDLL (data obrashhenija 31.01.2018 г.).
  7. Neil Mitchell's Haskell Blog. Haskell DLL's on Windows. URL: http://neilmitchell.blogspot.ru/2009/11/haskell-dlls-on-windows.html (data obrashhenija 31.01.2018 г.).
  8. Windows for Business. URL: http://www.microsoft.com/en-us/windowsforbusiness (data obrashhenija 31.01.2018 г.).
  9. Build your future with Windows Server. URL: http://www.microsoft.com/en-us/cloud-platform/windows-server (д data obrashhenija 31.01.2018 г.).
  10. Issue: cmd/go: -buildmode=c-shared should work on windows. URL: http://github.com/golang/go/issues/11058 (data obrashhenija 31.01.2018 г.).
  11. Issue: Go + Windows != DLL. URL: http://github.com/golang/go/issues/15301 (data obrashhenija 31.01.2018 г.).
  12. Issue: go1.10 build c-shared for to windows dll. URL: http://github.com/golang/go/issues/23052 (data obrashhenija 31.01.2018 г.).
  13. Functional Programming vs. Imperative Programming (C#). URL: http://docs.microsoft.com/en-us/dotnet/csharp/pro¬gramming-guide/concepts/linq/functional-programming-vs-imperative-programming (data obrashhenija 31.01.2018 г.).
  14. Zubkov S.V. Assembler. Dlja DOS, Windows i UNIX. M.: DMK Press. 2012.
  15. Concurrent Execution. URL: http://docs.python.org/3/library/concurrency.html (data obrashhenija 31.01.2018 г.).
  16. Synchronization primitives. URL: http://docs.python.org/3/library/asyncio-sync.html (data obrashhenija 31.01.2018 г.).
  17. TIOBE Index. URL: http://www.tiobe.com/tiobe-index/ (дата обращения 31.01.2018 г.).
  18. Abljazov R.Z. Programmirovanie na Assemblere na platforme x86-64. M.: DMK Press. 2016. 302 s.
  19. Introduction to Access SQL. URL: http://support.office.com/en-us/article/Introduction-to-Access-SQL-d5f21d10-cd73-4507-925e-bb26e377fe7e (data obrashhenija 31.01.2018 г.).
  20. O'Sullivan B., Goerzen J., Stewart D. Real World Haskell. O'Reilly Media Inc. 2009.
  21. Dushkin R.V. Funkcional'noe programmirovanie na jazyke Haskell. M.: DMK Press. 2007.
  22. Kotlin Language Documentation. URL: http://kotlinlang.org/docs/kotlin-docs.pdf (data obrashhenija 31.01.2018 г.).
  23. CoffeeScript. URL: http://coffeescript.org (data obrashhenija 31.01.2018 г.).
  24. Babel is a JavaScript compiler. URL: http://babeljs.io (data obrashhenija 31.01.2018 г.).
  25. Lazarus. URL: http://www.lazarus-ide.org/ (data obrashhenija 31.01.2018 г.).
  26. Gras Dzh. Data Science. Nauka o dannyh s nulja / Per. s angl. SPb: BHV-Peterburg. 2018. 336 s.
  27. Donovan A.A.A., Kernigan B.U. Jazyk programmirovanija Go / Per. s angl. M.: OOO «I.D. Vil'jams». 2016. 432 s.
  28. Popkov S.I. Programmnaja realizacija verojatnostnoj modeli povedenija prikladnoj mnogoagentnoj sistemy // Nejrokomp'jutery: razrabotka, primenenie. 2016. № 9.
  29. Issue: runtime: support dlclose with -buildmode=c-shared. URL: http://github.com/golang/go/issues/11100 (data obrashhenija 31.01.2018 г.).
  30. Ctypes  A foreign function library for Python. URL: http://docs.python.org/3/library/ctypes.html (data obrashhenija 31.01.2018 г.).
  31. Dushkin R.V. Praktika raboty na jazyke Haskell. M.: DMK Press. 2010. 288 s.
  32. Hackage:: [Package]. URL: http://hackage.haskell.org (data obrashhenija 31.01.2018 г.).
  33. Kotlin Blog. URL: http://blog.jetbrains.com/kotlin/ (data obrashhenija 31.01.2018 г.).
  34. JetBrains Company Blog. URL: http://blog.jetbrains.com/blog/2013/12/16/jetbrains-st-petersburg-rd-lab-grows-moves-to-new-office/ (data obrashhenija 31.01.2018 г.).
  35. Get Started with Kotlin on Android. URL: http://developer.android.com/kotlin/get-started.html (data obrashhenija 31.01.2018 г.).
  36. Kotlin/Native. URL: http://kotlinlang.org/docs/reference/native-overview.html (data obrashhenija 31.01.2018 г.).
  37. Kotlin/Native infrastructure. URL: http://github.com/JetBrains/kotlin-native (data obrashhenija 31.01.2018 г.).
  38. Samples. URL: http://github.com/JetBrains/kotlin-native/tree/master/samples (д data obrashhenija 31.01.2018 г.).
  39. Arrays and pointers. URL: http://docs.python.org/3/library/ctypes.html#arrays-and-pointers (data obrashhenija 31.01.2018 г.).
  40. Shlee M. Qt 5.3. Professional'noe programmirovanie na C++. SPb: BHV-Peterburg. 2015. 928 s.

© Издательство «РАДИОТЕХНИКА», 2004-2017            Тел.: (495) 625-9241                   Designed by [SWAP]Studio