Computers and their systems are all around us, for example in transport, banking services, smart phones and automatic washing machines. To keep these devices and services up to date with technological developments and user expectations, it is necessary to update them, not only the codes but also all documentation. These changes are extremely costly and time-consuming for companies, and the costs are subsequently reflected in the prices of products and services.
In order to remain usable in the long term, programming languages must respond to developments in hardware, adding new features while adapting to new end-user requirements. In order to improve programming languages, our researchers focus on two research directions. To expresivity of languages - the simpler the expression of complex algorithms and their context in programming languages, the faster and easier it will be to tell computers what to do. And to the safety of programming languages, to eliminate common programming errors as much as possible. For example, even an automatic washing machine has to solve a large number of complex processes to successfully wash clothes according to the chosen program.
The aim of the Laboratory of Programming Research is to find a solution how to apply the continuously developed innovations of programming languages as quickly, easily and without unnecessary errors as possible. And, as a consequence, to achieve cheaper updating of programming languages. When a company comes up with a new version of a programming language, it is first necessary to create all the documentation (manuals, tutorials, training, examples on the Internet, etc.) to correspond with the new version of the language. Then programmers have to rewrite the old code so that the new changes are used, the program is simplified and bugs are eliminated. Researchers are figuring out how to automate all these follow-up processes.
"The problem is that a new language not only needs a new compiler and associated runtime system, but also requires new software development tools, libraries, documentation, educational materials or training programs. If you add up the cost of all this, the amounts involved are staggering. Each new major version of Java, for example, costs Oracle around $50 million," said Professor Jan Vitek, who leads the lab's research group under a prestigious Advanced ERC grant and is also at the Khoury College of Computer Sciences, Northeastern University in Boston. Faculty has the honour of being the only one in the Czech Republic to receive this Advanced ERC grant in 2015.