Learning C

  • Comments posted to this topic are about the item Learning C

  • Why C? Why not just programming skills in general? Language constructs and use are the important part. Fixing on the syntax of one language is too focused - the emphasis should be on the commonality between all languages and examples should show how various languages do the same job and how some are more suited for particular tasks than others.

    Personally I've managed a computing degree and over thirty years in the software industry without touching C. Fortran, pascal, Assembler code, vb.net, cobol, php and lots of other languages (and of course SQL) but never C or C++

  • Like P Jones, I've never used C / C++ in my 26 years in the IT industry But similar to P Jones, I cut my teeth on 6502 Assembler, Pascal, creating sprites on a Commodore 64, PEEKing and POKEing bits on a Timex Sinclair, studying operating systems and file system hashing techniques and compilers in college, etc. I've always been convinced that I am the developer / troubleshooter / manager that I am today BECAUSE I have a basic understanding of the underlying architectural principles.

    In my current position, I often see technical people struggle, especially when troubleshooting a problem, simply because they don't have knowledge of or understand the underlying principles. (Which could lead to the whole degree / non-degree issue, but that is another topic. 🙂 )

    I agree with the general concept - where people are training for a technical computer career, that training should include topics that allow for deeper interaction/experimentation between the hardware and software. Even if you never use that particular setup in your career, the basic knowledge can be applied in many different ways. In my case, C / C++ were not the tools selected for my course of study. But the languages / courses we had gave us a broad foundation from which to launch our careers.

    (My college study included these languages / courses: Pascal, 6502 Assembler, Honeywell Level 6 Assembler, APL, SNOBAL, COBOL, ADA, PL/1, FORTRAN 77, LISP, Compiler design, Dynamic System design, File System design, Operating Systems, Data structures (sorting, looping), Computer Language Design and Construction, Business Systems, plus a math minor.)

  • Forget C. That really teaches you very little about programming to the iron. You need to program in some sort of assembly language for that. I started out learning assembly on an IBM S/360 mainframe.

    Does that make me a better Visual Studio or T-SQL programmer? Maybe. But, it makes for great stories about large decks of cards and spinning tape drives. 🙂

  • My background is programming, most of my career has been in application development. Over 30 some-odd years I've learned a wide array of languages and dialects, from C to Basic to Python to some real oddballs like MOBOL, TADS, and ADVSYS.

    I would NOT recommend C as a first language--or at all. The problem with C in particular (and this applies as well to C++ with a bunch of huge additional problems) is that C is way too primative to teach beginning programming concepts. It's *too* close to the metal.

    Not to mention C has horrid syntax and encourages bad habits very easily. The only language I can think of that's even worse is LISP, which is parenthetical hell.

    Python is a very good first language, especially for teaching. It has simple consistant syntax and consistant language structures, including a wide array of very useful data types.

    C--well, doesn't. C is a good object lesson in why higher level languages exist. 🙂

    But then again DBAs live in T/SQL. Don't even get me started on the horror that is T/SQL...

  • Don't bother with C. Make everyone learn Malboge (http://en.wikipedia.org/wiki/Malbolge).

    More fun that way.

    - Gus "GSquared", RSVP, OODA, MAP, NMVP, FAQ, SAT, SQL, DNA, RNA, UOI, IOU, AM, PM, AD, BC, BCE, USA, UN, CF, ROFL, LOL, ETC
    Property of The Thread

    "Nobody knows the age of the human race, but everyone agrees it's old enough to know better." - Anon

  • I agree with Steve. C and C++ help to understand how to handle memory/cpu/io/other devices. They help to develop very good performance applications or batch processing.

    In 1986, I started with ADVANCED COBOL 85 on Honeywell mainframe. Two years later, I started working with C and I wrote a lot of very perfomant applications on 8086 12MHZ. All other languages to follow. (C++, VB, Pascal, Assembler for 86/386, DB2, Clipper, T-SQL, HTML, XML, Powerbuilder, Javascript, C#, VB.NET)

  • GSquared (8/15/2012)


    Don't bother with C. Make everyone learn Malboge (http://en.wikipedia.org/wiki/Malbolge).

    More fun that way.

    It's so hard to program in, you can't even spell it...:hehe:

    ---------------------------------------------------------
    How best to post your question[/url]
    How to post performance problems[/url]
    Tally Table:What it is and how it replaces a loop[/url]

    "stewsterl 80804 (10/16/2009)I guess when you stop and try to understand the solution provided you not only learn, but save yourself some headaches when you need to make any slight changes."

  • I do think that working with more primitive languages gives you some insight that higher level languages do not. Assembler was essential at one time, even on mainframes. Not something that you used all the time, but something that you needed to know.

    (I remember asking a younger, but very versatile programmer with a problem about "one's complement" and getting a blank look in return. But for that particular bug, it was essential to understanding the problem. (This was a bug with SQL Server, bcp, and datetime data from version 6.0 or 6.5.))

    Anyway, regarding C, my oldest extant program was written in C about 29 years ago. Still running today. Ha.

    Russell Fields

  • My first programming language that I learned from the bottom up was C, and I have never regretted having that as a base programming knowledge level. A mentor of mine once said, "if you are going learn how cars tick, start with the engine, not the headlights." 😀

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

  • I'll be honest. I took C. It wasn't very useful. I program in .NET and SQL so much different than C, that there really wasn't any carry over whatsoever.

  • Question Guy (8/15/2012)


    I'll be honest. I took C.

    Learning and using C on the job, and taking the class are two different things entirely..:-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"

  • If I had to teach all college graduates one language, it would be SQL. It's more practical than C. Most all developers these days write at least some SQL, and most do it badly.

    If we teach non-programmers, folks like salespeople, managers, or scientists how to write their own queries against a database, without handing off their requests to IT, they can immediately start benefitting from that knowledge. It's empowering.

    If you teach them C, they'll spend weeks learning how print "Hello World" on a console, will never use it, and will forget everything three months.

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

  • Eric M Russell (8/15/2012)


    If you teach them C, they'll spend weeks learning how print "Hello World" on a console, will never use it, and will forget everything three months.

    My point exactly. 😀

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

  • Eric M Russell (8/15/2012)


    If I had to teach all college graduates one language, it would be SQL. It's more practical than C. Most all developers these days write at least some SQL, and most do it badly.

    If we teach non-programmers, folks like salespeople, managers, or scientists how to write their own queries against a database, without handing off their requests to IT, they can immediately start benefitting from that knowledge. It's empowering.

    If you teach them C, they'll spend weeks learning how print "Hello World" on a console, will never use it, and will forget everything three months.

    Can we also teach them how to request information from IT? If the average consumer provided the basics like a URL (isn't everything served via http?), what they have, and what they want (deltas from what they have) - we might be able to start providing solutions right away. Mostly now we have a session of 20 questions to qualify that they have no idea what they are asking for.

    Coding "to the hardware" in a cloud makes no sense. I'm not sure we should want our customers writing queries/code. However, I agree that having some appreciation for process would make everybody more effective & efficient at work. Not sure how you teach that to those who don't already possess the skill.

Viewing 15 posts - 1 through 15 (of 52 total)

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