Understanding and simplifying software with meta programming

CWI Lectures - Understanding Software


Jurgen J. Vinju


Understanding and simplifying software with meta programming


The source code of software systems is complex, but is it so "hard to understand"? We fully and fundamentally understand everything that a computer does, simply because we designed it ourselves, right? Maybe not. The principle building blocks of software are as easy to understand as  the basic blocks of DNA, and these building blocks, like DNA, may generate an enormous complexity of structure and behavior that we do not and perhaps will never fully comprehend. 

This complexity is why we need software tools to help us analyze and understand software via abstract models such as metrics and visualizations. This complexity can be mitigated by generating software from such abstract models, such as formal specifications and domain specific languages. In this talk I will explain what the mechanics of such "meta programs" are and how to build such tools using the Rascal meta programming language. Our goal is not to automate the construction of such meta programs -we still have to think for ourselves- but to make it easy to experiment and adapt interesting tools for constructing, evolving and learning from complex software systems.


Since January 1st 2012, Jurgen Vinju is group leader of CWI SEN1 - Software Analysis and Transformation.

Jurgen focuses his research on source code quality. He is one of the main designers of Rascal and was partly responsible for the ASF+SDF Meta-Environment: both language engineering environments. He has visited INRIA Nancy, Bell Labs and IBM TJ Watson. Currently, Jurgen also teaches the course Software Evolution at Universiteit van Amsterdam and he is affiliated to INRIA Lille in the ATEAMS project.