4 ms·
It's that you haven't used C. Learning C teaches you something about programming that other languages can't. It teaches you ways of thinking about problems th
by leif 14y ago
It's that you haven't used C. Learning C teaches you something about programming that other languages can't. It teaches you ways of thinking about problems that are useful even when you aren't using C.
This is true of most languages, and probably most true of Lisps and MLs. If you've never learned a Lisp, I also would consider you "not an experienced programmer". Not "an inexperienced programmer", and you may be "an experienced <ruby/python/garfunkel> programmer", but I think you are "not an experienced programmer". You should also use Perl at some point, for example. By the way, it's awesome that you want to learn more, that's a very good sign. (Again, this is all very heavy IMHO ;-)
In C's case, some of the things you learn are pointers, memory management, portability, simplicity, filesystems, build systems, etc. These are usually things that are handled by other languages, or that other languages discourage you from thinking about. Other languages will have made choices for you about how to hide these details, and it's often useful to have made your own choices about such problems at least a few times in the past. Otherwise you may end up blinded by the choices made by others.
- nphard 14y ago"It teaches you ways of thinking about problems that are useful even when you aren't using C." That's a strange thing to say considering that, as a C programmer, you're much more concerned with implementation issues rather than expressing high level ideas. In general, when I'm given a problem, I care about the organization of my data. I'm not concerned with memory management.
- leif 14y agoThat's a bold and narrow claim to make. How do you know with what I'm concerned? It sounds like you consider the organization of your data a loftier thing to worry about than memory management. They don't sound that different to my ears, though your view of the world sounds fairly more rude. I hope you never need to be concerned with memory management, for your and your users' sakes. If you want to play with straw men, go elsewhere. All you're doing here is wasting everyone's time, including your own.
- nphard 14y agoWhen you build an abstraction correctly, the things you manipulate become more meaningful. That's the point. I'm not sure why you're getting defensive. And I guess "organization of my data" was a bad example.
- leif 14y agoI have a strongly negative reaction to straw man arguments. Maybe I can be more helpful: Being a programmer is like being a novelist. You need to be able to construct a plot, but you also need a powerful vocabulary. I'm saying C helps develop your computer vocabulary, and you're saying the programming analog of "but it doesn't tell you how to invent interesting characters!" Totally different parts of a useful experience.