Many programming languages have been invented over the last couple of decades. Usually to solve a problem that became apparent or sometimes with a special purpose in mind. The landscape of programming languages constantly changes as languages adept to new requirements: The performance characteristics of hardware changes or new devices are created. Often bringing their own set of requirements and constraints with them. Sometimes the way society uses computers changes and gives birth to a whole new computing environment. On mobile devices for example resources are scarce and power consumption is an important concern.

A much harsher environment for a program than the traditional personal computer or server. On the other hand cloud computing and ongoing hardware parallelization requires to rethink our approaches to scalability, even for every day software.
Existing programming languages are usually updated to meet these new requirements. Sometimes new programming languages with good solutions to new problems become popular. PHP for example is well suited for server side web development and became popular for that. Over the last few decades such languages helped to identify some useful ideas, language features and ways so solve specific problems. Generally speaking we gathered experience on how to solve problems with the tools at hand.
This thesis tries to follow that tradition of new programming languages, albeit in an more unusual way: It does not try to do something new. This usually involves some degree of experimentation. And when we finally found a good way to do things we have to live with the remnants of these experiments. Instead it tries to clean up what we have and consider to be useful. It tries to build upon the experience gathered with C, C++, D and other languages, taking the most useful parts and combining them into a new C like language: Lagrange. Doing that in a consistent way allows to use synergies between features and might open up new possibilities nevertheless.
These are not the newest and hottest problems of computing. Yet cleanup and refinement of lan- guage features is still an demanding task. It strongly builds upon personal experience with language features. A scientific way to select the most useful features would be preferable but beyond scope. In- stead we take the shortcut of personal experience and discussion and give up some reliability and sci- entific universality on the way. Because of that it is recommended to read this thesis critically. As with every new language design mistakes will be made. The sooner they are discovered the better they can be fixed.

Original title:
Concepts of the Lagrange Programming Language – Approaches and ideas for consistent programming language design

Bachelor thesis written by Stephan Soller, February 2012.

Second supervisors: Prof. Walter Kriha, Andreas Stiegler M.Sc., Stuttgart Media University, Stuttgart