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.

I'd like to ask a question that is pretty similar to the one being asked here, but for Objective-C.

According to TIOBE rankings, the rise of popularity of Objective-C is unprecedented. This is obviously tied to the popularity of Apple products, but I feel like this might be a hasty conclusion to make since it doesn't really explain the stagnant growth of Java (1. There are way more Android O/S devices distributed worldwide, 2. Java is used in virtually every platform one can imagine)

Now I haven't programmed in Objective-C at all, but I'd like to ask if there are any unique features or advantages about the language itself compared to other prevalent languages such as C++, Java, C#, Python etc.

What are some other factors that contributed into the rise of Objective-C in this short span of time?


share|improve this question

closed as primarily opinion-based by Ixrec, durron597, Snowman, MichaelT, GlenH7 Jul 9 at 14:19

Many good questions generate some degree of opinion based on expert experience, but answers to this question will tend to be almost entirely based on opinions, rather than facts, references, or specific expertise. If this question can be reworded to fit the rules in the help center, please edit the question.

IMPORTANT Link # stackoverflow.com/questions/2583766/… –  Md. Mahbubur R. Aaman Dec 3 '12 at 3:08
TIOBE rankings are not standard. Because please see at @Mason Wheeler's answer. Also the point "TIOBE tracks how much people are talking about a language, and not only were lots of people already talking about Java, but by the time Android came around there were several other languages available that compile to the JVM." –  Md. Mahbubur R. Aaman Dec 3 '12 at 3:15
I'd like to ask if there are any redeeming factors about the language itself Why do you feel that Objective-C needs redemption? –  Caleb Dec 3 '12 at 6:38
Also downvoters, please leave a comment so I can improve my post. I'm trying to make the question as constructive as possible. –  l46kok Dec 3 '12 at 8:58
@Caleb: From here: 1986 - Brad Cox and Tom Love create Objective-C, announcing "this language has all the memory safety of C combined with all the blazing speed of Smalltalk." Modern historians suspect the two were dyslexic. –  Mason Wheeler Dec 3 '12 at 13:52

6 Answers 6

up vote 30 down vote accepted

It really is just Apple. Look at the rest of the programming world, and you'll see that no one (within a reasonably small margin of error) outside the Apple ecosystem is using ObjC. You didn't see much growth in Java to correspond with Android for a few reasons:

  • Java was already very popular, so there's less to gain, especially in a system that reports ranks, not base scores.
  • TIOBE tracks how much people are talking about a language, and not only were lots of people already talking about Java, but by the time Android came around there were several other languages available that compile to the JVM.
  • There's also a native development API available for Android, which a lot of people (especially game developers) use because it provides better efficiency than a JVM, which is important on a limited-resource device like a phone or tablet.
share|improve this answer
...also, Java was already popular as a language for mobile application development on Symbian phones. Google just targeted that pre-existing developer ecosystem. –  ZJR Dec 3 '12 at 1:43
Which would make Apple's decision to force it on developers a perplexing one. Maybe they didn't want to be limited by either having to ship a large Java runtime in the ROMs or the MIDP specs were too limiting, and they just didn't trust app developers to be able to churn out quality C/C++ apps. People whined and moaned about the intricacies of Symbian C++ so much that Nokia ported POSIX to Symbian and then went to QT in an attempt to make their lives easier, yet developers fully accepted ObjC with probably never having heard of the language beforehand. –  James Dec 3 '12 at 2:43
+1 for the point "TIOBE tracks how much people are talking about a language, and not only were lots of people already talking about Java, but by the time Android came around there were several other languages available that compile to the JVM." –  Md. Mahbubur R. Aaman Dec 3 '12 at 3:11
@James it's the language of choice for OSX and has been for over a decade, so it makes a lot of sense for Apple to support it on iOS. They clearly wanted OSX developers to jump onto the new platform. –  Kirk Broadhurst Dec 3 '12 at 3:58
@James: The frameworks on which OS X (and, to a degree, iOS) are based come from NeXTSTEP, which used Objective-C. Language choice was not as cut and dried back in the 80s. (And on a personal note, I'm glad; Objective-C is much nicer than Java or C++. :) ) –  mipadi Dec 4 '12 at 16:04

In my opinion, there is absolutely nothing going for the success of the Objective C other than the mega-hit status of the iOS platform. Having been around for ages, the language at 26 is probably older than many participants who program it. It did have a circle of faithful followers, but their ranks seldom crossed the single-digit percentage milestone. Dozens of other languages have achieved comparable measure of fame at one time or the other. ...But then came iOS, and everything has changed.

I learned enough of the language to get a golden badge in it on Stack Overflow, and I can tell you with certainty that there is absolutely nothing in the language itself that has been suddenly "rediscovered" by the community. Despite offering a big step-up from "plain" C, Objective C remains a language of the past to a large extent. Advanced concepts found in many modern languages, such as generic programming, async/await, yield return/break, and so on, did not make it into the Objective C. Lambdas (AKA blocks) did make it into the language as a recent addition, but lack of generics makes their syntax a bit heavy.

I believe that were it not for iPhone, the language would be condemned to a niche status, where it lingered for decades before becoming the pass into the exciting world of iOS programming (and an elusive promise of monetizing your work that came with it).

share|improve this answer
Generics aren't really that necessary for Objective-C, since it's dynamically typed. I guess one's like or dislike of Objective-C stems from one's background; Objective-C was one of the first languages I learned, and I love it—I think the marriage of C and Smalltalk is lovely. –  mipadi Dec 4 '12 at 16:06
@mipadi Don't get me wrong, I am not saying that the language is somehow "bad": apart from the absolutely awful syntax of message passing, I find absolutely nothing wrong with it. However, I see features in other "competing" languages that I wish were there in Objective C, but they are not. I am not saying that the language stopped progressing, either: from ARC to the new array/dictionary syntax, there have been great changes that make the language more usable. None of these additions, however, is new: other languages have had these features for a long time. –  dasblinkenlight Dec 4 '12 at 16:18
Actually, blocks are an addition to the underlying C. –  mouviciel Jan 19 '14 at 19:51

The shortest, easiest answer is iOS. In other words to developer apps for iPhone, iPad and iTouch the most expedient route is learn Objective C and use Apple's tools such as XCode which is free once you pay $99 for the right to develop and sell iPhone apps.

No iPhone popularity, no Objective C popularity IMHO.

That being said, I rather like Objective C in all it's quirkiness.

share|improve this answer

If you have a look at Objective-C you'll know that Objective-C is the main programming language used by Apple for the OS X and iOS operating systems and their respective APIs, Cocoa and Cocoa Touch. Applications for Apple products, mostly iPad, iPhone & Mac are developed using Objective-C. Since these products share majority of the market space next to Google's Android platfrom (excluding mac systems, which is primarily a desktop OS), more & more applications are developed for these products. And the usage of Objective-c is growing day by day.

share|improve this answer

Objective-C is, in a sentence, the programming language used to build applications on Apple platforms, including the iPhone and iPad. Your graph coincides nicely with the rise of the iPhone and iPad among end users. There is no other language available for iOS; programs not written in Obj-C, even if they run on the hardware, will not be accepted by Apple for download from the Apple Store. So, if you want to program on the most popular single mobile platform in existence, you program in Obj-C.

Java/C#/C++ didn't have the same boost (or to the same degree) that Obj-C did because those languages were already popular with the "open-architecture" community (those programming for platforms other than Apple's; before the iPod rocketed Apple back into relevance, its computers were only 5% of the market share of personal computing devices). Just last year, Java, C, and C++ in that order were the top 3 languages:

  • Java is #2 on mobile devices behind Obj-C, and has a sizeable chunk of the Internet, with JSP/Servlets being a popular code component of web stacks (especially Linux-based stacks such as JOLT/LAMJ).
  • C is the grandaddy of them all; it's one step from assembler, and as such there's a compiler that'll get you from C onto pretty much any chip ever made, including the ones behind most of the game consoles all the way back to the Sega Master and 8-bit Nintendo systems. This close-to-the-metal approach is also key for performance-critical applications like device drivers, kernels, graphics, etc.
  • C++ is "C one better", and like its predecessor is highly standardized and will compile onto almost any chip ever made, but also usually requires a specific runtime or library set that was targeted. As such it's not quite as portable, but you see a lot of desktop applications, including PC games, written in C++ and targeting either the Windows or Linux runtimes.

Compared to these pedigrees, Objective-C's is extremely limited; it was developed in the early '80s as a thin layer of SmallTalk-based object-oriented features over otherwise ANSI-compliant C, and picked up by Steve Jobs' new startup after leaving Apple, NeXT. It didn't see real adoption into a major platform until Jobs went back to Apple (bringing NeXT with him), and subsequently used NeXT's OpenStep and AppKit (and thus the Objective-C language) to build OSX. The language saw stirrings in the consciousness of the developer community with the launch of OSX Leopard (which targeted Intel CPUs), and then its rise to global prominence with the launch of the iPhone, and the subsequent "there's an app for that" commercials showing all the things it could do. That sparked huge consumer demand, in turn fueling demand for this language that prior to 2009 seemed destined for obscurity among a handful of Mac developers, most of them working for Apple.

share|improve this answer

Older question but this is pretty decisive

from Wikimedia commons: http://commons.wikimedia.org/wiki/File:IPhone_sales_per_quarter_simple.svg

Blue: Original iPhone
Green: iPhone 3G
Orange: iPhone 3GS
Magenta: iPhone 4

There are many other graphs showing similar trends in ipad and mac sales.

share|improve this answer

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