Mercredi 30 avril 2008, 14h-17h, Amphi 4

Mouldable Programming

Magne Haveraaen, Institutt for Informatikk, Universitetet i Bergen, Norway

Mouldable programming is about looking at programs as mouldable fragments of code, not as the static, brittle syntax software often turns out to be. Some simple examples follow. The notation for calling a method "push" which adds an element "E" to a stack "S" can be OO or static method style, it can modify "S" or return the new stack etc. Can we simplify usage to just one form, and mould it to the actual call? A function which breaks down for some input can signal this using return flags, special return values, or exceptions, to name some common ways. Can we abstract over this, and mould to the relevant error handling technique? Often we need to do run-time checking of arguments, e.g., array indexing bounds, forcing us to introduce lots of code to deal with the unwanted cases. Can we use mouldable ideas to simplify the code? In the presentation, we will elaborate on such examples, discussing how we can free us from awkward syntactic constraints.

Magne Haveraaen is a professor of computer science with an interest for programming technology: the theory and pragmatics of writing code. He investigates this in the context of the Sophus software library, a coordinate-free numerics library written in C++.

High-Level Abstractions and Optimization

Anya Helene Bagge, Institutt for Informatikk, Universitetet i Bergen, Norway

Writing code in an abstract, high-level style can cut development time and make code more maintainable and easier to reason about - but at the cost of lower run-time performance. For performance-critical applications, such as in numerical programming, this can render modern abstraction techniques infeasible. Fortunately, code that is easy for humans to reason about is also easier to reason about automatically. We're studying different abstraction mechanisms and generative programming techniques, as well as optimization techniques to produce efficient code for them. As an example, basic element-wise operations on arrays may be expressed in terms of high-level operations, which may be automatically combined in order to increase performance. I will present some of the things we've been working on so far, and some of the ideas we have for the future.

Anya Helene Bagge is a research fellow at the University of Bergen, Norway. Her research interests include programming language design, program transformation, parallel computer architectures and program optimization.