I've got a little bit of history with programming, having gotten my start with Visual Basic. I let it slide as a hobby from a little after VB6 up until just a year or so ago when I got on the iPhone bandwagon, when I decided to take up Objective-C programming.

I now have what I feel to be an intermediate level of knowledge on the language, but I can't help but feel that there's a substantial gap in where my knowledge is, given that there seems to be a substantial bit of the language I don't feel I understand.

Would I benefit from reviewing the underlying C structure, or would I be better served from continuing to practice solely in Objective-C whilst reviewing the documentation for various features?

Edit: Though I've accepted the first answer given, more insight is always appreciated from those with supplementary or opposing views.

  • Depends on what exactly the substantial bit of the language you don't understand is. – yannis Aug 20 '12 at 15:46
  • 1
    "what language you should learn next" type questions are discouraged per site FAQ – gnat Aug 20 '12 at 16:30
  • 3
    C is a procedural language. If you just want to learn about the procedural paradigm I would advise you to learn a cleaner language like Pascal: Pascal has been used extensively in real applications but was specifically designed for teaching (therefore Pascal is less hacker-oriented than C). However, if you need to work on some real project in an area that specifically requires C, then you can go ahead and learn C. – Giorgio Aug 20 '12 at 17:09
  • 2
    @Terrance Shaw: C has a high practical relevance because, besides being at the core of language like Objective-C and C++) it is often used as an interface between languages. E.g. AFAIK there is a C-interface for Java, Haskell, and many other languages. So even if nowadays not many people develop their applications directly in C, C is practically very important. – Giorgio Aug 20 '12 at 18:20
  • 1
    I asked a related question on SO: <stackoverflow.com/questions/10858820/learning-c-for-objective-c> – pasawaya Aug 23 '12 at 2:10

The features of Objective-C are more or less a Superset of the features of C.

So, for me, the answer is yes.

You'll be learning the most critical concepts of Objective-C and most will find procedural programming a lot simpler and less surprising than similar solutions solved with object oriented programming.

You have a much better chance of understanding all of the concepts in C than you do in Objective-C. Assembly language is another good language with few surprises and few features.

You might have trouble solving a complex problem when you use lower level languages, but you'll actually be able to learn and understand them much easier.

  • Great. Thank you for your very clear and concise answer. – Terrance Shaw Aug 20 '12 at 16:17

It depends on what you don't understand about Obj-C. If you feel you have a good grip on the OO side, but struggle with things like pointers or array semantics, then by all means you want to explore the lower-level C side of things.

If you're struggling with OO concepts or message passing or the runtime, then learning C won't help you at all.

  • I think I've got a fairly good grasp on the OO part of Objective-C, there's just some... finer nuances?... of the language that elude me. Been skimming over "The C Programming Language", and even from the beginning, it seems to be filling in some of the gaps. – Terrance Shaw Aug 20 '12 at 23:01

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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