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 quote:
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 were:
- 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: