With us today is Alisdair Meredith, a recognized C++ expert and standards contributor. Alisdair is active in several key C++ standards committees, including the ISO C++ Language Committee and the BSI British Standards panel for C++, and represents CodeGear's seat on the ANSI C++ Committee. In addition, he is the C++0x Evolution List maintainer, which defines the next generation of ISO language standards, and maintains the C++ Boost Array Library and the C++Builder Boost Library ports. Alisdair recently joined CodeGear where he guide the future direction of the company's C++ Builder tools.
DDJ: Alisdair, can you give us a brief update on what's happening in terms of C++ standards?
AM: The C++ committee has been working hard for a few years now on a new standard. Where the last update in 2003 was essentially a "maintenance release", the new standard will have a significant number of new features. The recent meeting in Kona at the start of October finally fixed the scope of the features, and agreed to a schedule which will hopefully mean the new standard is published at the end of 2009. In order to meet that schedule we will be "feature complete" in June, two meetings from now. The first candidate draught for the new standard should then be sent out from the following meeting in September.
One important goal has been understanding the impact of modern multi-core hardware. This impacts the darkest corners of the language in specifying a usable memory model, on top of which we can build libraries for atomic operations for lock-free programming, a modern threads-and-locks library, and we still hope to deliver a lightweight "futures" on top of this. At the last meeting we completed most of this work, and finally adopted it into our working paper, which is accessible from the committee web site.
Another big area of development is a feature we are calling Concepts, which is a way of constraining the behaviour of templates and so getting earlier type checking, and clearer errors for users when a type fails to match the requirements of the template they are using. This is distinct from the constraints system you may have seen in other languages which are often built around inheritance or interface implementations. Concepts have requirements, which are expressions that must be valid for types to meet the constraints. This allows requirements to be much more fine-grained, work with fundamental types, or types from 3rd party libraries, and also describe relations between multiple types. This is probably the biggest new feature in the core language part of the standard, and is very close to being accepted. With luck the final wording will be adopted at the next meeting. The next big challenge is to apply Concepts throughout the standard library, while carefully not breaking existing programs. That might be my main focus for the next six months or so.
I maintain a document tracking the development of the new standard for the committee, and the latest version can be found here.
DDJ: From what we hear, you'll be involved in shaking up CodeGear's C++ Builder tools. Can you give us a taste of what this might involve?
AM: This is a great time to be involved in the C++ market. Now that the new standard is approaching completion, it is time to start implementing the new features, and delivering them to our customers. At my last count there are around 50 distinct new features, some small and some large, and we are aiming to deliver a conforming compiler shortly after publication. In order to get there, you are likely to see us phasing in the new features as we implement them over the next few years.
The traditional strength of our product has been its RAD approach for GUI design. This seems more relevant than ever as an efficient productive way to write user interfaces when following an agile development model. To re-inforce this we aim to enhance the rest of the product with a focus on agility. This could mean better refactoring, integrated unit testing, better links to you automated build servers or source control, or any number of other ideas we are investigating.
Meanwhile the heart of the product is our VCL library which enables most of the productivity gains we can deliver. We're looking at how well this integrates with a modern C++ environment, especially one with the new language features. There is also a major revision coming for Unicode support. We are also looking at how well we support popular open source libraries such as Boost or ACE.
DDJ: Apart from C++, you've been part of the world champion Renault F1 Racing team. How did that start, and how is it going?
AM: Before joining CodeGear I was a senior developer and architect for the track-side software with the Renault F1 Team. That was all the software that runs in the garage, but not on the car such as telemetry viewers, vehicle models and strategy tools. It started because I noticed a small advert on the Borland (now CodeGear) newsgroups, and thought "Wow, My dream job! Even if I don't get it, I might sneak a factory tour out of the interview..." As it turns out, I got a lot more than that!
Formula one is a great environment for someone who loves making software. The demands are changing on a regular basis, you have hard deadlines that you cannot slip thanks to the racing calendar, even harder deadlines when regulations change. However you are always in face-to-face contact with your customers and get to really understand their needs when you see your software used on a daily basis. It is not unusual to turn around bug fixes in a couple of hours when needed! This fosters a lot of the development ideas that have become popularised as "agile" over the last few years but it really comes down to the basics. If you know your customer well and manage risks carefully, you will make great software.
After 10 years in the business and winning two world championships though, I'd achieved my goals and it was time to leave on a high! I have enjoyed cheering from the sidelines this year, although my team only managed third place. I am sure they will bounce back strong again next year though, they are a very competitive team.
DDJ: Does the Racing team have a web site that readers might find interesting?
AM: The team website is at www.ing-renaultf1.com and has all sorts of information about the car, the team and the people behind it. Unfortunately it does not make a big fuss about the software though! I recommend it if you are a racing fan though, especially if you are new to Formula 1. It is the most technically demanding racing series in the world, both for the drivers and the cars. I certainly plan to follow from the sidelines for many years to come!