3

I am just finishing the second semester of my CS degree. So far I learned C, all the fundamental algorithms and data structures (e.g., searching, sorting, linked lists, heaps, hash tables, trees, graphs, etc).

Next year we'll start with OOP, using either Java or C++.

Recently I got some ideas for some iPhone apps and got itchy to start working on them.

However I heard some bad things about Objectice-C in the past, so I am wondering if learning it as my first OOP language could be a problem. Not to mention that I think it will be hard to find books/online courses that teach basic OOP concepts using Objective-C to illustrate the concepts (as opposed to books using Java or C++, which are plenty), so this could be another problem.

In summary: should I start learning Objective-C and OOP concepts right now by my own, or wait one more semester until I learn Java/C++ at university and then jump into Objective-C?

Update: For those interested in getting started with OOP via Objective-C I just found some nice tutorials inside Apple's Developer Library -> http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/OOP_ObjC/Introduction/Introduction.html

1
  • Have you considered Swift? Commented Sep 18, 2015 at 11:16

3 Answers 3

11

Whatever you do, you will need to (re)learn OOP several times to really program in a OO manner.

So it won't hurt if you start early.

And by the way, you will also hear bad things about Java, bad things about C++, bad things about Ruby given the people you talk to... If you listen to them, you might never start learning OOP :)


Edit to answer this new part of the question:

Not to mention that I think it will be hard to find books/online courses that teach basic OOP concepts using Objective-C to illustrate the concepts (as opposed to books using Java or C++, which are plenty), so this could be another problem

That is not a problem, that is great. OOP concepts vary from one language to another. An "interface" exists in Java, is a bit different in Objective-C, can be implemented in some manner with C++ but does not exist in Ruby for example. Learning OOP with examples in a language and applying it in another language is a great way of opening your mind and not being tied to one language.

2
  • Bravo! Perfect answer! Commented Nov 14, 2011 at 13:19
  • +1. I would personally recommend learning OOP with Python, because objects are easier to create in Python than in C++, and because Python uses the structures that the original poster mentioned (lists, hash tables/dictionaries, etc.). Commented Nov 14, 2011 at 16:17
8

Recently I got some ideas for some iPhone apps and got itchy to start working on them.

Working on what you're itchy about is MUCH better than suppressing the itch and learning some "better" language instead. Life's just too short, you know?

EDIT: In response to your comment, I do both, and the concepts largely translate. The syntax is very different, obviously. The two languages emphasize different conventions and design patterns, for sure. But working in more than one language makes you a better developer. You start thinking behind the structures that one language leans on, and you see the bigger picture behind them both. Honestly, the biggest thing you'll have to deal with is the difference in typing rules between the two, and the runtime-vs-compiletime differences.

2
  • The main problem I see is that I would probably be reading Java/C++ OOP books while trying to translate the concepts into Objective-C. Commented Nov 14, 2011 at 14:07
  • +1 for "working in more than one language makes you a better developer". Sometimes it really makes you stop and think about how a language is designed. OOP comes in many flavors. A good example is how Java/C# or Ruby tackle the problems that can be solved by multiple inheritance in C++, using interfaces and modules respectively. Commented Oct 13, 2012 at 13:58
3

Objective-C has a lot of real market value. I strongly suggest you start working on one of those iPhone apps you've been itching to write. Do it now.

There are huge resources available to anyone wanting to learn object oriented programming in general and Objective-C in particular, many of them free.

In my opinion Objective-C kind of sucks, C++ is a way better language, and both are way better than the suckage that is Java.

But really, who cares what I think? I'm not going to write that cool iPhone app you are thinking about, you are.

The market sees the thousands of really cool and useful programs being written in Objective-C, and rewards the developers who write them. And if Objective-C was truely sucky its unlikely that so many excellent programs could have been written using it in the first place.

1
  • +1: I like this pragmatic approach that also recommends following one's itches. Commented Nov 14, 2011 at 16:20

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.