Back to search

FRINATEK-Fri prosj.st. mat.,naturv.,tek

DMPL -- Design of a mouldable programming language

Awarded: NOK 15.6 mill.

The purpose of the DMPL project was to show that a small and competent team could implement a new, general purpose programming language with support tools, using just a few person years. We have succeeded! - The Magnolia language with compiler, integrated development environment (IDE - in Eclipse) and support library with tutorial examples is available for download. The system is used in courses at the department. Magnolia deviates from other programming languages with a design based on Goguen-Burstall institution theory. This theory provides a good programming language framework: - precise semantics for the language and its support library, - powerful module system for the reuse of code and specifications, and - integrated specification language supporting verification and axiom based testing. The result is a novel software development methodology: the interplay between domain engineering, specification, validation and code is naturally integrated in the workflow. Within this setting, Magnolia is designed as a secure programming language (or more technically correct: a high integrity language). This ensures reliability (enables verifiability and thorough testing), robustness (automatic discovery and handling of corrupt data and validation of input data), safety (mitigates propagation of erroneous data), and technically secure (prevents unintended data modification and disclosure). Another result is the adaption of the institutional framework to constraint systems. Constraint systems is a programming model well suited for defining user interface (UI) logic. UI logic is the often complex relationships between data entry fields in the UI of a program or a web page. The model seems to provide a magnitude more effective development and a magnitude fewer errors in the UI logic. More research is needed to establish this. Much of the project's research has been in the field of language tools, where a new project, Co-Evo on language and tool co-evolution, has been funded. Another main project theme is programming models for mobile platforms (tablets, smart phones) and for high performance computing (HPC). The former has focussed on secure software, where one of the results is an approach that assist developers assess the capabilities required for a specific app. This can make smart phone and tablet users more secure, as the apps do not need to request more capabilities than strictly needed. The latter has focussed on portability: using the same software on varied hardware architectures (CPU, multicore, distributed, GPU, FPGA, etc), a prerequisite for green (energy efficient) HPC. We have shown theoretically that this is possible, and are working on practical demonstration examples. As a byproduct, we developed visualisation tools for algorithms with complex dependency structures. Typical examples are sorting networks, FFTs, and finite difference methods. The project has initiated two workshop series. In the field of language tooling, "International Workshop on Open and Original Problems in Software Language Engineering" (OOPSLE) was started in 2013. OOPSLE is organised annually in conjunction with relevant international conferences. From 2014 the "High Integrity Systems Symposium" (HISS) is an annual event drawing together Norwegian industry, public sector and academia in the theme of secure software. HISS is every time organised by a volunteer with an interest in the area.

Programs are brittle artifacts. Modification of a program easily tends to break its structure, with dire consequences for its correctness and behaviour. Tool support for doing software reorganisation is below par for most programming Languages. Much of th is relates back to the programming languages themselves. They were mostly designed decades ago, lacking features and support for many of today's programming challenges, such as security, multi-core and modifiability. Over the past few years we have prop osed various language features that address some of these problems. To show what can be achieved, we propose to develop a mouldable programming language where these features are integrated based on a formal understanding of their semantics and interaction . The language needs to be supported by transformation tools for refactoring, optimisation and general maintainance. A few years ago this would have been a momentouos undertaking, but development in language technology this past decade has been significa nt, making it feasible even for smaller, competent groups. We will be cooperating with international research groups in the forefront of language technology tool development to benefit from these advances. The language we develop needs to be validated ag ainst its design criteria. We therefore include the development of sample applications from the high performance domain in the project. Our experience with developing numerical software has shown that it is very challenging in itself, and well structured numerical software seems to put demands on programming langauges pushing the forefront of software technology. We will be cooperating with national and international research groups, also from industry, on this.

Publications from Cristin

No publications found

Funding scheme:

FRINATEK-Fri prosj.st. mat.,naturv.,tek