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