

Can you take programmers seriously if they don't know C? - jdefr89

I know it is an arrogant thought. But I myself have trouble regarding someone in the computing field as knowledgeable or 'good enough' if they do not know C .<p>C was my first language and is still my favorite. Those who know it understand computers on a far deeper level than those who stick to all high-level languages.<p>I would go a step farther and say that I wouldn't hire someone to work for me if they were not sufficient in C. Maybe this is just because I am mostly a low-level junkie...<p>Any one else feel this way? Furthermore, do you know anyone who doesn't know C but is still excellent at coding/computer-science?
======
goo
I think this question smacks of elitism and in-group bias. For projects that
require C, not knowing C is obviously a deal breaker. But most projects do not
require C, and usually "understanding computers on a far deeper level" is much
less valuable than being able to properly and elegantly build on top of
existing systems/frameworks and leaving useful code in your wake, regardless
of language. Due to the massive adoption of the Linux and Windows kernels as a
basis for almost everything else done in computing, there will be a pretty
major correlation effect between those who are good programmers and those who
know C. Since many in the computing field share your sentiment, it drives
others to "prove themselves" by making sure to learn C. Also, C is taught in
CS classes. But all of this does not mean that knowing C is a precursor to
being a good programmer- it's just a correlated effect.

The ability to build massive (and interesting) projects on high-level
languages is growing sharply, and the reasons people would have learned C in
the first place are shrinking, since there is plenty to work on without even
caring about C. I hope the continued proliferation of quality high-level
libraries and frameworks spurs a gradual decline of the divisive and self-
congratulatory mindset demonstrated here, since it is not knowing C that makes
programmers good. It is the ability to get things done right with whatever
language(s) they need to.

(I know C)

------
_pius
_Furthermore, do you know anyone who doesn't know C but is still excellent at
coding/computer-science?_

I think this guy somehow did OK, even without knowing C:
[http://en.wikipedia.org/wiki/John_McCarthy_(computer_scienti...](http://en.wikipedia.org/wiki/John_McCarthy_\(computer_scientist\))

~~~
fogus
Bah! Sounds like a typical academic.
<http://blog.fogus.me/2011/04/07/academics-vs-the-real-world/>

------
madhouse
That depends: if they will need to write C code, then of course, they need to
know the language. But if all they're gonna do is write Haskell, Erlang or
Lisp, what's the point of knowing C?

I do know a lot of people, who are excellent programmers, but their C is read-
only at best, because their language of choice has been something else.

I see nothing wrong with that. A good programmer usually doesn't think in a
language context anyway, he translates his thoughts to a language, yes, but
when designing, he thinks a few levels above the language. Thus, the lack of C
knowledge does not, in my opinion, does not mean one's insufficiently skilled.
Nor does good knowledge of C mean one's a good programmer.

I've also met with people who were excellent C coders: they could code down
whatever they were told to, blazingly fast, using every trick the language had
to offer. But they couldn't design their way out of a paper bag, because they
lacked vision: they could only think in C, and not beyond that. They couldn't
see the bigger picture.

------
AlfredTwo
I'm not sure I can take someone seriously as a programmer if all they know for
operating systems are Windows, Mac OS and flavors of UNIX/LINUX.

Seriously though, C is a good language but for back to basics you are talking
assembly language at least. Preferably several assemply langages.

------
aaronrc
Last place I worked had a guy who viewed C as the enemy and would not code in
anything put Fortran - it was a production system running a totaliser.

However it's a silly assertion. Unless you need someone to program micro-
controllers, devise codecs, do low level memory management etc. etc.
understanding C is hardly going to be a mandatory requirement. If you're
running a software company building web apps I'd much rather have someone that
understands user interfaces and codes in a productive language - C expertise
is superfluous.

I have worked professionally with C myself and studied it at uni. However you
won't see me volunteering for C work. It's painful to go back to C after C#,
Ruby etc.

------
piousbox
After learning the syntax of a language (let's say C), you are left with the
formidable task of learning best practices, idiomatic expressions, frameworks,
debuggers, libraries... and then, how to deal with managers, how to hire
employees, how to do taxes. And in spare time let's all spend a few years
learning C. ;-)

Or rather, a designer is not a good designer if he doesn't have the human
anatomy memorized, and no UI specialist is a good UI specialist if s/he's not
a good designer. So let's all us who make web forms, go and study human
anatomy for 2 years.

------
ragmondo
Soooo.... if a statistician doesn't know C but knows R then that's a deal
breaker? How about if a 3d game programmer knows lua, but can't do function
pointers ? I'm way too late to this party, but I'm sorry it's horses for
courses here.

Know the tools for your trade. Nothing more, nothing less.

------
IDisposableHero
_do you know anyone who doesn't know C but is still excellent at
coding/computer-science?_

You don't? How parochial. I recommend tht you study a good functional language
for a while. It helped me understand coding on a "far deeper level".

------
pavelludiq
Not knowing C is fine, but not having an understanding of the machine you use
to make a living, well, you can get away with it, but before i started
learning C and reading about low-level issues, i felt like I was cheating.

------
azazel
One might just as easily say:

:%s/C/Lisp,Haskell,OCaml or Erlang/g

It all depends on what you want. And yes, I know a few excellent computer
scientists who don't "know" C.

------
raniskeet
What's wrong with not knowing C? Programmers will program in tools they know
in the domain they're familiar with.

------
DarrenLyman
Yes, I would agree. Although I would take it a step further for web engineers
(developers) to say that if you don't have your N+ and/or Cysco certs, you
shouldn't be designing.

