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.

  • 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.