I want to learn C but I tend to learn best when I have a project to work on. I've never done iPhone development, so I'm hoping to kill two birds with one stone. Will learning objective c also teach me to program c reasonably well, or are they too dissimilar?

EDIT: I'm mostly wondering if objective-c/iphone-development would teach me all the little gotcha's that are inherent to c. I come from a .Net background so I haven't done much in terms of memory management or working with pointers.

closed as off-topic by ratchet freak, GlenH7, Ixrec, durron597, user40980 May 21 '15 at 2:10

This question appears to be off-topic. The users who voted to close gave this specific reason:

  • "Questions seeking career or education advice are off topic here. They are only meaningful to the asker and do not generate lasting value for the broader community. Furthermore, in most cases, any answer is going to be a subjective opinion that may not take into account all the nuances of a (your) particular circumstance." – ratchet freak, GlenH7, Ixrec, durron597, Community
If this question can be reworded to fit the rules in the help center, please edit the question.

  • 6
    It is, in the same way that learning JavaScript is a reasonable way to learn Java. – Oded May 27 '13 at 17:18
  • 8
    That's a strange comparison. Javascript and java are completely unrelated languages while objective c is a strict superset of c. – ConditionRacer May 27 '13 at 17:24
  • What other programming languages have you used before? C is also known as a comfortable assembler. You can rush thru it in 1 or 2 weeks (constants, data types, control flow), then switch to Objective-C. There are tons of example programs for almost every class. – ott-- May 27 '13 at 18:15
  • related (probably a duplicate): Is there any advantage to learning C first? – gnat May 28 '13 at 18:20

Based on your edit, I would say that Obj-C is not the best way to go.

Obj-C has a lot of nice things as part of the framework that make it a higher level language, which will mask the very gotchas that you want to experience in C. In particular, memory management in Obj-C is a big topic in its own right, and it is very different from what you would typically be doing in C.

Just because something is a superset, it does not mean that you will be utilizing the whole original set.

I would advise you to figure out what it is exactly that you want to do with C, and tackle it directly.

  • 1
    Obj-C and C are syntactically similar, but you will not be a C programmer if you write good Obj-C programs, and no one wants you to write C programs for an iPhone. C++ is also a super set of C...... – mattnz May 28 '13 at 2:12

90% of what you'll learn doing a project in object-c will be related to Apple. As 90% would be to Android if you learn Google's SDK using Java.

That makes it difficult to gain experience from the remaining 10%.

The reverse way to look at is a C programmer who's never touched object-c would have a lot of learning to do to make an app.

Is this a bad thing, No.

Practical application of a skill is better than just learning a programming language.


The best way to learn a language is to use the language you wish to learn, not some other language, regardless of how much the two have in common.

In particular, it you use Objective C, you will learn the Objective C way of doing things, not the C way.


they are two seperate languages,

Learning the Obj C Language may actually hurt your understanding of C in the long run, since C is very low level and Procedural, where Obj C is not.

to learn C...you need to learn C.

the closest thing i can think of to learning a language like C that isnt C. would be PHP.

Not the answer you're looking for? Browse other questions tagged or ask your own question.