# MeLa: A Programming Language for a New Multidisciplinary Oceanographic Float
## 5 Discussion and Conclusions  
We have developed a programming language, called MeLa, dedicated to the Mermaid instrument, a multidisciplinary float that can monitor the oceanic environment with multiple sensors. The language is a DSL created using a Model Driven Engineering (MDE) approach [38; 39; 40]. The language allows for scientists that are not specialists of embedded systems to write reliable and efficient applications of the Mermaid instrument. It uses models to verify that the applications comply with the limited resources of the instrument and to compose (i.e., combine) applications developed independently, but to deploy in a same instrument. The code to execute the applications on a personal computer and the code for the instrument are generated from models using rules that were defined by embedded software experts. Generic programming languages, such as C, Java or Python, do not have functionalities, such as those offered by MeLa. When compared to MeLa, writing applications with those languages increases the risk of making errors that may compromise the integrity of the instrument, even for an embedded software expert. A software library or a framework, such as Arduino ([[https://www.arduino.cc/](https://www.arduino.cc/)]([https://www.arduino.cc/](https://www.arduino.cc/))), can reduce the risks with specialized functions that encapsulate low-level concerns (e.g., a function that read a sensor) and by defining a default architecture for the code (e.g., with a setup and a loop function for Arduino). It helps the developers, but the code is still written with a generic programminglanguage for which the risk of errors is higher. Furthermore, those languages do not incorporate analysis capabilities that are included in MeLa, because it requires platform-specific information (e.g., energy consumption, execution time) that are not compatible with their generic aspect. Analysis tools exist, but also need platform-specific information, for example, the processor speed or the time that is required to read a sensor. There exists a few DSLs that are comparable to MeLa, such as CPAL [41], MAUVE [42], or Mbeddr [43]. However they have mostly been designed for embedded software developers. They offer high-level programming abstractions but are still too close to embedded software concerns; for example, in CPAL and MeLa the processor usage is computed from execution times that must be manually inserted into the code, whereas, for MeLa, this information is hidden in the library of functions. Moreover, they do not include a composition tool for combining several applications. MeLa has been developed for the Mermaid float, but it could also be used to program other instruments. One of those could be the AudioMoth [44; 45; 46], an autonomous acoustic monitoring device that can be programmed with applications, for example, to detect cicadas or bat calls. More generally, the language could be used for most of the sensors used in the Internet of Things [47; 48]. However, it is presently limited to sensors and cannot be used to program actuators or display devices. Mela is also limited to program instruments that exist, for which a model of operation can be created and measurements, such as execution time or energy, can be done. The development of embedded systems from scratch is not possible with MeLa; it would require many other features, such as adding a large library of configurable software and hardware components to create a system, and also taking account of physical considerations (e.g., pressure change, and its effect on actuators power consumption for Mermaid). Industry, such as automotive or spatial industry, have budgets to follow very strict development processes with international standards, quality insurance, static analysis, and the like [49]. Such processes cannot be followed each time that a scientist wants to add an application to the Mermaid, it would require budgets that many scientists do not have.