5 research outputs found
Integration of Heterogeneous Modeling Languages via Extensible and Composable Language Components
Effective model-driven engineering of complex systems requires to
appropriately describe different specific system aspects. To this end,
efficient integration of different heterogeneous modeling languages is
essential. Modeling language integaration is onerous and requires in-depth
conceptual and technical knowledge and ef- fort. Traditional modeling lanugage
integration approches require language engineers to compose monolithic language
aggregates for a specific task or project. Adapting these aggregates cannot be
to different contexts requires vast effort and makes these hardly reusable.
This contribution presents a method for the engineering of grammar-based
language components that can be independently developed, are syntactically
composable, and ultimately reusable. To this end, it introduces the concepts of
language aggregation, language embed- ding, and language inheritance, as well
as their realization in the language workbench MontiCore. The result is a
generalizable, systematic, and efficient syntax-oriented composition of
languages that allows the agile employment of modeling languages efficiently
tailored for individual software projects.Comment: 12 pages, 11 figures. Proceedings of the 3rd International Conference
on Model-Driven Engineering and Software Development. Angers, Loire Valley,
France, pp. 19-31, 201
Compilation and Code Optimization for Data Analytics
The trade-offs between the use of modern high-level and low-level programming languages in constructing complex software artifacts are well known. High-level languages allow for greater programmer productivity: abstraction and genericity allow for the same functionality to be implemented with significantly less code compared to low-level languages. Modularity, object-orientation, functional programming, and powerful type systems allow programmers not only to create clean abstractions and protect them from leaking, but also to define code units that are reusable and easily composable, and software architectures that are adaptable and extensible. The abstraction, succinctness, and modularity of high-level code help to avoid software bugs and facilitate debugging and maintenance.
The use of high-level languages comes at a performance cost: increased indirection due to abstraction, virtualization, and interpretation, and superfluous work, particularly in the form of tempory memory allocation and deallocation to support objects and encapsulation.
As a result of this, the cost of high-level languages for performance-critical systems may seem prohibitive.
The vision of abstraction without regret argues that it is possible to use high-level languages for building performance-critical systems that allow for both productivity and high performance, instead of trading off the former for the latter. In this thesis, we realize this vision for building different types of data analytics systems. Our means of achieving this is by employing compilation. The goal is to compile away expensive language features -- to compile high-level code down to efficient low-level code
Compilation and Code Optimization for Data Analytics
The trade-offs between the use of modern high-level and low-level programming languages in constructing complex software artifacts are well known. High-level languages allow for greater programmer productivity: abstraction and genericity allow for the same functionality to be implemented with significantly less code compared to low-level languages. Modularity, object-orientation, functional programming, and powerful type systems allow programmers not only to create clean abstractions and protect them from leaking, but also to define code units that are reusable and easily composable, and software architectures that are adaptable and extensible. The abstraction, succinctness, and modularity of high-level code help to avoid software bugs and facilitate debugging and maintenance.
The use of high-level languages comes at a performance cost: increased indirection due to abstraction, virtualization, and interpretation, and superfluous work, particularly in the form of tempory memory allocation and deallocation to support objects and encapsulation.
As a result of this, the cost of high-level languages for performance-critical systems may seem prohibitive.
The vision of abstraction without regret argues that it is possible to use high-level languages for building performance-critical systems that allow for both productivity and high performance, instead of trading off the former for the latter. In this thesis, we realize this vision for building different types of data analytics systems. Our means of achieving this is by employing compilation. The goal is to compile away expensive language features -- to compile high-level code down to efficient low-level code