4 ms·
> I am going to make the bold claim that everyone should know C. I agree. Anyone who's going to be working at a non-entry-level job in the computer industry sh
by exDM69 14y ago
> I am going to make the bold claim that everyone should know C.
I agree. Anyone who's going to be working at a non-entry-level job in the computer industry should know what the foundations are built on. C still dominates in the kernel space and other low-level facilities everyone uses. If you don't know it, you are at a disadvantage compared to those who do.
- mattmanser 14y agoPah, 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.
- CodeMage 14y agoThese 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.
- mattmanser 14y agoThis 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.
- exDM69 14y ago> Pah, 99.9% of programmers will never, ever, ever need to drop down to that level. That is true. 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.
- pvidler 14y ago> 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.
- ZeroGravitas 14y agoPretty 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?
- arethuza 14y ago"Where do these delusions even come from?" 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.
- michaelochurch 14y agoI 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. C++, on the other hand... don't get me started.
- weego 14y agoCompletely 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...
- gaius 14y agoIf 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.
- drhowarddrfine 14y agoAlthough I own my own company, we do all our development in C because, when I started, it was the only language I knew besides assembly. We do mostly ecommerce web development. When asked why we don't use PHP or Java or C++, we always answer, "Cause everything is fine how we do it now." We have no issues but we also don't have to answer to large corporations use anything else. One language throughout. One constant. Unlimited in what we can do.
- tedunangst 14y agoWhen 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.
- vbtemp 14y ago> 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...
- splicer 14y agoI'm part of the 0.1% :)
- hermanhermitage 14y ago> I am going to make the bold claim that everyone should know C. I agree. The world of software is built on layers of abstractions. Both the skill of effortlessly layering abstractions and also the skill of peeling them away are fundamental to deep programming and modelling skills. Languages like LISP open the door to effortless modelling, whilst a language like C strips implementation all bare. Its nice and widely available, fairly neutral on programming style (in the imperative space - few "political" (eg objects) abstractions rammed down your throat that don't actually exist in the CPU). It can be used in a semi-portable manner, and inter-operates easily with assembler as required. Boxing, GC, forced classes, and so forth still are not free. They are close to free in many problem domains - but you cant make them go away in other languages when they get in the way.