?

Log in

No account? Create an account
Why programmers should learn C. - Adventures in Engineering — LiveJournal
The wanderings of a modern ronin.

Ben Cantrick
  Date: 2006-11-26 11:35
  Subject:   Why programmers should learn C.
Public

http://www.jubling.com/ten-reasons-why-every-programmer-should-learn-c.html

I also think we should have college-level kids at least scrape the surface of assembler, just so they understand there's another layer under C as well.
Post A Comment | 7 Comments | | Link






Triggur
  User: triggur
  Date: 2006-11-27 05:06 (UTC)
  Subject:   (no subject)
Dude, that is such a grumpy old codger argument.




:)
Reply | Thread | Link



Ben Cantrick
  User: mackys
  Date: 2006-11-27 20:40 (UTC)
  Subject:   Bring me my walker, whipper-snapper!!
And get off my lawn, you damn kids!
Reply | Parent | Thread | Link



Alex Belits: iskra
  User: abelits
  Date: 2006-11-27 08:21 (UTC)
  Subject:   (no subject)
Keyword:iskra
I also think we should have college-level kids at least scrape the surface of assembler, just so they understand there's another layer under C as well.

I think, it's less important to know that there is a layer below C and above hardware, than to know that this layer is what allows hardware to run software, and get at least a general idea how exactly. It's the first of many things that tie together knowledge and allow it to develop in a consistent manner.

Every time I see people studying computers by consuming tiny morsels of self-contained knowledge about seemingly unrelated pieces of EE, CS and product manuals, it surprises me how this approach is incompatible with the nature of the computers. It allows people to avoid all and any kind of understanding of the things they are dealing with, it misrepresents knowledge as a set of predefined magic spells that should be combined to produce something that kinda resembles the desired result. It elevates the work already done (often in some deeply flawed way) to the level of an immutable law of nature and teaches them to never try to improve the tools given to them by their "masters". It relies on memorization but not understanding because inconsistent knowledge is incomprehensible.

It baffles me that people accept to introduce a fundamental flaw into their thinking just to avoid spending 1-2 more weeks total once in their whole life studying moderately hard subjects that tie large pieces of knowledge together, and allow them to keep consistent their ideas of how things work.

Maybe they don't know, what knowledge is?
Reply | Thread | Link



Ben Cantrick
  User: mackys
  Date: 2006-11-27 21:03 (UTC)
  Subject:   (no subject)
Maybe they don't know, what knowledge is?

Or maybe they're not smart enough to see the holes in their understanding. Or too apathetic to care about it if they do.
Reply | Parent | Thread | Link



Not Matt
  User: jameshroberts
  Date: 2006-11-27 19:38 (UTC)
  Subject:   (no subject)
Yeah, I learned C++ in college. Then when I got to grad school, I found that essentially all scientific computing is done in either C or Fortran, and that C++ is basically useless for anything I'll ever do. I had to pick up C on the streets.

Understanding the assembler is good, but not in the way I did it. We spent a bit on Assembly in my Intro to Comp. Engr. class. However, we used some godawful emulator for it. Don't remember the name, but there was no way to have it read in the instructions from a file. Every time you wanted to run it, you had to enter in every line from the keyboard. And if you made a mistake, you had to start over. That was the class that made me decide I didn't really want to be an engineer.
Reply | Thread | Link



Ben Cantrick
  User: mackys
  Date: 2006-11-27 21:02 (UTC)
  Subject:   (no subject)
Yeah, I learned C++ in college.

dpcfmander can tell you all about this, but I'm totally opposed to using C++ as a language to teach people programming. It's horribly inconsistant, cnfusing and ugly (at last count, the "static" keyword meant 13 different things depending on context) and a terrible way to learn OO as well.

IMO, what we need to do is, first teach C for a year or two, then maybe Java, and then everything else. I would also say that sometime in the first month of the second semester C class, we tell people in a general way, "here's what a compiler does, just so you know. It breaks these C statements down into much simpler assembley instructions like ADD and MOV", etc.
Reply | Parent | Thread | Link



Alex Belits: iskra
  User: abelits
  Date: 2006-11-28 11:35 (UTC)
  Subject:   (no subject)
Keyword:iskra
IMO, what we need to do is, first teach C for a year or two, then maybe Java, and then everything else.

I don't know about "a year or two", but C is a great language to study data structures.

C++ is a useful language, and I think that I was right when I have introduced it for telephony server programming at my previous work, but it's horrible for studying. It has a raging multiple personality disorder (procedural through functions? object-oriented through classes? generic through templates?), and people who study it seem to acquire some idiotic "ideology" about how they have to design their software based on a particular shitty template library, hide global variables inside massive singleton objects and do other things that make absolutely no sense other than paying lip service to genuinely good design ideas while implementing the very opposite of them by other name.

I understand that some of this is from misguided idea of Stroustrup himself that his language can be taught without any C background, but someone has to be orders of magnitude more stupid than him to put such a horrible salad into students' heads. He made a moderately clumsy yet useful tool, however modern C++ courses elevated it to the level of ideology.
Reply | Parent | Thread | Link



browse
May 2015