3 research outputs found

    On the Multi-Language Construction

    Get PDF
    Modern software is no more developed in a single programming language. Instead, programmers tend to exploit cross-language interoperability mechanisms to combine code stemming from different languages, and thus yielding fully-fledged multi-language programs. Whilst this approach enables developers to benefit from the strengths of each single-language, on the other hand it complicates the semantics of such programs. Indeed, the resulting multi-language does not meet any of the semantics of the combined languages. In this paper, we broaden the boundary functions-based approach a la Matthews and Findler to propose an algebraic framework that provides a constructive mathematical notion of multi-language able to determine its semantics. The aim of this work is to overcome the lack of a formal method (resp., model) to design (resp., represent) a multi-language, regardless of the inherent nature of the underlying languages. We show that our construction ensures the uniqueness of the semantic function (i.e., the multi-language semantics induced by the combined languages) by proving the initiality of the term model (i.e., the abstract syntax of the multi-language) in its category

    Programming Languages and Systems

    Get PDF
    This open access book constitutes the proceedings of the 28th European Symposium on Programming, ESOP 2019, which took place in Prague, Czech Republic, in April 2019, held as Part of the European Joint Conferences on Theory and Practice of Software, ETAPS 2019

    Towards Understanding Modern Multi-Language Software Systems

    Get PDF
    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 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
    corecore