Welcome to the Analysis group!
Programming is a labour intensive and error-prone process where even the smallest details have to be addressed. One way to ease software construction is the development of high-level languages allowing a representation that is tightly related to the application's problem space, rather than to the machinery used. When programming in such a language, the emphasis is more on expressing what has to be achieved and less on how it has to be achieved. Hence, such languages are said to be more declarative and less imperative. Logic and functional programming languages are typically classified declarative as they relieve the programmer from the need to pay attention to many low level details of programming, in particular with respect to memory management and execution order. Moreover, these programming paradigms provide a simple and clear semantics that is an excellent basis for automatic program analysis.
Despite a tremendous increase in computer power, performance remains an issue. Users are reluctant to trade run-time performance and memory efficiency for increased programmer's productivity. Moreover, new applications having an unprecedented hunger for computing power are still being developed. Building implementations of declarative languages which offer a performance level comparable to that of imperative languages is a challenging task. Such implementations have to exploit the information gathered by sophisticated analyses of the source program.