Pah, 99.9% of programmers will never, ever, ever need to drop down to that level.
Where do these delusions even come from? I think a lot of people here would benefit from 6 months in a 'normal' company, the kind that employs the vast majority of programmers. Just for a bit of perspective.
These delusions come from experience with watching programmers flop around like fish out of water whenever some layer of abstraction they took for granted starts "leaking".
I honestly don't get this attitude in our industry. Nobody tells a general practitioner, "Nah, you don't really need to know what comprises a living cell. You most likely won't even need to drop down to that level."
Just because you don't need to do any low level work, doesn't mean you shouldn't learn anything about it.
This is exactly the sort of nonsense I'm talking about. When, you fool? Do you think most business apps need to do some crazy algos or something that would benefit from C?
If you think most programmers who know Java, C#, Ruby or, Python have ever dropped down to C you're deluding yourself. And they never need to and not only that the majority of their performance problems come from poorly written SQL queries. And the rest come from poorly conceived loops.
As I said, go get a job in a normal company, open your eyes. Most job applications will not give you an advantage if you put the ability to drop down to C on your CV. Because they will never, ever, ever need it.
Probably from those of us who have found a working knowledge of C fairly useful in their careers?
I've been working for 24 years in software and I'd say that during most years I've written or read C sources. Some years it would be a lot, some years relatively little, but it's been a very useful skill for me.
I agree that relatively few people need to write C these days - but knowledge of it does, in my opinion, help quite a lot.
> I think a lot of people here would benefit from 6 months in a 'normal' company
I've worked several years at a normal company. My group of dozens of software engineers codes overwhelmingly in C, with Python, Perl, Lua, and the occasional ML in support roles.
I think a lot of people here would benefit from 6 months in a 'normal' company, that employs the vast majority of programmers. There's so more to the universe than Rails, Django, and JQuery...
Pretty much any extra skill will make you a better programmer if you disregard the time put into learn it, so that's hardly a high bar. What about comparing the marginal return of an hour spent learning C with an hour learning best practices in their own particular field, whatever that might be?
> Most programmers will not need to write code in C. But they'll still be better and more versatile programmers if they know the language.
I agree, although I'm not sure C should be the top priority for someone that will never need to actually use it. There are lots of other things to learn and nowhere near enough time to learn them all.
Although learning C when you already know other languages is not particularly difficult.
When I needed to fix a bug in the mono vm, guess what language I was using. Or apache. Or SQLite. You'll notice I'm not talking about the language my app was programmed in. I won't even start on the abomination that is the typical ruby gem ext directory.
If you had said 99.9% of programmers should not write C, I'd agree. But the reality is there's a lot of numb nuts out there, and you're going to need to fix their code. If you can't beat em, join em.
Completely this. On a similar note someone I follow on twitter posted that they thought it was important that every programmer knows the response times from L1, L2 and L3 cache...
I think programmers should know the basics of C even though most of them will never work at that low a level. If you don't understand C, you probably don't understand any modern imperative languages, practices, or patterns. If you don't understand imperative programming (what it is, where it is good, where it is bad) then you don't understand high-level or functional programming.
Also, C isn't a complicated language. Like any, it has faults and warts, but it's pretty damn elegant on the whole.
If you ever have to deal with a program that crashes (e.g. segmentation fault, etc) then the guy with the knowledge of C and the tools (gdb etc) will run rings around the guy who only knows a scripting language.
Where do these delusions even come from? I think a lot of people here would benefit from 6 months in a 'normal' company, the kind that employs the vast majority of programmers. Just for a bit of perspective.