Objective-C Overtakes C++, But C Is Number One
mikejuk writes "Although the TIOBE Index has its shortcomings, the finding that Objective-C has overtaken C++ is reiterated in the open source Transparent Language Popularity Index. The reason is, of course, that Objective-C is the language you have to use to create iOS applications — and as iPads and iPhones have risen in popularity, so has Objective-C. If you look at the raw charts then you can see that C++ has been in decline since about 2005 and Objective-C has shot up to overtake it with amazing growth. But the two charts are on different scales: if you plot both on the same chart, you can see that rather than rocketing up, Objective-C has just crawled its way past, and it is as much to do with the decline of C++. It simply hasn't reached the popularity of C++ in its heyday before 2005. However the real story is that C, a raw machine independent assembler-like language, with no pretense to be object oriented or sophisticated, has beaten all three of the object oriented heavy weights — Java, C++ and Objective C. Yes C is number one (and a close second in the transparent index)."
But that's just my opinion.
sorry but html and javascript is the future.. it must be true because all the kids just out of college say so.
fp!
However the real story is that C, a raw machine independent assembler-like language, with no pretense to be object oriented or sophisticated, has beaten all three of the object oriented heavy weights
This sounds like it was written by someone who doesn't understand C. You can write object orientated code in C. You don't always need the language to hold your hand. And C is NOT assembler-like language. Not even close.
And as far as sophisticated code, I guess the author doesn't consider operating systems or most system programming to be sophisticated.
I count about 100 more possible headlines of the form "A overtakes B". Must we see them all here?
C's philosophy doesn't integrate well with Ayn Rand's.
There's no -1 for "I don't get it."
You can write reusable functional code in any language .... but you CAN'T write object oriented with it.
Java's apparent decline seems to be because of the financial slump. Where the number of new enterprise projects using Java has reduced. Most of this work was deferred and is starting to pick up again (at least as far as I can see). Some of the apparent 'decline' in languages is due to the introduction of new languages. The absolute number of projects using any language may be increasing but with new languages being introduced the proportion for any one language becomes diluted.
That said, C deserves to be right up there because it is still completely relevant as a 'lingua franca' (common language) for talking to hardware or operating systems. It also has the same benefits of Java in that the language is small and the convention is to place complexity in the libraries rather than as arbitrarily added keywords. This is not very exciting for many Slashdotters but for regular joes it allows them to get things done while working on huge, long-term projects (where the set of staff that start the project aren't necessarily those that finish it) where being able to follow other people's code is critical. This doesn't make for good press or excitement in the blogosphere or conference circuit but these two stalwarts pretty much let you solve any problem in any computing environment (portability matters!).
"Objective-C is the language you have to use to create iOS applications"
There are plenty of games and other iOS applications that are written in C and C++.
Yes, there is a little bit of "glue" code required for interaction with Apple APIs, but the implication here is that you can't use another language write the majority of an iOS Application, which is wrong.
What they don't tell you is C++ (NDK) is used in Most Android games or else it will be slow as hell. Google doesn't want to tell you that because they want you to use Java. Of course C,C++, Objective C > Java.
C is hardly in demand at all in the job market compared to other languages if you check monster.com and dice. I am not saying it is not important as operating systems tend to be written in it, but most demand is not to write operating systems or do very low level things.
Java was tops the last time I looked followed by C#.net, with php third but I would not be surprised if .NET overcame Java and php is becoming more and more popular.
Any other measure of importance is subjective and biased as every nerd has his opinion on why his tastes are better. But job openings and demand truly show what the market wants and is willing to pay which equals value/importance. Fact is I saw only one C programming position advertised in the last 7 years. .
http://saveie6.com/
As much as I like languages like Perl and Java, where memory is managed for you (kind of), there will always be a great need for languages that brings programmers as close as necessary to the workings of the machine itself.
What? What idiot posted that garbage? Oh, timothy...
Understood.
1) The one stated in the summary - the C++ vs. Objective C graph is on a very small Y axis that exaggerates the differences.
2) They've included Javascript, apparently in it's seldom-used server-side form, to intimate its popularity is going down (AFAICT they don't bother to mention this differentiation).
3) In their 2011 vs 2012 table, they indicate a language's change in table rank using arrows - one point in change equals one arrow. Visually that makes it look like some languages (e.g. Visual Basic .NET) are exploding when in reality it's just that lesser-used languages need smaller increases in usage to make it look like they're taking off. VB .NET is in 15th place - the language in 10th place, Ruby, only has 1.77% penetration.
#DeleteChrome
I have to wonder if the world is ready to move back to a simpler time. So much of programming these days involves building "infrastructure" with all the industry approved buzzwords (factories, patterns, aspects, reuse, blah, blah, blah); sometimes it's better to just bang out the application and move on.
I don't get it. If you try searching for jobs programming in C, you'll find that almost everything that matches the search is Objective C, C++, or C# (or, on some poorly run job sites,a C++ or C# job where the punctuation got lost and it's displayed as C). Sometimes a job will say C/C++. C is rare as hen's teeth except for embedded development and there aren't *that* many jobs in embedded development.
I just went to monster.com and searched for C. What I found starting at the top was:
-- C++ job that lost the punctuation
-- Objective-C
-- C# job that lost the punctuation
-- C/C++
-- Objective-C
-- C/C++, C#
-- C/C++
-- Objective-C
etc. The first C job was item 14 (and is embedded). The next C job, ignoring the false hits on such things as A B C, was item 24 (also embedded), and C wasn't the main skill required. So how in the world can C be number one?
if u aint using objective-c then u a programming chump
Wherefore art thou Dennis Ritchie?
Ummm, Jon, aren't you supposed to be dead...? - Otter(3800)
Power and syntax of C, safety of C++, useful compiler errors like Java. NO HEADER FILES!!!
Come to the C-side
C you Soon
I GOT MODDED DOWN?????
Proof that political correctness is overrunning Slashdot. This makes my blood pressure rise so much I have to take another pill! WHERE IS OUR FREEDOM? Taken by Barack Hussein, I believe.
C is number one...hundred, in Roman numerals, that is. Hence the popularity, it's the Benjamin Franklin of programming languages, and as we all know, it's all about the Benjamins!
#include <stdio.h>
int main()
{
printf( "suck my wind, bitches.\n" );
return 0;
}
- from "The C Programming Language", 2012 edition
Shame D is moving so slowly.
My guess is that C, besides being a good low-level language, is popular because it is the most portable.
C code runs on any platform, the first thing people do when they make a new platform is create a C compiler. If your library is written in C, then you can write bindings for it from practically any language. Then the Ruby guys can be just as happy as the Java guys.
Probably more importantly, recently, if you want to write an app for both iPhone and Android, you can just code the backend in C, and all you have to do is create a GUI on top for each platform. You can't even write standard Java on either platform.
"First they came for the slanderers and i said nothing."
All languages come with compromises, and it's still a matter of selecting the one that gets a particular task done in an optimal manner given all the parameters of getting the specific task done with whatever compromises are allowed, the skills available, using the program, and maintaining it going forward.
And that's not something to be settled by a popularity contest.
I rarely read replies, it's my opinion and if you thought about your opinion a little more, I'm OK with that.
If you are looking for an imperative language that is flexible and lets you treat memory as memory, then C is the best language out there.
If you're looking for a language that abstracts all those computer bits out, and makes your job as easy as possible, you might want Ruby, C#, Prolog, or something else. But C lets you get a good feel for what your code is actually doing on the computer.
"First they came for the slanderers and i said nothing."
deal with it.
retvalue = [object methodname]; // YUCK YUCK YUCK
K&R (also known as the bible) is only a couple of hundred pages long. C is a simple language. You can read C code and not have to worry about strange gotchas. C++, on the other hand, not so much ... you can never be sure someone hasn't overloaded something beyond recognition. The rules of other languages are also way complicated and make it hard to understand what's going on.
You can write more concise code with other languages but the plethora of rules means that you will have more trouble understanding that code. Anyway, you can totally write fully structured code in C and that takes away many of the supposed advantages of other languages.
The only major language that is clearly better than C, in the clarity and simplicity department, is Python. The code is easy to read and doesn't have a lot of complex rules that will cause confusion.
So Java is used by the financial institutions and we know that the whole finance industry is evil and crooked. That makes Java the tool of the evil crooks and therefore Java is evil and crooked by association.
After all, it's always taking memory that I've allocated by my hard work and saying that it's for my "convenience".
And Java is now an Oracle product, too.
Evil++
Who says it has overtaken anything? For who? Where I code, we all use good 'ol C++. No matter how many times we tried to adopt Obj-C it just failed. Unless we wanted to write an iPad/iPhone app. Is this actually posted by an Apple shill? That would make more sense to me.
I have never found a non-Apple task that works better in Obj-C than a C/C++ setup.
If the only way you can accept an assertion is by faith, then you are conceding that it can't be taken on its own merits
This survey is skewed by iOS developers trowelling out tons of appstore apps of questionable utility.
Kriston
Monster.com shows Objective-C tying with FORTRAN for a very small number of jobs: 5, in the entire Denver job market.
Not something I am going to base any career decision on for now.
Mikejuk obviously has no experience programming in assembler and/or C. Not all languages that are not "object oriented" are raw or assembler languages.
C is a simple, well defined language that allows almost any program to be written - look at its ubiquity and persistent popularity for writing a very wide range of programs. It is far removed from the hardware details that assembler languages deal with (CPU registers and instruction sets, in particular). Where it not so, C programs wouldn't enjoy the high degree of portability that they do.
It is hard to guess what Mikejuk imagines a "sophisticated" language to be. Perhaps one that wears tuxedos, drinks martinis with the upper crust at swish affairs and puts on posh manners and accents to impress the debutantes? Or is she just trying to say that C isn't complicated, in a sophisticated manner? In which case, it's a feature, not a fault.
Since when?
Arguably, the new 2011 standard could push C++ back to number 1, as it addresses a lot of the usual weaknesses of C++ (better memory management, type inference, threading, etc.). But I suppose it depends on how many people are willing to learn and code to the new standard.
Well, it IS a machine-independent assembly-like language. Use the -S or 'save temps' switch on GCC, and see the ASM code it generates. Don't forget your -O2 or -O3 switch, otherwise the code is really bad.
Please, please, slashdotters, please stop these tiobe index horserace stories.
I'm begging you, they are so damn foolish, they bother me enough to post about it.
Keyword count on the www pages is not a precuse measure of real world usage. And looking at day to day changes in such an index is extracting data from noise.
The first language I learnt in Highschool was Hypertalk, more of a HTML forerunner (it was 1990) than a real programming language.
when I got to Uni and was studing Engineering they taught us C. When I started my Computing course the first language they taught us was Smalltalk, if you start talking about real OO languages you cannot ignore Smalltalk
Objective-C is really a bastard child of C and Smalltalk, and this messaging behaviour really flows back to Smalltalk's influence on the language.
I hated Smalltalk back then, as did most of my classmates, but I guess it has made Objective-C a but more straightforward for me as I have played in a language that communicates like that.
I have heard from my Programming friends (mostly Games programmers) that C++ is losing traction. C# is taking it's place (Not a massive departure syntax wise, and C# is used by 3rd party suites like Unity) and Objective-C is gaining popularity, even if it is from a GUI design point of view.
I'm not sure if I believe that Objective-C has overtaken C++, but the trend is there.
Leg Godt!
Indeed there was OO before C++. I first learned it in a language called CLU. But the language itself was not really mature. I just took the object abstraction idea back to assembly language when I abandoned CLU.
now we need to go OSS in diesel cars
No bloody sharp, no bloody postincrement, and certainly no bloody "objective". Just C. Accept no substitutes.
generation of future C-programmer-turned-C++-programmer are being trained to think they know the one true way to code. They,too, someday, will try out C++ for its standard libraries and then will end up writing the most awful C++ code anyone has to read. And until their brain gets rewired for object-oriented thinking, they'll be laughing off everyone telling them that the garbage they write has to be actually readable by someone or it's pretty much useless. They will scoff and they will feel self-righteous. And then someday they will realize that they themselves can no longer read what they wrote. They will start thinking of ways to program in a way that is not just some throw-away code readable by a very small group of people. And then they will start coming up with ideas... the way they came up with ideas the first time they learned to program (only to later on realize that it's all been described in standard textbooks and that they didn't really come up with anything innovative). This time around it will be no different when after all the scoffing and all the flaming they'll pick up a copy of the 4 horsemen, read through it and nod along thinking to themselves "why haven't I read this before?" It has all happened before. It will all happen again.
Any guest worker system is indistinguishable from indentured servitude.
TIOBE is essentially just a big troll site. Their methodology is so far beyond unscientific it's not even wrong. Here is the result of my own unscientific poll:
C: About 234,000,000 results
Objective-C: About 41,400,000 results
See, C++ dominates Objective-C by more than a factor of five. You can take that to the bank. You're welcome.
When all you have is a hammer, every problem starts to look like a thumb.
Sure it *can* be done, but it fucking sucks. Compare programming Qt and GTK and you'll see why.
(Not that OOP is the be-all and end-all of programming. Frankly, it sucks for many problems, but GUI toolkits is one place where it's very useful -- mainly because of polymorphism.)
I have written apps in C++, Objective-C, and others such as C#. I have always wound up using C in those apps, too. All of them make provisions for its use. The reason I used the other languages was the tools associated with the development environments such as Xcode and Visual Studio. For example, getting to the iOS APIs is not as easy for me just using C, but some things are easier for me to write in C, and the wrappers are straightforward.
Therefore, the survey might include usage such as mine, which could tag every app I ever wrote as a 'C' app. FWIW
Ayn Rand ended her life on Medicare. Which is kind of ironic don't you think?
Undetectable Steganography? Yep, there's an app fo
From their own description:
emphasis in the original
I think it's fair to say that if you take TIOBE for what it's worth, there's a lot to learn about how programming languages wax and wane in popularity over the years. Surely that's worth something.
On slashdot, it's a point of pride not to RTFA. Also it's much more interesting to go from Objective-C to Objectiv-isim to the spectrum of primate behaviour. The language popularity thing is just something for people who like talking about football ladders.
What we need now is another tenuosly linked meme...In my copy of 1984 there is a reference to a fictional document that describes the different languages spoken by various groups. One of those languages is 'C' - the language of technocrats. So it follows that if using objective-C makes one a Randian, I guess my long time use of 'C' means I'm an Orwellian technocrat. The odd thing is, I do believe the public service should be staffed with experts who are unaffraid to "speak truth to power".
And did you exchange a walk on part in the war for a lead role in a cage? - Pink Floyd.
Hopefully this will bring more developers to GNUStep / Etoile.
I run: Windows, OS X, Linux, FreeBSD. Just because you have a hammer, doesn't mean everything is a nail.
Palin C? I much prefer to code in Monty Python.
Sarah's C sounds betters...
Everything I write is lies, read between the lines.
This is just another one of those 'Jim floats -> Jim is made of wood' matters. Don't know how so many people can be so daft not to see that the language popularity indice is simply created from the number of internet searches on the matter. Of course Objective-C will score high because 10 people trying to figure out just how the hell to use the bolloks will generate as many searches on Objective-C in a single month as a 10000 people that knows how to program C++ does on the latter in the same period. I write C++ 9 hours a day 289 days a year and probably perform a search related to it once a month. So the indice adds 2 and 2 and comes up with 5. Too many of this kind of stupidity going on in the world really.
Worst. Metric. Ever.
Using web searches? Seriously?
Given the sheer volume of code that will never, ever show up on a web search, the most they could hope to capture accurately is open source code. Which does not even come CLOSE to capturing the popularity of a language. The amount of commercial, closed-source code that is just ignored by this metric is disgusting to the point it makes it completely irrelevant.
At most, it shows what is trendy in the open source world. But having worked on a number of proprietary, multi-million line ode projects, that never see the light of a search engine, I can tell you're some languages are still as popular as ever in the corporate world. For example I have not noticed any significant decline in end for C++ programmers. Nor have I seen. Big uptick in places hiring for Objective-C. At least, not that are actually willing to pay living wage in big city.
And if not to try and inform people where to spend their 'learning time' for bet benefit (ie. to get the best job) then what is the point of such rankings?
http://www.bkent.net/Doc/darxrp.htm ... the value of this book resides in its critical, probing approach to the difficulties of modeling reality in typical information systems... it is very well written and should prove both enjoyable and enlightening to a careful reader. -ACM Computing Reviews, August 1980"
"Data and Reality illustrates extensively the pitfalls of any simplistic attempts to capture reality as data in the sense of today's database systems.
And also:
http://conferences.idealliance.org/extreme/html/2003/Kent01/EML2003Kent01.html
"The identity problem is intractable. To shed light on the problem, which currently is a swirl of interlocking problems that tend to get tumbled together in any discussion, we separate out the various issues so they can be rationally addressed one at a time as much as possible. We explore various aspects of the problem, pick one aspect to focus on, pose an idealized theoretical solution, and then explore the factors rendering this solution impractical. The success of this endeavor depends on our agreement that the selected aspect is a good one to focus on, and that the idealized solution represents a desirable target to try to approximate as well as we can. If we achieve consensus here, then we at least have a unifying framework for coordinating the various partial solutions to fragments of the problem. "
I thought you were going to also make a point about non-Western cultures often being less "object oriented" in their language learning (and perhaps more "relation-oriented" which I've heard in the past)...
Also, Alan Kay, who coined the term "object oriented" for Smalltalk, and said C++ was not what he had in mind, suggested later he should have used "message oriented", since message sending and processing is really at the heart of Smalltalk.
A 21st century issue: the irony of technologies of abundance in the hands of those still thinking in terms of scarcity.
The godfather of C, Herbert Schildt, is smiling today. Maybe he'll take the Windows 95 chapter out of his C book and release a new edition!
He also has an asshole, As do I. I just try not to emulate mine as much as he does.
So he can't figure out how to write clean C++ code. Fine. So he prefers C - even better. Whatever. Not sure why this matters.
I'll stick to Eiffel.. thank you very much ;-)
[RIAA] says its concern is artists. That's true, in just the sense that a cattle rancher is concerned about its cattle.
Unless you are doing string or memory manipulation in c, then yes, you can use them. In all other languages it should be banned. I remember tutting when i read that c# had caved in to the c programmers and included it. There is just no need because 1) it is not obvious (eg, _month[0]="Jan" or things like that). 2)Use an iterator, that's what they are there for.
Of course that is just my opinion.
I have excellent Karma and I am not afraid to Troll it.
And for that matter, don't get me started on Objective C either. Worst of both worlds.
I have excellent Karma and I am not afraid to Troll it.
The competition between Microsoft and Apple is really starting to look like The Tortoise and The Hare.
Apple suffered so many humiliating defeats back in the day.
Now, they are dominating everything beyond desktop PCs.
Even Objective C is making a comeback.
Apple is really having the last laugh.
Note, I'm a linux user and not particularly a fanboy of either company.
Well, C is one step above assembler but not much more than that. Most of its commands and operations map onto assembly quite nicely (x++ to increment a variable, etc) and outside of the libraries, there is not much "high level" functionality built into it. Its portable as most of it is "lowest common denominator" stuff.
I have excellent Karma and I am not afraid to Troll it.
What is wrong with header files?
Helps keep my code nice and clean.
Stuck in your ways hey? There's nothing wrong with that syntax, it's just unfamiliar to you.
revalue = object.methodname(); would be as yucky to a SmallTalk or Objective C programmer who had never used anything else. Personally, I used to write PyObjC code, so I barely see the difference anymore.
There's a C compiler for almost every platform. And most of the compilers/interpreters for other languages are written in C.
Coder's Stone: The programming language quick ref for iPad
I'm confused, how is that much different than OOP in C++, and grabbing a value from an object's accessor function?
Purely out of curiosity, I mean
Until hardware supports C++/Java/C# etc... at a native level, e.g. that compilers don't convert to C or the higher level language isn't based/written in C, then you'll start to see C decline.... rapidly.
Obj-C and iOS show this as an example. iOS is Obj-C compiled/processed at the h/w level.
return 42-6*7;
Better do another code review before running that. In some locales, that divides by 0 and returns NAU.
So are you saying it takes a fifth to do Forth?
" However the real story is that C, a raw machine independent assembler-like language..."
Okay...it is now obvious to me that you have never used C before...and probably not C++ either. I'm still scratching my head about that "machine independent" part as well. I would NOT say that C is machine independent as it compiles down to machine code...and machines are notoriously fickle about their machine code. Maybe what you meant to say was that there are standards-compliant C compilers available for most (maybe all?...probably not *all*) platforms out there.
And what exactly do you mean by "raw?" That one's got me scratching my head as well.
Anyway, I expect C to be around for a very long time. Like Java, html, javascript, etc., it has its place...
haha I love the but... do you?
I've programmed all of them professionally with multi-million line code bases and frankly... in recent years the extensions to C have made it a far more sophisticated language than ever. With extensions like variable length arrays in structs to allow for easier construction of classes (yes, they don't call them that, but they might as well) and things that just feel like hacked in RTTI, C has grown VERY sophisticated and even in some cases object-orientedish.
C++ has become a bit of a disaster. They have added ridiculous features like Lambas which may my rear end itch. They're a kinda neat feature in many ways, but I feel they will almost certainly be abused as opposed to used. It will attract JavaScript style programming which is painful to look at. I had hoped they would have added constructs for things like functional programming, but instead they made classes for that. The real problem with C++ in recent times is that the standard C++ library is a cludge of template on template on template. Also, with many companies I've encountered, we don't know how to treat the licensing for the templates when using GPL/LGPL implementations. It seems that since you're not linking to them so much as basing your code on them, even LGPL would require you to open source your code. It's a bit of a mess. So, we use Qt in most cases since it does everything the Standard C++ libraries do but without the licensing questions.
Objective-C is the least understood by the author of the article. There are certainly thousands of open source iPhone and Mac apps coming along, but it's VERY rare that a program is written in that language as opposed to wrapped in it. You have to code Objective-C to simply create an app, after that, you can use C, C++ or just about anything else (thank to SWIG) to write the rest of your app. If you look at the Mono.NET stuff which is REALLY popular as it's as easy as it gets, it compiles C# or CIL into Objective-C which is then compiled natively to the device. So, this can easily be considered writing in Objective-C, but in most circumstances, it would account for 1% or less of the actual program. The rest in C++, C# or C.
Now, I would be willing to believe that C# is quickly taking a high position in the open source since any C++ programmer can code it with almost no experience and it works on every platform known to man. Mac, Windows, Linux, iPhone, Android, Windows Phone... I don't know but maybe even Symbian. I even heard there's a Java back-end for it somewhere which could be used to make an app for BlackBerry... who the hell knows why... but there you have it. Oh.. and thanks to Unity3D, there's GOBS of C# apps.
I would never choose C++ because of it's "OO" features (classes and inheritance). I use it because of templates and operator overloading making it easy to write a lot of generic code which the compiler can inline and optimize for me. You could do similar stuff in C with macros but gets extremely clunky and it is very hard to get type safe.
The whole concept of OO programming is totally overrated. I like to use "interfaces" as defined in Java, but I must say I really dislike inheritance. In C++ you can be inspired both from Java and functional languages like ML. And you can do it semi low-level: You write it high-level but everything will become very simple and effective when compiled due to compiler optimization. Something you can not do with a language like Java - and can't do easily in C.
I'm not an iPerson, but I notice that most Android apps are simply ports of web applications. In that use case, simply making the original web site mobile-friendly is a better use of resources. I would predict that the fascination with mobile apps will go away when people realize this, and then Objective C will be a much less popular skill.