Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

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

closed as off-topic by Philipp, MichaelT, durron597, Snowman, Ixrec Sep 18 '15 at 19:03

This question appears to be off-topic. The users who voted to close gave these specific reasons:

  • "Questions seeking career or education advice are off topic on Programmers. They are only meaningful to the asker and do not generate lasting value for the broader programming community. Furthermore, in most cases, any answer is going to be a subjective opinion that may not take into account all the nuances of a (your) particular circumstance." – Philipp, Snowman, Ixrec
  • "Questions about what language, technology, or project one should take up next are off topic on Programmers, as they can only attract subjective opinions for answers. There are too many individual factors behind the question to create answers that will have lasting value. You may be able to get help in The Whiteboard, our chat room." – Community, durron597
If this question can be reworded to fit the rules in the help center, please edit the question.

    
Have you considered Swift? – Sebastian Redl Sep 18 '15 at 11:16
up vote 10 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

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. – toniedzwiedz Oct 13 '12 at 13:58

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

protected by gnat Sep 18 '15 at 15:57

Thank you for your interest in this question. Because it has attracted low-quality or spam answers that had to be removed, posting an answer now requires 10 reputation on this site (the association bonus does not count).

Would you like to answer one of these unanswered questions instead?

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