Bad developers are made not learned.
So in an earlier post I pointed to a post by Andy and said,
It’s much easier to transition from C++ to a managed language than the reverse. Plus understanding how memory management really works pays off when you move to a GC managed language like Java or the CLR
Jeff Atwood left a comment,
I think this is kinda.. bad advice. I’ll let Jon Galloway explain why, because he does it so much better than I do
Joel got it wrong – Why learning C is a waste of your college time and money
So I read the posting Jeff pointed to and came away with something different than he did. Apparently what Jon Galloway is saying is that learning C/C++ will make you a bad programmer. I don’t think that bad programming practice is learned, I think bad programming practice is enabled by the environment the developer is in. But I don’t think that any programming language is going to give you a false sense of control. In fact the example he uses to illustrate how the developer really isn’t in control is exactly the kind of thing that can only be understood if you have a good understanding of how computers and operating systems work close to the metal. If you’ve spent all your life working in a GC’ed language, why would you ever need to know how memory management works, let alone virtual memory? Jon also says it doesn’t teach you to work with a framework. What’s the STL? What about MFC? ATL? Carbon? All of those things use C++ as their base language. Notice I didn’t say to take a C/C++ course at a university as I’m not convinced that a CS course will teach you everything you need to know in the real world. I said to learn C/C++ first because if you understand HOW things work, you’ll have a better idea of how things DON’T work. How can you identify a memory leak in your managed application if you don’t know how memory leaks come about or what a memory leak is?
I think that all of the points that Jon bring up could be true, if the person he’s speaking about is a bad programmer anyway.
BTW as an aside, Jon mentions the data storage and processing needs of todays systems. He’s just talking about piddley stuff, non-scientific data. I’ll post a little bit on what kind of data sets we’re talking about in scientific data in a little while (hopefully, real life is about to intrude yet again!). Here’s a teaser, terrabytes are usually the smallest unit of measure we use when we’re talking about scientific datasets.



Pingback: Coding Horror
Pingback: Lazycoder » Blog Archive » Know your platform