Last week was the ACCU 2007 Conference and it was as
good as ever. Serious praise to Ewan Milne, Julie Archer and all the rest of
the conference committee for organizing such an enjoyable event.
Although the origins of ACCU is in C and C++
programming, Python, Ruby and Groovy are all
well represented in the talks as well. As are higher level issues such as
design patterns. It is generally a mix of very high quality development people
taking things seriously and having a lot of fun.
I gave two presentations:
- C++ has no useful purpose
- Builders: How MOPs make life easy
As you can imagine from the title, the first was intended to be contentious.
The room was full to bursting and included many from the BSI C++ Standard
Committee and some from WG21 (the ISO C++ Standards Committee, which is
meeting this week in exactly the same hotel we had the conference last week -
this is by design not by accident). I opened with a variation on a Shakespeare
Friends, ACCUers, programmers, lend me your prejudice
I come to bury C++, not to praise it
The evil that languages do lives after them
The good is oft interred with their compilers
So, let it be with C++.
However, in the end I got far less heckling than I expected, almost none in
fact. The session was nicely interactive, but no heckling. I guess I should
have been more controversial. In case you are wondering, my basic messages
- C++ templates are too complicated.
- Python, Ruby, and Groovy are the dynamic programming languages of applications development.
- Java is the static language of applications development. (Possibly also C# but...)
- Parallelism is here now (finally) and the functional programming languages (Haskell, etc.) are in a better shape to make use of this than any of the imperative languages.
Alan Lenton had promised to organize a lynching
party, but people got too
excited about the language debate, which at no time descended into flaming or
language wars, and completely forgot, so I made it out. I really enjoyed the
session, I hope the attendees did.
The second session was really trying to excite people about domain specific
languages (DSLs) as tools for systems development. The core concept is that
programming is about constructing a language in which to easily express the
solution to a problem. Currently programming is creating the classes or
functions to solve the problem, a side-effect of which is to construct a
language to describe that solution. The "DSL Way" is to construct a domain
specific language, a side effect of which is a solution to the current
problem. People generally think you need a dynamic language (e.g. Python,
Ruby, Groovy) to create a DSL, and indeed these languages are very good for
creating DSLs. However, it is important to remember that C++ is also a very
good language for creating DSLs - yes, the irony of being positive about C++
in this talk and negative about it in the previous talk is not lost on me.
I have made the slides and some of the code materials available:
Slides (PDF) | Other materials | C++ has no useful purpose | Factorial and Mailshot code
Builders: How MOPs make life
| Examples and Presentations