Thread: Learning C

  1. #1
    Registered User
    Join Date
    Nov 2009
    Posts
    111

    Learning C

    Ok, this might be a somewhat difficult thing to answer, but I'm trying to ask it anyways, of those here who's been c-programmers long enough to have a good overview of both the language and its use:

    Can you create kind of a list with topics that are necessary to know, both C specific and with regards to programming in general? That is, a list which lists key concepts etc. which are necessary to know if you are to say that "I know C", or "I know a bit of C programming". I'm not expecting a complete list, or something that "every C programmer would agree 100% about", but maybe some of the most obvious/important key concepts, which will be imporant to know in most programming/development settings?

  2. #2
    Banned
    Join Date
    Aug 2010
    Location
    Ontario Canada
    Posts
    9,547
    Quote Originally Posted by cnewbie1 View Post
    some of the most obvious/important key concepts, which will be imporant to know in most programming/development settings?
    First you have to know the language itself... keywords, grammar, rules, etc. these only come from study of educational material.

    In general programming terms you will need a working grasp of variables, pointers, data manipulation and storage methods. This will almost certainly include creating and using function calls, loops, conditional statements, arrays and structures.

    You will also need some working knowledge of the mechanics of compiling, linking and debugging programs in whatever environment you use... Windows, Linux, BSD etc.

    A truly "self-educated" programmer is an extremely rare thing. Grab some books and/or tutorials, learn by doing; write code, learn from your mistakes and never be afraid to ask for a little help... none of us knows everything.

  3. #3
    Code Goddess Prelude's Avatar
    Join Date
    Sep 2001
    Posts
    9,897
    >Can you create kind of a list with topics that are necessary to know,
    >both C specific and with regards to programming in general?
    You're right, it is a difficult question to answer. If you're looking for a checklist where you can say "Oh, I'm a programmer now that all of these things have been learned", I'd say that's missing the big picture. The real skill you're learning as a programmer is how to solve problems. The implementation of those solutions is a trivial matter in comparison, and you can't put a check mark next to a "Learn how to solve problems" bullet point on a checklist because it's an ongoing process.

    Any language you learn, any algorithm, data structure, or new concept should be approached with the attitude of "how will this help me solve problems better?". As such, you should constantly look for new things to learn, not follow a prefabricated list of "necessary" things.
    My best code is written with the delete key.

  4. #4
    Registered User
    Join Date
    Nov 2009
    Posts
    111
    CommonTater: Thanks - that the kind of input I was looking for.

    Prelude: You misunderstand. I'm a computer engineer, so I know that "being a programmer" isn't the same as knowing a specific language. That's why I tried to ask the question related to C, and being able to say that one "knows a bit of C". Programming is problem solving, and the languages/environments are the tools - I know that.

  5. #5
    Registered User
    Join Date
    May 2010
    Location
    Naypyidaw
    Posts
    1,314
    bit of C?
    Maybe variable declaration, loop, scope, array, function,...

  6. #6
    Code Goddess Prelude's Avatar
    Join Date
    Sep 2001
    Posts
    9,897
    >That's why I tried to ask the question related to C, and being able to say that one "knows a bit of C".
    That's not at all what you asked, emphasis mine:
    Quote Originally Posted by cnewbie1
    Can you create kind of a list with topics that are necessary to know, both C specific and with regards to programming in general?
    So do you want to know about C and programming in general, or just the C language? If it's the latter then don't be a pussy. C is a small language, you can learn the basics of all of its features quickly and with little difficulty. I get the distinct impression that you want someone to tell you it's okay to learn the bare minimum and it'll somehow enrich your life or add value to your resume.
    My best code is written with the delete key.

  7. #7
    Registered User
    Join Date
    Nov 2009
    Posts
    111
    Let me change it to what I _meant_ to say, then: ...both C specific and perhaps with regards to programming in general?

    Quote Originally Posted by Prelude View Post
    >I get the distinct impression that you want someone to tell you it's okay to learn the bare minimum and it'll somehow enrich your life or add value to your resume.
    Well, thank you. I don't know what I said that makes it OK for you to reply in that manner, but no matter. I'd be very grateful if you just ignore this post. Ok? I got an answer above, which was the kind I was looking for. I'm sorry that you feel that my question wasn't specific enough, and that you feel sufficiently offended by it to accuse me like that. That wasn't my intention at all. I'll try not to get on your bad side in the future.
    Last edited by cnewbie1; 10-27-2010 at 07:29 AM.

  8. #8
    Code Goddess Prelude's Avatar
    Join Date
    Sep 2001
    Posts
    9,897
    >Let me change it to what I _meant_ to say, then: ...both C specific
    >and perhaps with regards to programming in general?
    Then combine my two answers, as I still feel they're both applicable:

    C Specific: Don't be a pussy.
    Programming in general: Focus on the goal, not the means.

    >and that you feel sufficiently offended by it to accuse me like that
    You'd have a very hard time offending me, so don't flatter yourself. As for the "accusation", if that's how you choose to interpret it, I call things like I see them. If you can't handle that, well, it's not my problem.

    I'm glad you got an answer you wanted.
    My best code is written with the delete key.

  9. #9
    Banned
    Join Date
    Aug 2010
    Location
    Ontario Canada
    Posts
    9,547
    Quote Originally Posted by cnewbie1 View Post
    Let me change it to what I _meant_ to say, then: ...both C specific and perhaps with regards to programming in general?


    Well, thank you. I don't know what I said that makes it OK for you to reply in that manner, but no matter. I'd be very grateful if you just ignore this post. Ok? I got an answer above, which was the kind I was looking for. I'm sorry that you feel that my question wasn't specific enough, and that you feel sufficiently offended by it to accuse me like that. That wasn't my intention at all. I'll try not to get on your bad side in the future.
    Newbie... may I inject a personal note here, without offending you?

    Known fact... Programers have egos... big ones.

    They work hard to get where they are, it's not an easy thing to be asked one day to install bookkeeping programs then on the next you're writing a patch for the company's real time memo system... it's like one day you're moving refrigerators and the next you're fixing a nuclear reactor. This is a level of skill not easily attained and it's not uncommon for us to get a tad defensive around people who appear slightly cavalier about the learning curve. Lord knows I've been guilty of this myself.

    We also tend to speak very directly amongst ourselves. It's understood that it's how things work in "coder" circles and one does need to understand that blunt criticism is most often intended as a push in the right direction, not as a personal affront.

    I would be fairly sure Prelude meant no offense. I've seen what he's posted of late and it's pretty good stuff, so in your place I wouldn't casually write off a resource you may need in the near future.

  10. #10
    Banned
    Join Date
    Aug 2010
    Location
    Ontario Canada
    Posts
    9,547
    Quote Originally Posted by Prelude View Post
    Any language you learn, any algorithm, data structure, or new concept should be approached with the attitude of "how will this help me solve problems better?". As such, you should constantly look for new things to learn, not follow a prefabricated list of "necessary" things.
    Well, in fairness... he does have to start someplace.

  11. #11
    Code Goddess Prelude's Avatar
    Join Date
    Sep 2001
    Posts
    9,897
    >Well, in fairness... he does have to start someplace.
    Assuming you interpret his question as such. Rather than "where should I start learning C", I read it as "how much of this crap do I have to learn before I can claim to know a bit of C?".
    My best code is written with the delete key.

  12. #12
    Banned
    Join Date
    Aug 2010
    Location
    Ontario Canada
    Posts
    9,547
    Quote Originally Posted by Prelude View Post
    >Well, in fairness... he does have to start someplace.
    Assuming you interpret his question as such. Rather than "where should I start learning C", I read it as "how much of this crap do I have to learn before I can claim to know a bit of C?".
    Ummmm... ok.

    I tried to give him a little slack since --by his own declaration-- he was having a trouble asking the question.

  13. #13
    Gawking at stupidity
    Join Date
    Jul 2004
    Location
    Oregon, USA
    Posts
    3,218
    Quote Originally Posted by CommonTater View Post
    I would be fairly sure Prelude meant no offense. I've seen what he's posted of late and it's pretty good stuff, so in your place I wouldn't casually write off a resource you may need in the near future.
    "She", actually. And yes, she's an extremely knowledgeable and skilled programmer.
    If you understand what you're doing, you're not learning anything.

  14. #14
    Banned
    Join Date
    Aug 2010
    Location
    Ontario Canada
    Posts
    9,547
    Prelude... my apologies... I got your gender wrong. However; I did see the skill in your postings.

    Thank you itsme... I meant no offense.

  15. #15
    Registered User claudiu's Avatar
    Join Date
    Feb 2010
    Location
    London, United Kingdom
    Posts
    2,094
    Quote Originally Posted by Prelude View Post
    >Let me change it to what I _meant_ to say, then: ...both C specific
    >and perhaps with regards to programming in general?
    Then combine my two answers, as I still feel they're both applicable:

    C Specific: Don't be a pussy.
    Programming in general: Focus on the goal, not the means.

    >and that you feel sufficiently offended by it to accuse me like that
    You'd have a very hard time offending me, so don't flatter yourself. As for the "accusation", if that's how you choose to interpret it, I call things like I see them. If you can't handle that, well, it's not my problem.

    I'm glad you got an answer you wanted.
    Geez, you really need to put your head under a cold shower and relax a bit. This PMS-ing isn't doing anyone any good, including yourself.

    cnewbie1:

    You may want to look over the tutorials on this site. They can be found here:
    Cprogramming.com - Programming Tutorials: C++ Made Easy and C Made Easy

    I think it provides you with a decent overview of the main concepts involved in C programming and it may help you get an idea of what you would have to learn to become a decent C programmer.

    As for programming in general I don't think it would be easy to put all languages under the same umbrella of concepts. Different languages address different programming paradigms(functional, logic, object-oriented, imperative, etc) and have different sets of concepts that are important to them.

    Hope this helps.
    1. Get rid of gets(). Never ever ever use it again. Replace it with fgets() and use that instead.
    2. Get rid of void main and replace it with int main(void) and return 0 at the end of the function.
    3. Get rid of conio.h and other antiquated DOS crap headers.
    4. Don't cast the return value of malloc, even if you always always always make sure that stdlib.h is included.

Popular pages Recent additions subscribe to a feed

Similar Threads

  1. Machine Learning with Lego Mindstorms
    By DavidP in forum A Brief History of Cprogramming.com
    Replies: 14
    Last Post: 01-30-2009, 02:34 PM
  2. Best Approach for Learning
    By UCnLA in forum C Programming
    Replies: 5
    Last Post: 03-21-2008, 02:35 AM
  3. Need Help On a Simple Bank Program
    By oobootsy1 in forum C# Programming
    Replies: 9
    Last Post: 08-08-2005, 10:51 AM
  4. Fun Learning a New Language
    By UnregdRegd in forum A Brief History of Cprogramming.com
    Replies: 16
    Last Post: 09-30-2003, 10:03 PM