tags:

views:

445

answers:

5

I am currently a c# developer(one year's working experience with bachelor degree in china), now there is another job opportunity as an objective c engineer and i am kind of interested in that position. but what bothers me is the future of objective c, is it a dying language living in the shadow of c++, java and c#? or it is a good language to stick to? thanks.

+9  A: 

On the Mac it's definitely alive and kicking. Also the IPhone. So if you like working on those environments and systems then go for it.

As far as everywhere else it hasn't really caught on much that I'm aware of. Not to say that it couldn't though. Lots of good languages catch on relatively late, like erlang for instance, so I wouldn't count Objective-C out.

Not to mention the value of learning a new language and stretching yourself.

So, if you are asking will this help further my career? then one answer is yes learning something new can be of benefit to a beginning programmer.

If you are asking will experience with Objective-C itself be marketable? then the answer is yes if you want to work in the World of Apple software.

Jeremy Wall
thanks for *the value of learning a new language and stretching yourself*
Mr peak
+7  A: 

Objective-C is widely used on Mac OS X and the iPhone OS, so it's not likely to go away anytime soon. It forms the basis of OS X. Most Apple and third-party apps are written in Objective-C, and Apple is even rewriting the OS X Finder in Objective-C, so it looks like it'll be sticking around for a while.

It's definitely not living in the shadow of C++, Java, and C#, especially on OS X. (I personally think Objective-C is a much better language than C++, Java, and C#, but that's just my opinion.) It has a different feel than those languages (due at least in part to its dynamic, rather than static, nature), but it's not really living in the shadow of them.

It's worth learning if you want to develop for the Mac or iPhone, but it isn't used widely outside of those platforms, so if you're not interested in that line of development, I suppose it's not worth it to learn.

mipadi
+1 -- "It's definitely not living in the shadow of C++, Java, and C#" -agreed.
Frank V
+2  A: 

FWIW, Objective C is about the same age as C++ and both predate Java and C# by quite a few years. I honestly think that the C++ and Java communities could learn a lot from Objective C. IMHO, the NeXTSTEP API is much cleaner than the Java library. Really writing code in Objective C with the Foundation and AppKit (et.al.) gives you a good appreciation of MVC architectures and how cleanly they can be implemented.

Anyway, I think that it is quite worth the effort to learn a language like Objective C. If for no other reason than to gain a greater understanding of what shaped languages like Java.

D.Shawley
+3  A: 

As others have said, Objective-C is alive and well on Apple's platforms (namely, OS X and the iPhone).

Additionally, it sounds like Objective-C will show you a whole new different approach of doing OO work. Considering the strong typing of C++, Java, and C#, Objective-C is very different, as it's built on true dynamism. I personally find it a joy to work with, much moreso than Java or even C++. I particularly like how the delegate system works, as well as the borrowed Smalltalk syntax.

Plus, being a simple superset of C, it's really easy to learn Objective-C. It should only take a couple hours at most to get the syntax down, and from there, it's down to learning about the library (which has good documentation). When learning it, you should try to not get into patterns that you normally do with the other languages you listed, as you won't get the full benefit of its dynamic typing.

Cinder6
+2  A: 

It really depends on your career direction. As the other posters say, if you switch to Objective C I think you will learn a lot and probably have some fun (and some pain) along the way.

Because objective c is so much closer to C and to some extent C++, you will end up being more employable in not just objective c, but c, and C++.

C is mainly used for lower level programming such as for hardware devices. So if you have a special interest in hardware devices you could go Objective C -> apple kernel device drivers (which are c), and then any hardware programming job.

If you just want to make websites, and basic desktop apps for windows, stick with C#.

Jacob