all summer long, I've been complaining about all the different failings of C++. today, I thought I hit on one of my best points when I concluded that a big reason I hate writing in C++ is because it's low-level enough that you have to keep in mind a lot of the things the compiler does and does not do for you, but it's featureful enough that there are a ton of them. maybe this is me specific, but as a result I always have to work out in my head everything that's going on behind the scenes when throwing pointers around.
so I was describing this particular frustration to another intern, and he said, "Yeah, C++ is a grown-up language." and I was sort of stunned. I thought about it, and I thought about it again, and it seemed to be a perfect metaphor.
while C is like building out of legos - you always know exactly what's going on, and how everything fits together is simple, but sometimes you can get hung up on which colours and sizes to use, and it'd be hard to build something huge - C++ is like using wood and screws - you will get splinters, but if you are careful enough you can have a very sturdy house. (i tried and failed to think of one for the high-level type theory languages.)
so for a moment I had a vision of myself as coming up on the right side of that curve and thought that maybe C++ is a pretty good choice for a lot of things. that was pretty frightening. (I realize this is a more feel-y than specifics-y argument, so it's kind of difficult to toy around with from any perspective.)
a note about my preferences: my language of choice is C, because instead of having to keep all the organization that the compiler does for you in your head, you have to keep all the organization that you do for yourself in your head. this makes it a lot more fun.