Learning C

  • Steve Jones - SSC Editor (8/16/2012)


    Mike Austin-398977 (8/15/2012)


    By your reasoning, all of us should be required to take a course in transmission repair before we're allowed to drive a car.

    Not quite a good analogy. Programmers, even analysts that program, are more like mechanics or builders of cars than drivers.

    How about the difference between operating a car and driving a car? It's the difference between an automatic and manual transmission. With an automatic, you operate the car, where as with a manual you actual drive. You have to pay attention to more when driving a car (or other vehicle) with a manual transmission than you do with an automatic.

    You could say the same thing about programmers/developers. If you learn initially with a language that requires a better understanding of what goes on behind the scenes, the better. This language does not have to be C. Sorry, but I learned BASIC, FORTRAN, ALGOL, COBOL, and Focal (A DEC Language) back in high school. Didn't have all the fance stuff you have now in these cool IDE's (VS) that are around today.

    If you teach a programming class using VB.NET, but make them use Notepad for writing the programs and the command line compiler to compile the code, do you think they may learn more because they don't have the IDE there to help them? Probably.

  • Lynn Pettis (8/16/2012)


    Discipline in writing good code doesn't come from the language, it comes from having the proper training and mentoring. I am sure that there are C & C++ programmers that are just as inefficient as the VB programmers you disparage as I am sure that there are VB programmers out there that can write better code than many C & C++ programmers.

    Bottom line, it isn't the language that makes the programmer.

    I agree and disagree. Programmers aren't a fault of the language, but at the very beginning, the languages matter. When I see some of the stuff my son has done with languages, it's neat to see him get started with learning languages, but you can very quickly develop bad habits because you never have to deal with some things. You might not deal with them later, but understanding them is important.

    A short beginning in C, not writing COM stuff or web services, but simple card sorting, moving lists around, learning to read and write input, builds good habits because without them you can't get the assignments done.

    It's kind of like saying that a carpenter shouldn't use a hand plane or hammer because a nail gun or power sander teach the same things. They don't. Even if they are more efficient, you gain something by working slower and harder at first.

  • Steve Jones - SSC Editor (8/16/2012)


    I think C really is a good place to get early because it makes you be very careful.

    Agreed. Sloppy programmers don't have much success with C because they usually get impatient

    and move on to VB. OSs and device drivers are mostly written in C, and of course you really can't learn C++ until you know C !

    The probability of survival is inversely proportional to the angle of arrival.

  • Tim Wilson-Brown (8/15/2012)


    When I did software engineering at university (2001-2005), we learnt C for networking, SQL for database theory, and Java for concurrency.

    I think this is a good approach. Procedural, Object Oriented, and Relational are all different concepts and each should be learned with an appropriate language as a tool for learning the concept. C is a good choice. Personally, I enjoyed my years using and supporting Pascal - wrote a compiler and interpreter for Pascal and supported it for several years. I feel my Bachelors in CS from 1982 had the advantage of including the range from Assembly Language to C. Later, on the job, I learned the Object Oriented concepts with SmallTalk and Object Oriented C. More recently I have picked up SQL. I find it is relatively easy to pick up new languages because I have a good foundation of understanding down to the bit level what is happening. That is needed and appropriate for a professional software engineer. For the rest of the folks, some set of tools to understand the concepts of procedural design, object oriented design, and relational design is what we need.

  • Steve Jones - SSC Editor (8/16/2012)

    I think Assembler is too hard. The concepts there are unlike anything else, but lots of stuff builds on C. I started with BASIC and some PEEK/POKEs with minor assembler routines on AppleIIs, but I really learned programming and structures on PASCAL. That was good, but when I went to C, I found bad habits from PASCAL that didn't fly in C.

    I think C really is a good place to get early because it makes you be very careful.

    Steve also taught his children to walk by leaving them in a field of rocks, sharp sticks and snakes ...and they're better for it.

    btw, peek/poke on AppleII - haha I don't miss those good ol' days. I also don't miss the college classes in Modula II (Pascal's retentive cousin). To be honest though, I don't think anyone should learn programming via copy/paste/tweak in PHP either.

    isn't the issue here the difference between merely "writing code" and well-engineered solutions?

  • sturner (8/16/2012)


    TravisDBA (8/16/2012)


    One cannot blame the car for their poor driving skills.:-D

    Ever hear of the Yugo? :hehe:

    Yes, but one bad car maker imported from Yugoslavia doesn't change my basic point.:-D

    "Technology is a weird thing. It brings you great gifts with one hand, and it stabs you in the back with the other. ...:-D"

  • Teaching C programming to enginerring students in university is about like teaching medical students Latin. Upon graduating, engineers would benefit more from Java and SQL, and future doctors would benefit more from Spanish.

    "Do not seek to follow in the footsteps of the wise. Instead, seek what they sought." - Matsuo Basho

  • TravisDBA (8/16/2012)


    Lynn Pettis (8/16/2012)And yes, you can do that now in VS in ANY .net language, but it isn't the language or the tool that should take the blame for poorly designed or implemented code.

    Gotta agree with you there Lynn. One cannot blame the car for their poor driving skills.:-D

    PHP!

Viewing 8 posts - 46 through 52 (of 52 total)

You must be logged in to reply to this topic. Login to reply