Ph.D. thesis (2020)
|
Open Access to the full text of this document Terms of Use: All rights reserved Download (3MB) |
Abstract
Today, most popular applications and websites such as Google and Facebook are multilanguage systems. Google is developed with C, C++, Go, Java, Python, and JS, while Facebook is using Hack, PHP, Python, C++, Java, Erlang, D, Haskell, and JS. Furthermore, previous research studies reported that PHP developers regularly use two languages besides PHP. Java developers also use C/C++ with Java code through the Java native interface (JNI) that allows to call native functions from Java methods and Java methods from native functions. Moreover, Android application developers prefer to use the Android NDK (allows to use C/C++ code with Android) along with Java compared to using only Java. In all these examples, we observe the phenomenon of multi-language development. While in many cases, there is one clear main language (e.g., Java or C/C++) with various smaller contributions from other languages (e.g., bash or make), increasingly more modern software are heterogeneous in the sense that they are composed of multiple programming languages that interact with the host language to a large extent.
Résumé
Aujourd'hui, la plupart des applications et sites Web tels que Google et Facebook sont des systèmes multi-langages. Google est codé en C, C++, Go, Java, Python et JS. Facebook, quant à lui, utilise Hack, PHP, Python, C++, Java, Erlang, D, Haskell et JS. De plus, de précédentes études ont permis de constater que les développeurs PHP utilisaient régulièrement deux langages en plus du PHP. Les développeurs Java utilisent également le C/C++ avec du code Java à travers la Java Native Interface (JNI) qui permet d'appeler des fonctions natives à partir de méthodes Java et des méthodes Java à partir des fonctions natives. De plus, les développeurs d'applications Android préfèrent utiliser Android NDK (qui permet d'utiliser du code C/C++ avec Android) en plus de Java, plutôt que d'utiliser uniquement Java. Dans tous ces exemples, on observe le phénomène du développement multi-langage. Bien qu'il y ait, le plus souvent, un seul langage principal (Java ou C/C++) avec divers contributions dans d'autres langages (par exemple, bash ou make), les logiciels modernes sont de plus en plus hétérogènes dans le sens où ils combinent de multiples langages de programmation qui interagissent d'une façon significative avec le langage principal.
Department: | Department of Computer Engineering and Software Engineering |
---|---|
Program: | Génie informatique |
Academic/Research Directors: | Bram Adams |
PolyPublie URL: | https://publications.polymtl.ca/5398/ |
Institution: | Polytechnique Montréal |
Date Deposited: | 10 Nov 2020 12:30 |
Last Modified: | 26 Sep 2024 11:33 |
Cite in APA 7: | Grichi, M. (2020). Towards Understanding Modern Multi-Language Software Systems [Ph.D. thesis, Polytechnique Montréal]. PolyPublie. https://publications.polymtl.ca/5398/ |
---|---|
Statistics
Total downloads
Downloads per month in the last year
Origin of downloads