Result: Towards Understanding Modern Multi-Language Software Systems
Thèse de doctorat (École polytechnique (Montréal, Québec))
PolyPublie
copyright
English
Grichi, M. (2020). Towards Understanding Modern Multi-Language Software Systems [Thèse de doctorat, Polytechnique Montréal].
1430226895
Further Information
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. 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 mu