Concepts won’t be in C++0x

On Monday I heard a talk given by Michael Wong (IBM Canada) and he told us – and he also wrote in his blog – about the last C++0x Standard Committee meeting in Frankfurt, Germany:

At this meeting, Concepts, the major feature of C++ 0x, which enables constrained genericity, or template argument prototyping, has been removed from the C++0x draft.

So at this point another major feature of C++0x won’t be included in the final release of the standard (and the ETA was shifted to 2010/2011 instead of 2009/2010). While C++0x has many features I’m very anxious about (think lambda functions, the auto keyword, double angle brackets in template declarations, etc.) I really wanted concepts in the new standard.

Over the past year I have been – and I still do – writing a linear algebra template library in order to try out new methods to exploit parallelization in an object oriented environment (my bachelor’s thesis titled “Exploiting Object Orientation to Parallelize and Optimize C++ Applications” will include a more detailed explanation and evaluation). It would have been really great to be able to specify certain contraints for the generic types the way, for example, C# allows you to limit the usage of parameters in Generics. With the removal of concepts, the only way is to use the STL convention of specifying Concepts, which types must adhere to, but with no real representation in the code and especially no checking through the compiler.

However, even though I was looking forward to this feature I understand the reasons for not including them (see N2906 by Bjarne Stroustrup), C++ is already a very difficult language to teach to beginners. In my opinion the real value and great advantage of C++ lies in the various usage possibilities of template (see template expressions, or general template metaprogramming) and when explaining these concepts to new C++ programmers you nearly always make their head spin..

UPDATE

There are now two new blog posts by Herb Sutter and Bjarne Stroustrup himself about this topic:

Herb Sutter – Trip Report: Exit Concepts

and Bjarne Stroustrup The C++0x “Remove Concepts” decision

Parallel Computing Talk

About two weeks ago I spoke at the “Project Springboard” event – a free event organized by Microsoft Student Partners for students interested in new Microsoft technologies – in the Microsoft office in Cologne about Parallel Computing. As I had only about 60 minutes available my talk was meant provide a very high-level and broad overview over the field (general parallelization, native-, and managed code). I do not know if I really accomplished that task, but the comments afterwards were quite positive. Here are most of the slides I used (small parts were borrowed from PDC presentations).

Productivity

I’m currently working on my bachelor thesis and – unfortunately – I’m very good at procrastinating. So to overcome this disease I use a bunch of tools and I want to describe some of them here:

  1. RescueTime
    This tool does not increase your productivity in the first place, but it helps to measure the time you spend working. It is a two part application, one part is a little tool that, once installed, sits in your tray and monitors your open windows. The counterpart is the rescuetime.com website where the window data is collected, aggregated and can be filtered in various ways.

    It is possible to automatically tag specific applications (say Visual Studio and the tag development for example) or to set goals (spending x hours in program y per day). It is always nice to evaluate past workdays to see if you have been as productive as you wanted to be.

  2. LeechBlock
    THE most effective tool against procrastinating on sites like facebook, spiegel online, slashdot, etc. and even against constant email checking. Often when you are working on a particular boring task you surf to various sites simply to kill time, without thinking. That is the point where LeechBlock comes into play. It is a Firefox addon that – in general – allows to you to block specific sites from browsing. But the real important feature is to limit the time you are allowed to spend on specific sites. For example I allow myself about 15 minutes of facebook or other social networks for each 12h.
  3. Microsoft Office OneNote
    In my opinion the best note-taking application on the PC. The search capabilities, the numerous ways of input, seamless office integration… whenever I’m writing or developing something I start with a braindump in OneNote to order my thoughts and to plan my actions. Very valuable.

new blog.

After a number of blogs I follow switched from live spaces to wordpress.com, I also decided to give it a try. So far I really like the admin backend and the theme selector.

After a long week I just took two days off and enjoyed the beautiful weather (first sunny days in 2009), tomorrow I’ll be back working on my bachelor thesis and the coming weekend will see a new sechsta sinn team meeting.

So long.