I was reading Sasha's blog post about parallel computing and went over the presentation slides.
http://blogs.Microsoft.co.il/blogs/sasha/archive/2009/04/04/concurrent-programming-msdn-event.aspx
It looks somewhat different than mine, even though I can only assume that the goals and the audience were pretty much the same.
http://blogs.Microsoft.co.il/blogs/asafshelly/archive/2009/04/05/video-introduction-to-multicore-programming.aspx
This is usually because 'we are not there yet'. Meaning, we don't really have all the answers. If you ask someone about UML you will usually receive the same answers. This is because everyone is in agreement about the fundamental issues.
This is not the case with parallel computing.
The first thing that comes to mind is that most people either do Procedural C programming or Object Oriented programming and design. Sasha mentions that working in parallel takes another big leap, just like the one from C to C++. These are two completely different ways of thinking.
I take this concept one step further to say that: If we need to move forward from what we know - Procedural and Object Oriented Programming, then this means that both are old and out-of-date. If we move forward then this has to mean that what we have today is wrong! Doing Task Oriented Programming with OOD is as bad as doing OOP with C.
Most architects today are used to working with C++ and C#. Most Realtime programmers are used to C. OOP is very good for managing large fragments of code where as Procedural C is very good in managing flow. In Procedural programming a function is used to implement a Procedure. A Procedure is a process or something that happens and has a flow. In OOP classes are used to represent objects.
What we are looking for is something completely different.
We will still be using classes and functions but now it will not be for procedures and objects. It would be for tasks.
Welcome to the new world of programming.
Asaf