Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

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

share|improve this question
add comment

3 Answers

up vote 9 down vote accepted

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.

share|improve this answer
    
Bravo! Perfect answer! –  Holli Nov 14 '11 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.). –  EOL Nov 14 '11 at 16:17
add comment

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.

share|improve this answer
    
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. –  daniels Nov 14 '11 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. –  Tom Oct 13 '12 at 13:58
add comment

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.

share|improve this answer
    
Good points, thanks. –  daniels Nov 14 '11 at 16:02
    
+1: I like this pragmatic approach that also recommends following one's itches. –  EOL Nov 14 '11 at 16:20
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

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