On the plus side of shared as it is at the moment, and it's a pretty big plus, is it identifies what data is shared, and how it's integrated into the type system is good. With C and C++, when you've got a shared memory bug, you have no idea where to start. In D, you look at the shared stuff. You're not going to have inadvertently shared variables.