With software, I have the following priorities:- I am first interested in correctness. Because of that, lots of my research has been into correctness-by-construction formal methods (ala Dijkstra, Hoare, Gries, etc.).
- Once things are correct, I like them to be very very fast, thus my interest in high-performance applications such as those found in genomics, search engines, intrusion detection systems, etc.
- With those goals accomplished, I finally like things to be elegant.I subscribe to the Wirth school of thought, that things should be as simple as possible, and that typically also leads to helping in the first two goals.
Given those three criteria, you can imagine why I am particularly interested in programs that generate or operate on other programs, such as compilers, interpreters, JITters, linkers, loaders, operating systems, debuggers, ... One of our long-term research projects which aims for these criteria is TABASCO (TAxonomy BAsed Software COnstruction). In TABASCO, we taxonomize an entire field (of algorithms, data-structures, or whatever). This yields more than just a family tree: we get a special one in which correctness arguments are built in. Furthermore, the very structure of a taxonomy (highlighting commonalities and variances between members of a family) leads us to very nice software architectures via an equally nice variety of design patterns. As an (important) aside, I believe that all of our work should be done in Modula-3! (See www.m3.org for more.) Where else can you get a language definition of just over 50 pages, free compilers, and the following built directly into the language (not hacked on the side via libraries and other kludges
freestanding procedures/functions, generics/templates, real interfaces, classes and objects, garbage collection, language supported threading, references (but pointers where needed), exceptions, ...? Think about it, while you struggle through your 500 page reference manual for Java, C#, C++, .... (If pressed, I am willing to admit that Oberon, Oberon-2, ML, Eiffel, and SmallTalk are cool too.) What's my background? I did my Honours Bachelors in Discrete Mathematics and Computer Science at the University of Waterloo (the center of Canada's computing universe, and home of my practical spin-offs), my Doctorate in Computing Science and Mathematics at the Eindhoven University of Technology (home of many correctness-by-construction concepts), and I am finishing my second Doctorate at the University of Pretoria. I got to work at Microsoft when it was still possible to have a barbecue/braai at Bill's place, and left there at the end of the first billion-dollar-revenue financial-year. I was involved in a very cool startup doing compilers and toolkits, and finally got back to academia with faculty positions/affiliations at Concordia University, then the University of Pretoria, and finally Eindhoven University of Technology. I am presently co-leader of ESPRESSO, FASTAR (www.fastar.org) and TABASCO (www.win.tue.nl/soc/).
|