Objective-C Enters Top Ten In Language Popularity
bonch writes "Objective-C has entered the top 10 of the Tiobe Programming Community Index. Last year, it was at #39. The huge jump is attributed to its use in iPhone and iPad development. C, of which Objective-C is a strict superset, has reclaimed the #1 spot from Java, which slides to #2. Tiobe also explains how it determines its rankings."
Don't they just google it like the rest of us?
Deleted
There is one popular computing platform that requires all programs to be written in Objective-C. There is another popular computing platform that requires all programs to be written in one of the many languages that compile to verifiably type-safe CLR bytecode, but Objective-C is not one of those languages. So if I want to develop an application for both of these platforms, in what language should I express the business logic of the application so that it can be automatically translated into Objective-C and into a CLR-friendly language?
They use search engines to determine this?
Why does this seem odd to me... or even misguided?
Embedded Systems. There's lots of work there. And we're getting more valuable all the time, because Universities are increasingly teaching C#, Java, etc. The number of people out there who can program a microprocessor right down to the metal is dropping each year.
Unfortunately the number of projects that require people who can program right down to the metal has also been dropping each year.
They're everywhere! Sure, lots of people say they're writing C++ code (or, C code wrapped in C++), or application development. A lot of C development is OSS too - there's paid work in that area as well. There's TONS of maintenance work, especially in specialized industry controls, monitoring, whatever.
In other words, it's all around you - just shrouded in mystery. Not many people advertise new C development, but oftentimes it is just a another tool in a developer's arsenal.
I said no... but I missed and it came out yes.
From this I conclude that the results are meaningless. At best it shows that Objective-C programming has resulted in more discussions and questions. Whether it is "popular" or not is a bit more subjective.
of all the posts on Slashdot saying how much it sucks.
On the higher end platforms, this is true. Projects based on ARM, PowerPC, Infineon Tri-Core, etc projects are definately using a higher level of abstraction, with more developers programming at those levels, and a small number working in device drivers and board-support packages. \ But the flipside is that intellegence is being distributed into lots of devices (automotive being the best example, but also appliances, utility meters, medical devices, etc). Most of these run on small, self-contained micros which cost only a few dollars. C is far and away the language of choice on these platforms. Developers with the knowledge to allow you to get every last drop of performance out of a $2.37 micro, so you don't have to buy the $2.52 one, are in great demand. When you build 100,000 of something, you can afford some up-front development cost to save $.15
If Tiobe's website is to be believed, the #1 programming language right now is Whitespace.
Dislike the Electoral College? Lobby your state to join the National Popular Vote Interstate Compact.
Where are the C development jobs? I have strong C skills, but everything is Java/C++/PHP/Ruby/worse.
Worse? Fortran? Cobol? Ada?
Dare I say, Intercal?
Brainfuck?!
The enemies of Democracy are
Not a blog? Doing a couple of dozen google searches and typing the numbers into Excel doesn't exactly strike me as hard-core Journalism...
Agreed. My first thought was, "Yay, I'm not the only idiot out there programming with VB!", but after reading that, it's more like, "Yay, I'm not the only idiot out there having problems coding with VB!"
All kidding aside, Objective-C isn't the sort of language people use because they want to. Rather, they use it because it's what Apple says they can use.
Back in the NeXT days, we used it because it was far better than anything else out there. But that was 20 years ago. Times have changed, and we have better programming languages available to us. Even with Objective-C 2.0, it's still somewhat of a relic.
So it's popularity isn't natural. It's almost fully artificial, based upon the restricted nature of Apple's platforms, especially the mobile platforms where they've literally "outlawed" everything else.
Visual Cobol.
I've abandoned my search for truth; now I'm just looking for some useful delusions.
The reason Java and other languages are more prominent these days is because they are more suitable for most business requirements - reliability, scalability, portability etc. Unless an app has to hit the metal, or has hard speed / memory / CPU requirements, chances are C is not the right language to write in any more.
I think popular topic would mean popular language at least to some degree. Or for sure that it is a more used language as search results wouldn't discriminate preferences like actually enjoying the language. Neat to see and know, but wouldn't use it for any significant business related decisions is how I see it.
But they do count prime-time programming, which is always more popular than the other kinds.
After about two years programming Obj-C/Cocoa for iPhone apps, I can't believe that this ancient experiment in OOP by an amateur compiler writer is still around. Even though it is nominally a compiled language, all the calls to methods as well as accesses to class properties are interpreted -- the name of the method & its args (args have names) is looked up in a hash table by runtime interpreter to find the address, then to push args and call it, every time you invoke it or access a property. The Obj-C creator basically didn't know how to code linker-loader address binding and so he just left that part for the runtime to decode on millions of end users CPUs from there on. He also didn't know about name mangling, and left that part of his job for the future programmers to do manually (method names and args are explicitly named, so you end up with arg named calling methods like [obj method:arg1 count:count]). For adding properties to a class you have enter the same info in triplicate (variable delcaratiom, property declaratiom, getter/setter declaration), so there is lots of cut & paste, doing by hand the job that compiler should have been doing. The syntax is very clunky, inelegant, uneconomical on programmer's time e.g. requiring lot's of jumping back and forth to match/complete nested square brackets, again simplifying compiler writer's job at the expense of busy work for countless programmers from there on.
In addition to performance & narrow technical issues, the worst fundamental flaw of Obj-C is that the creator didn't understand the value of name space partitioning in OOP (the key tool for building layers of abstraction), so much of that's left largely to programmers, which in Cocoa (API, like win32) resulted in mind-numbing hyper-verbosity, with each class and method names dragging huge repetitive prefixes, with each name spelling out explicitly its whole ancestry back to the stone age. While the Xcode editor is doing heoric efforts in trying to guess what you meant and offer auto-completion of the names as you type, that is the lesser half of the problem (you still end up doing lots of cut & paste of the Cocoa names). The main drawback is when trying to read or modify the code later -- even the simplest algorithm looks complex, any pattern specific to the task at hand is drowned in the mind-numbing sea of repetitive Cocoa verbiage.
In short, horrible language & API framework. Only someone who grew up with this and never knew anything better could love it. Of course, like everything Apple, buried under the idiotic Coca+Obj-C layer, there are gems of genius, especially the extremely well thought out functionality and high performance graphics & animation engines.
This.
Objective-C has a lot of buzz, since Apple has a lot of buzz. That doesn't mean it is getting used in a lot of projects, just that a lot of people are talking about it. Just because there isn't a lot of chatter online about something, doesn't mean it isn't used.
For example I suspect C++ is actually much higher. Why? Because it is the language of video games by and large. Pretty much any PC and Xbox 360 game are written in C++, usually using Visual Studio. However you don't see a lot of chatter about it online since it is being done professionally and it just kind of an assumed thing in the games industry.
Well, that makes for a rather large amount of apps out there, even if they don't get talked about all that much.
Likewise, though I suspect C is high up on the list due to embedded applications, I think that their data on it is flawed. The reason they see so much is likely Linux, which of course uses a lot of C. Fine, but Linux also gets talked about a lot online, since it is open source. So the amount of discussion it generates in relation to code is much higher than a commercial project.
In general their methods are rather flawed.
People always overestimate the number of other people that are like them in some way. You are interested in Javascript, so you overestimate how many other people it is important for.
I've programmed for 30 years; a few languages I've used a lot; many languages I've dabbled with. I've never once touched Javascript. I'm likely to underestimate how many people are program in Javascript.
... I value most than Tiobe's dummy ranking, is the popularity of tags in Stackoverflow.
Granted, it correlates more with questions asked by programmers (many of them beginners) than with jobs.
Anyway, you can see that also there "Objective-C" has a (surprising for me) high position (as well as "iPhone").
Learn Java if you enjoy solving the same business problems over and over again. Kernel programming is still C. Most "C++ jobs" neuter C++ down to the point you're really just using C with classes, easy to pick up if you know C.
I recently had lunch with a friend of mine who manages Java development. He's switching jobs because the company is switching to $10/hour Java coders, and he wants nothing to do with that. To the current business mindset, if the problem is best solved with Java, it's best solved from another country.
For some reason this isn't as much of a problem with C# (perhaps because there's so much less open source available in C#), but of course you're competing in a world labor market in any language, it's just a matter of degree.
Socialism: a lie told by totalitarians and believed by fools.
The whip and high heels.
Sorry to troll, but what exactly is a "strict superset"?
Well, the strict definition is that it's a superset, and it's not an identical set.
You probably want the non-strict definition which is "we haven't given up on compatibility with C, like the C++ folks did".
ARGH! Stop artificially inflating VB's results by using VB's name twice in a post!
Once you start despising the jerks, you become one.
Steve Jobs had enticed Xerox Parc people to Apple, then NeXT. So this methodology seemed advanced at the time. Also Objective-C was commercially supported while C++ was still basically an open-source hack in the mid-1980s. I was an independent NextStep developer. It was unclear what would win. But as usual cheap and open beat a language you had to buy.
:-), the new MacOS was NexTStep layered with old Mac APIs.
When NeXT took over Apple (oops I mean the other way around
A simple analogy:
"Strict superset" is to "superset" as ">" is to ">=".
Hey, there are a lot of people who prefer VB. Matter of fact, I'm not one.
I've never understood why Apple has such an obsession with Objective C. To me it really does seem like being different for the sake of being different.
After you use it for a while it grows on you substantially.
It's simply a different path than other languages have chosen, but it has a lot of power - like KVC observing of property changes on objects, or the way I can use categories to extend libraries I don't have code for.
And hands down Interface Builder is the most usable GUI development tool I have ever used, which stems directly from how Objective-C interacts with objects. In every other language I ended up abandoning GUI design tools to code UI by hand, but IB is a major partner in every iPhone/Mac UI I write.
Yes the syntax is verbose but so what? Modern editors (like XCode) code complete a lot of that typing for you. And in any programming, the actual coding is small compared to thinking about approaches to a problem - so in the end it's not that much different time-wise to actually produce working code.
On top of that though, I think there's an overall savings in time with really well thought out foundation libraries and language abilities that lead to faster coding over many other languages.
I've used a number of other languages really heavily, from Java to C++ to Scheme - and I think Objective-C in the end, is a really good language combined with very good tools from Apple.
I've never really seen the point in pining for other languages that do not philosophically match the platform you are targeting. When I was doing some Windows development I used C++ and the MFC. And though I could use other languages targeting the Mac or iPhone, I never much saw the point in doing so when learning the languages the core foundation libraries were written for gives you an insight into how they are likely built and meant to be used.
"There is more worth loving than we have strength to love." - Brian Jay Stanley
Surely, as an old C programmer, you rather intended to say:
I think any useful statistics on a programming language would have to include something on the amount of code written in it and project complexity.
I have a feeling that the popularity of a programming language is actually inversely proportional to the LOC needed for a given task - unless you get paid for LOC.
Lars T.
To the guy who modded me down from perfect to terrible Karma - Apple haters still suck
The chip vendors won't even send out a salesman if your projected volume is only 100k.
You must be exceptionally rude to them, I can't get them to stay away and our volume is sub-thousand.
A simple analogy:
"Strict superset" is to "superset" as ">" is to ">=".
Technically, yes. That's what it means in a math class or a logic class. But that's not what "strict" means in this context.
What it means here is that Objective-C is a superset, in the sense that any legal and correct C program is a legal and correct Objective-C program that does the same thing. So the "strict" adjective is technically redundant. The reason it isn't redundant in practice is because other languages (notably C++) are close enough to being supersets of C that they're called supersets of C, even though there are some C programs that are not valid in those languages, or that are valid but work differently.
So, basically, the situation is that "superset" in this context has been abused a little bit, applied to languages that are almost but not quite supersets. So for Objective-C we say it's a strict superset to mean that it actually is a superset.
Were the meaning what you suggested, the "strict" adjective would be unnecessary, because the only language that is a superset of C but not a strict superset (I'm using the terms correctly here, not loosely as they have been misapplied to C++, etc.) is C itself.
Of course, for any of the above to make sense, you also have to specify which version of C you're referring to, and you have to pick one that Objective-C actually is a superset of.
Note to ACs: I usually delete AC replies without reading them. If you want to talk to me, log in.
yeah - I'm betting that 90% of the Java questions are "Why the f*** is this happening?" and "Are the java team on drugs?" or "I'm using Netbeans for my java development and it just f***ed everything - are the Netbeans developers on the same drugs as the java devs?"
Hardly a measure of it's popularity.
dnuof eruc rof aixelsid
Why else would a business be hiring you except to solve their problems? Even kernel programming (the few places that require it) are still to address business problems. You might find yourself writing drivers for example.
I recently had lunch with a friend of mine who manages Java development. He's switching jobs because the company is switching to $10/hour Java coders, and he wants nothing to do with that. To the current business mindset, if the problem is best solved with Java, it's best solved from another country.
Someone hiring $10 hour coders will get exactly what they deserve. I used to work for a financial firm that set up a large Indian operation (something like 2000 employees). The theory was US programmers cost the company $300 a day, the Indian ones $90 a day. Of course the quality of code was atrocious, development times were far longer, the business knowledge was non-existent, staff were apathetic and and the turnover / retraining was high. So yeah on paper it looked cheap but they got shit for that. After 2 or 3 years of putting up with substandard quality, they sold their Indian operation but they still outsource stuff to India.
For some reason this isn't as much of a problem with C# (perhaps because there's so much less open source available in C#), but of course you're competing in a world labor market in any language, it's just a matter of degree.
C# and Java have their own way things of doing stuff but fundamentally they are interchangeable technologies. I expect the labour market for C# is weaker than Java but at the same time its not a niche language. My own opinion is there are plenty of C# and Java jobs out there and if you are in any way competent and can convey that competence during an interview you should have no problem finding a job.
I also wonder why the story is all about Objective C (complete with the obligatory Iphone and Ipad Slashvertisement), when obviously there are 9 other languages in the top 10. Do they all get a story too? Seems like Slashdot is becoming more and more like an Apple news site...