2011's Fastest Growing Language: Objective-C 356
mikejuk writes "Every January, it is traditional to compare the state of programming language usage as indicated by the TIOBE index. So what's up and what's down this year? The top language is still Java, but it's slowly falling in the percentages. Objective-C experienced the most growth, followed by C# and C. JavaScript climbed back into the top 10, displacing Ruby. Python and PHP experienced the biggest drops. If you like outside runners, then cheer for Lua and R, which have just entered the top 20. However, I have to wonder why Logo is in the top 20 as well. I know programming education is becoming important, but Logo?"
Objective-C growth (Score:5, Interesting)
Objective-C's growth in popularity coincides with the Flurry Analytics study [flurry.com] that showed most mobile developers targeting iOS, with support for Android dropping by a third over 2011. C# will probably continue to see increasing interest because of WinRT. Lua is unsurprising because of its popular use in games, and they just released 5.2 [lua.org] last December. What I find most interesting is that plain old C is set to overtake Java.
Of course, if you don't take the Tiobe rankings seriously [timbunce.org], than all of this is moot, but I guess it's something to talk about on a Friday.
Re: (Score:2)
C# will probably continue to see increasing interest because of WinRT.
Given that WinRT offers a choice of C++, C#/VB and JS, isn't not really a given.
Re:Objective-C growth (Score:5, Insightful)
If all that index does is count web pages that mention a language then isn't it more likely to be a measure of how many problems people are having with a language? Languages which "just work" would get fewer hits than those which don't.
Re:Objective-C growth (Score:5, Insightful)
It's a good hypothesis, but it's pretty easy to test. The TIOBE Index searches the top search engines for the name of the language, followed by the word programming, as a phrase. e.g. "BASIC programming", "C programming".
I've just searched Google for "Objective-C programming" and most of the results are related to language related books, web tutorials and other related resources. Not problems.
The guys at TIOBE perhaps aren't so stupid.
Re:Objective-C growth (Score:5, Insightful)
I'm not saying the list isn't accurate ... it's just that I can imagine too many plausible ways of skewing it.
eg. Book publishers might be looking at that list when they decide what books to publish each year. This creates a feedback loop where their own books push a language up the list.
Re:Objective-C growth (Score:5, Interesting)
Let's compare it to the number of unanswered questions on stackoverflow.com for various language tags:
c# 31971
java 28099
javascript 26978
php 26755
objective-c 11749
python 9078
c++ 8024
ruby 5080
C, Perl, Basic, Lisp, etc - none
Re:Objective-C growth (Score:4, Insightful)
Somehow, I trust your metric much, much more than any other "analystics" website - usually nothing more than a PR firm in disguise.
Issue with this metric too though (Score:5, Insightful)
StackOverflow is a great general purpose site, but was started by two guys VERY heavy into Microsoft and .Net technologies. As such, the C# guys jumped on it en masse, and so they are significantly over-represented here - there were already a lot of sites discussing Java and it takes time to migrate people over.
Objective-C users really had no other great public forums so StackOverflow quickly became a major hub for Objective-C information.
Re: (Score:3, Insightful)
Objective-C users really had no other great public forums so StackOverflow quickly became a major hub for Objective-C information.
And therein lies one of the main problems, StackOverflow is a Q&A site, not a programming forum. This doesn't help prevent the under educated masses from flooding the site with their *"PLZ TEH CODEZ!"* cancer and letting once active contributing users like me eventually begin to give up.
I know that this isn't exclusive to Objective-C developers at all, and I don't begrudge them for not having even the most rudimentary of programming skills, I begrudge them because they don't know how to ask a damn ques
Re:Objective-C growth (Score:4, Insightful)
The problem with this is that you're not considering the total number of questions per tag. The tags you said "none" for at the bottom are (1) not actually "none", and (2) not very popular tags.
Here is a full table with percentages, where you can see that there isn't much of a difference between languages with respect to the percentage of unanswered questions: (in order of ascending percentage)
Also, who's to say that Objective-C questions are the same level of difficulty as all of the others. Also not considered is the type of programmer who answers questions on Stack Overflow. Perhaps it's mostly professional C++ and C# developers (which would explain why there are lots of C# and C++ questions with a small percentage of unanswered questions) that mostly answer languages they know but occasionally answer some of the other languages that they may not know as well.
Re:Objective-C growth (Score:5, Insightful)
I think it reflects the activity in the language and the number of new, untrained programmers starting out on it.
Re:Objective-C growth (Score:5, Insightful)
Objective-C's growth in popularity coincides with the Flurry Analytics study [flurry.com] that showed most mobile developers targeting iOS, with support for Android dropping by a third over 2011.
The Flurry Analytics study is flawed in that it only counts devs using Flurry. As others have pointed out, most Android devs use the free Google Analytics. This biases the Flurry study towards iOS.
Re: (Score:3)
Re: (Score:3)
Lua does intern all strings, which has many, many nice benefits.
However, if you are dealing with hundreds of megabytes of strings that are being mutated a lot, then this interning process may be a performance problem. However, there are usually good solutions to these kinds of problems. Hop on over to the Lua mailing list [lua.org] or Lua SubReddit [reddit.com] and ask for advice. Many other languages often need high-perfomance byte string implementations [haskell.org] that for some situations.
C# (Score:5, Interesting)
How is the real story not that C# is 3rd up from 6th!
Re: (Score:3, Interesting)
Re: (Score:2)
Re:C# (Score:5, Insightful)
Re: (Score:2)
yes about as well as the political duopoly has for the US. can't wait!
Re:C# (Score:5, Informative)
Indeed this is so. You can also compile Objective-C using clang/llvm . See: http://clang.llvm.org/compatibility.html#objective-c [llvm.org] . The clang implementation is at feature parity with the Mac OS X 10.7 version of the language, and based on my limited understanding of some comments I've read in various announcements, supports some additional features as well. Use of those features requires the GNUStep Objective-C runtime (libobjc2), rather than the GCC runtime. A high degree of Cocoa compatibility is available using the GNUStep Base (Foundation) and GNUStep GUI (AppKit) libraries, for numerous Unix platforms as well as Windows. A version of CoreFoundation is also available which wraps GNUStep Base, with a rewrite coming very soon that implements CoreFoundation in plain C. Various other Cocoa and iOS-compatible libs are available in disparate states of implementation. As always, GNUStep could use more developers and more users. Companies wishing to port their MacOS software to other platforms are encouraged to investigate GNUStep; previous porting efforts have positively contributed to the project by discovering and reporting bugs and sometimes by providing direct improvements.
GNUStep was recently used to port the Mac-only racing game CoreBreach to Linux: ( http://corebreach.corecode.at/CoreBreach/About.html [corecode.at] ). Other visible examples of Cocoa/Objective-C applications ported to Linux from MacOS include the 'eggPlant' automated testing tool from TestPlant ( http://www.testplant.com/ [testplant.com] ), and plenty of previously Mac-only Free/Open-Source software such as Bean.app ( http://1.bp.blogspot.com/_2qH5zqXu7wQ/TRi6sNiNZjI/AAAAAAAAADM/i8RwqzQ6OYE/s1600/bean-gnome-theme.png [blogspot.com] ).
The parent is correct that you do not need Apple kit to develop in Objective-C. To work with most examples you will find, you will need Cocoa-compatible development libraries and tools, though. Interesting starting points include the Windows Installers, which include all of the components you would need to get started ( http://www.gnustep.org/experience/Windows.html [gnustep.org] ), or the GNUStep Core packages ( http://www.gnustep.org/resources/downloads.php [gnustep.org] ) for other platforms. The Étoilé Project http://etoileos.com/ [etoileos.com] is also interesting. Those of you in Europe who are interested and intend on attending FOSDEM should stop by and visit the talks and devroom sponsored by these projects.
Re:C# (Score:5, Insightful)
I suspect that both C# and Objective-C market share will only continue - probably even taking the top spots. Windows Phone 7 uses mainly C# and so will Metro apps on Windows 8. Frankly, it is a really good language and beautiful to work with. Likewise Objective-C is strong because of iOS and OS X. Java is slowly dropping from enterprise usage and is being replaced by C#.
Your argument about C# is spot-on on the client side, but I have yet to see any significant movement from Java to C# on the enterprise side. If anything, enterprises are continuing to build larger and larger installed bases of Java software that's further locking them in. In addition, I see a general distrust of Mono and a liking for Linux that biases them against C#.
Re: (Score:2)
I suspect your observation about the enterprise space is valid (and somewhat agrees with my observations in government/military enterprise deployments). However, the shift in percentages probably isn't based in migrations in existing deployments, enterprise or otherwise. Instead, I suspect that the overall space is becoming dominated by mobile devices, driving up the use numbers of the languages in that arena while other endeavors hold mostly stagnant. Hence, the shift in percentages.
Just a theory.
Re: (Score:3)
Where on the server side have you looked? certainly for server side web application development C#/ASP.NET is gaining ground - you only have to look at job listings where there's rarely a Java job in sight, but hundreds of ASP.NET jobs. I think Java is still important, and still my preferred option on some projects, but it's definitely been losing ground quite rapidly on both server and client side for quite some time now.
I agree people aren't hosting on Linux with mono though. It's all Windows/IIS.
People j
Re:C# (Score:5, Interesting)
Java is slowly dropping from enterprise usage and is being replaced by C#.
Really? Show me where C# is slowly replacing Java in the enterprise? On the server side Java has no competition. If C# is replacing Java then that would mean companies are also replacing UNIX with Windows as it's the only platform that supports C# (forget Mono). That's definitely not happening.
Re: (Score:3, Interesting)
If C# is replacing Java then that would mean companies are also replacing UNIX with Windows as it's the only platform that supports C# (forget Mono). That's definitely not happening.
That is definitely happening! Maybe not where you are, but I'm a consultant that gets to see a wide range of corporations, and everywhere I go I see NetWare and UNIX getting replaced with Windows. It's cheaper than either of those options, and having a single OS family across all servers is a huge win for support and training costs.
The days when you had to have a "big iron" UNIX box to be able to handle an enterprise application workload are over. You can get a Windows compatible server with more CPU cores
Re:C# (Score:4, Interesting)
"I see NetWare and UNIX getting replaced with Windows. It's cheaper than either of those options"
O rly?
It's weird: I'm seeing Solaris and other Unices being replaced with Linux. Rock-stable solid and 100% free Linux distros btw.
There are even entire *continents* now (cough, Europe, cough) where announcements are made that countries should favor open-source and free software over commercial OSes making $$$ fly to the U.S.
Despite the fudged TCO studies sponsored by M$ and linked by astroturfing M$ shills here, lots of people deciding the IT budget are starting to realize that they do not have to pay the M$ tax.
"The only area where Microsoft still hasn't won is in reliability" -- Add price, security and performances. And you may be on to something...
Re:C# (Score:4, Informative)
My observation has been the very opposite. I have seem very large windows deployments get replaced by Linux at several businesses especially with the movement to virtualization where one can get very lean headless Linux VM's that use minimal resources that allow better h/w scalability at much lower operating costs for running server software.
Re: (Score:3)
That is definitely happening! Maybe not where you are, but I'm a consultant that gets to see a wide range of corporations, and everywhere I go I see NetWare and UNIX getting replaced with Windows.
Something tells me that your information is quite a bit out of date, because NetWare started losing marketshare already in the 90s, the last NetWare release came in 2003 and the final service pack in 2008. Even the last stragglers I saw migrated to Outlook several years ago. Yes, along with that usually comes an Exchange server but it's hardly a big impact when companies decide what application servers they should run. At least not those where the servers are far more important than the desktops, like all t
Re: (Score:3)
Re:C# (Score:5, Insightful)
If you think JavaScript can or should replace strongly typed, compiled languages then you are severely deluding yourself.
At present C, C#, Objective-C, and Java are still your best bets
You realize that one of those four isn't strongly typed, and doesn't resolve method calls until runtime?
Re:C# (Score:4, Interesting)
And C# is rising becaues of Windows Phone 7.
Honestly I don't think C# is rising because of WP7. If you want to write software that runs on Windows only, C# is the best way to do it. Especially since in Visual Studio 2010, support for C++ has been waning (you can't use intellisense in C++ CLR environments, for example). My guess is that's why C# is rising, because of plain-old Windows Desktop.
Re: (Score:2, Insightful)
Interesting how both Objective C and C# are walled garden languages - sure, they're both "open" but in reality, you use them inside walled gardens.
Java is also "walled garden" ask Oracle (Score:4, Funny)
Oracle will tell you the language is free, then sue you when you use it. Just ask Google.
Re:C# (Score:4, Informative)
No, it's the real world that is out of touch with Slashdot.
Objective C (Score:5, Funny)
Re:Objective C (Score:4, Insightful)
Re:Objective C (Score:5, Insightful)
Of course it changes the facts - it's not Objective-C that's popular - it's the iPhone that's popular. If the language itself was popular then we'd see it being used where it was a choice, not a necessity.
Re:Objective C (Score:5, Insightful)
Re:Objective C (Score:5, Funny)
Were you popular in school?
Re:Objective C (Score:5, Funny)
Are you new here?
Re: (Score:2)
Yes, as a punch bag.
Re:Objective C (Score:5, Funny)
Then your were popular in the "most used" sense.
Most used. (Score:5, Funny)
I feel there's a "your mom" joke hidden somewhere.
Re: (Score:2)
I'm not so sure...
All I can see on the TIOBE site is:
The TIOBE Programming Community index is an indicator of the popularity of programming languages.
followed by:
The index can be used to check whether your programming skills are still up to date or to make a strategic decision about what programming language should be adopted when starting to build a new software system
It seems that the "popularity" they are trying to measure is one that infers some merit (i.e. popular by considered choice) to the more popular languages, otherwise using this measure to choose a language for a new project doesn't make much sense. Similarly a language isn't going to be widely useful as a career skill if it's only being used on a niche platform, so it would seem that they are expecting their popularity to be measuring breadth o
Re: (Score:3)
Which is fine as a hypothetical. But in practice developers who use Objective-C do tend to like it. It's the Android shills who don't know it that whine about it.
Re: (Score:2)
Sometimes a statistic is used to show trends in other areas.
For example, yes, iOS is popular with users. However, the fact that the programming language used for it is growing indicates that it is popular with programmers. That's different, and at least a little bit notable. Not only for nerds thinking about what to program in, but also for industry watchers: developer support is very important to a platform.
Re: (Score:3)
In this case, I think it's solely driven by iDevices. If the iPhone and iPad were to suddenly tank in the market, I believe you'd see Objective-C usage tank right along with it. Objective-C isn't the reason they're popular. It's just the only choice developers have to code for a popular platform.
Meanwhile, something like C# is actually pleasurable, and I think would see increasing usage even if WP7 tanks (heck, it's barely a blip in usage as it is right now). C# in some form or another is available on n
Re: (Score:2)
Maybe you should learn teh differences between facts and opinion.
If Windows tanked it would take C# with it. Yes I know about Mono but it is just a blip.
Re:Objective C (Score:4, Interesting)
I have seriously considered using Objective-C for non-iProjects, because it is so pleasant to use. I used to be a huge C# fan, using it in Linux and Windows for everything. I can guarantee that non-Apple APIs and tools will arise because of its usage.
Re: (Score:3)
i have no problem with messages - but every time I see objective-c, i do think to myself, "gee most of the power of python (dynamic runtimes rules the UI!), with all the syntax of C:" - and i kinda wish it was the other way around.
fwiw.
Re:Objective C (Score:5, Informative)
Actually IOS does allow you to develop in C++ if you want.
http://gamedev.stackexchange.com/questions/11079/objective-c-or-c-for-ios-games [stackexchange.com]
and here
http://iphonedevelopertips.com/cpp/c-on-iphone-part-1.html [iphonedevelopertips.com]
for examples.
To be honest I have worked in C++ and Objective-C and I like Objective-C better. When I work on Windows or Linux I use C++ because that is the better supported language on those platforms. On IOS I use Objective C.
Re:Objective C (Score:5, Interesting)
I'm in the midst of a pretty large image processing project for OS X, and the UI "wrapper", which is minimal, is in ObjC, but everything else is in C, implemented as a library. So we barely code in ObjC at all.
Seems to me that terms like "must" are being thrown around here without any real knowledge of the options available.
Re:Objective C (Score:4, Funny)
Re: (Score:2)
Thou shalt re-write the applications when iOS 5 is released (because we decided that access to Device Unique Identifier needs to go away)
Considering that the Device Unique Identifier was becoming a popular vector for spyware, I'm perfectly happy that it's going away.
Moderators? (Score:2, Offtopic)
Re: (Score:2, Insightful)
Does it matter how it's popular? (Score:2)
I'm not sure I understand how it matters why it's popular. The index isn't a listing of strictly general purpose programming language.
Re: (Score:3)
No language is popular because of the features. Languages are attributes of platforms, people write for platforms. Even platforms that support multiple languages, like iOS and the WinRT, have a "favorite" language where the documentation is most focused, and people will write for whichever language is the most documented.
Re:Objective C (Score:4, Insightful)
Actually, that would be the case if the news was "Objective-C is the most popular language for iOS development". If orange jumpsuits would be one of the most used form of clothing everywhere because they are used in prison, well, that would be newsworthy...
Re: (Score:3)
Actually, that would be the case if the news was "Objective-C is the most popular language for iOS development". If orange jumpsuits would be one of the most used form of clothing everywhere because they are used in prison, well, that would be newsworthy...
A more apt analogy would be that orange jumpsuits are the clothing item with the biggest increase in sales (to the government obviously) in America because we're sending more people to prison.
Re:Objective C (Score:5, Insightful)
Actually that's not even remotely true. You always had option of using C and C++ in addition to Objective C, and ever since apple removed the language restriction you can use whatever language you wish so long as it compiles to native code, resides in the app bundle, and doesn't use undocumented API calls. In fact many games are written in C# using monotouch.
But even if your statement was correct, I'm not sure it's relevant. There are lots of environments that *require* Java development, so do we then apply some sort of negative weighting to it's rank on the TIOBE index? If it's popular it's popular.
Re: (Score:2)
Actually that's not even remotely true. You always had option of using C and C++ in addition to Objective C
You can use vanilla C or C++ for your own code, but all iOS APIs are Obj-C, so you necessarily need to know the language enough to at least work with those.
But even if your statement was correct, I'm not sure it's relevant. There are lots of environments that *require* Java development, so do we then apply some sort of negative weighting to it's rank on the TIOBE index? If it's popular it's popular.
I think GP's point was that it being popular doesn't mean that it's good.
(which is, of course, also true of Java and many other languages in TCPI)
Re: (Score:3)
Yes, UI is Cocoa (touch), and Cocoa is all Obj-C. As is Foundation.
The other exceptions for non-Obj-C UIs besides OpenGL is Carbon, which is C.
But outside of Cocoa and Foundation much most APIs are C. Core Foundation, Core Graphics, Core Animation, Core Audio. Grand Central Dispatch, all the Posix stuff, etc.
Yes, in practice every app other than OpenGL apps will need the UI doing with Obj-C APIs. I was just picking up on incorrect statement "all iOS APIs are Obj-C" really.
Re: (Score:2)
If you substitute 'uses' for 'requires', the GP is quite correct. It's not like there has been a mass adoption of the language because of the merits of the language itself.
Re:Objective C (Score:4, Insightful)
And on that note, it really shouldn't be called "Objective-C" but rather "Apple's bastardized take on Objective-C."
Objective-C is what ever Apple says it is since they for all intents and purposes owns it. They are only only people that make an Objective C compiler so they get to define the language.
Re:Objective C (Score:5, Informative)
Even GNUstep considers Apple's implementation the official one, and they try to follow it as closely as they can.
When you run into problems porting, it is because GNUstep is lagging behind.
Re:Objective C (Score:4, Insightful)
And on that note, it really shouldn't be called "Objective-C" but rather "Apple's bastardized take on Objective-C."
Obj-C is a proprietary language, in a sense that it is unilaterally defined by a single entity. Said entity in this case was Stepstone, then NeXT, and now Apple. There's no ANSI or ISO Obj-C, nor any other standard, outside of the language spec that Apple publishes. So it's kinda silly to blame them for not toeing the line. If anything, you should blame GNUstep for not keeping up.
Re:Objective C (Score:5, Insightful)
And on that note, it really shouldn't be called "Objective-C" but rather "Apple's bastardized take on Objective-C."
Obj-C is a proprietary language, in a sense that it is unilaterally defined by a single entity. Said entity in this case was Stepstone, then NeXT, and now Apple. There's no ANSI or ISO Obj-C, nor any other standard, outside of the language spec that Apple publishes. So it's kinda silly to blame them for not toeing the line. If anything, you should blame GNUstep for not keeping up.
Incidentally, this also applies to just about every language on the list other than C.
Just to name a few: Java (Oracle), C# (Microsoft), JavaScript (Mozilla nee Netscape), PHP (The PHP Group), Ruby (Yukihiro Matsumoto), Python (Guido van Rossum)...
Re:Objective C (Score:4, Informative)
Yes, let's not, and point out that clang is BSD licensed.
http://llvm.org/svn/llvm-project/cfe/trunk/LICENSE.TXT
The exact same thing holds true for their "Objective-C" compiler. It may have had its roots in open source, but under Apple it most certainly is not now and never will be again.
If clang started as open source that apple made proprietor, then why is the very first commit from Apple? http://lists.cs.uiuc.edu/pipermail/cfe-commits/2007-July/000000.html
And why is the newest feature to come to Objective C being actively worked on Top of Tree by an apple employe. http://lists.cs.uiuc.edu/pipermail/cfe-commits/Week-of-Mon-20120109/051009.html
So I stand 100% by calling Apple's compiler proprietary shit.
Nope you stand 100% full of shit.
Re:Objective C (Score:4, Informative)
Which means that Apple's version will never see the light of day.
Um. You mean the version that I downloaded with XCode?
Re:Objective C (Score:5, Informative)
Which means that Apple's version will never see the light of day.
clang.llvm.org
Clang was an internal apple project, open sourced by them here's [uiuc.edu] the email in which Chris Lattener (an apple employee) open sourced the code that he had written on apple's time. The code has continued to be released by apple under the BSD license.
For reference, here's [apple.com] Apple's Objective-C runtime too.
"Objective-C will be the next big language." (Score:5, Funny)
My IT friend in 1993.
Time to find him on facebook.
Re:"Objective-C will be the next big language." (Score:5, Insightful)
My boss and I believed that in '87, it is (IMHO) far better than C++, and at the time it had a great chance. Obj-C was a great language for the time, probably the most advanced practical OO language of the time. Sadly it never got any traction until NeXT.
Sadder still is the fact that it didn't keep up with the time. It is still state of the art for the late 80s/early 90s; but languages moved on and improved. If they eliminated the need for separate header files (including getting rid of the declaration/implementation divide), added keywords to get rid of the need for the CPP, added autoboxing, and improved runtime errors; it would be a world class language (again).
As an aside Cocoa is a wonderful and powerful class library, with one major flaw: needlesslyLongAndOverSpecific method names. Where Smalltalk was content with anArray getAt: someIndex NeXT decided to drive in the fact that you were getting an object: [anArray objectAtIndex: someIndex], despite the fact that a NSArray can only old objects. That is a mild example, but the power in the library is amazing.
Sadly the stewards of Obj-C still seem to think the language is fine as it is, which is a shame. The lamdbas are nice though...
From 0 to 1 user equals infinite growth. (Score:2, Funny)
Fastest growing language is the one you invent yourself.
The top 20 (Score:5, Informative)
Java
C
C#
C++
Objective-C
PHP
(Visual)
Python
Perl
JavaScript
Delphi/Object
Ruby
Lisp
Pascal
Transact-SQL
PL/SQL
Ada
Logo
R
Lua
Re:The top 20 (Score:5, Interesting)
Cheers for R! I didn't expect to see a statistical programming environment on this list, but I'm not surprised either. R is getting really big in bioinformatics, which is a burgeoning field right now. I used R myself more often in 2011 than in any previous year, and I'm sure I'll use it more this year. If you use Excel, especially if you use macros or VBscript, you should give R a look. Steeper learning curve, but far more powerful and rewarding.
Notes on the trends. (Score:5, Interesting)
Interesting. Objective-C up (presumably because of iPhone usage), C# passes C++, and Python in a screaming dive.
The languages that are on the way down suffer from mismanagement. The C++ committee went off into template la-la land years ago, focusing on features used by few and used well by fewer. Python had a "Perl 6" experience - von Rossum pushed the language to Python 3, which is only marginally better, no faster, and incompatible. That seems to have hurt the language's market share.
The languages on the way up are rather similar. They're strongly and explicitly typed, compilable, memory-safe (mostly), and have garbage collection. That describes Java, C#, and Objective-C, and even Delphi. The only exception on the way up is Javascript, which has progressed from being an awful language to a pervasive although mediocre one. Javascript does have the advantage of fast implementations, unlike Perl and Python.
These stats, of course, are based on what people are blithering about on blogs, not what's implemented in them.
Re: (Score:3)
I mostly agree, but... Delphi has garbage collection? since when?
Re: (Score:3)
Last time I looked at it - which was, admittedly, Delphi 7, sometime around 2004 - you had to explicitly call Destroy on objects to release memory. You also got refcounting if you derived from TInterfacedObject, but only for interface-typed references. And you had refcounting with COW for strings.
That's nowhere even close to a GC.
Re:Notes on the trends. (Score:4, Interesting)
C didn't gain any ranks but it did gain in the ratings, so two exceptions. If I'm reading the long-term trends correctly, the more potent languages suffered some at the hands of Visual Basic but as VB has died they have recovered. C++ is doing very badly on the long-term trends - that's not merely a product of templates, it would seem to me that it indicates something more serious. Python's usage in the longer-term trends seems to have stabilized, along with a couple of other languages, with most having falling usage. To me, that suggests more hybridization at least in the fields (mostly teaching) that this survey covers - people aren't using one-size-fits-all languages as much, opting for limited use of languages in specialized areas.
Re:Notes on the trends. (Score:4, Insightful)
How the heck did you factor templates out of the equation? I am not a member of the Order of the Crystal Ball. Please enlighten me. For the last seven years, C++ has frequently crisscrossed 10% (of what, one wonders) most recently about six months ago if I skimmed the chart correctly. It's a small uptick shy of steady state.
I don't think C++ really should have become as popular as it once was. I'm sure it was supplanted in many cases for languages better suited to task, with automatic instead of standard transmissions, as the automatic transmissions improved over time. C++ is best used where the constraints on the acceptable solution are more severe than constraints of available talent. Scaling out Google or Facebook are good examples. Even there, C++ is best applied selectively. Or if you already have the skills, there are a lot of computations where C++ is easy enough to code and nearly impossible to beat.
I would say that the education cost of C++ mastery is just too much for most coders. Few people working on the hardest problems give much thought to education cost, however, if the lever rocks your world. I've never seen templates as being conceptually difficult. The problem has always been the diagnostics. It would have been nice to have something like concepts, or perhaps the vastly improved Clang diagnostics will mitigate matters enough.
I'm mostly using R these days and calling out to C++ where I get the most bang for my buck.
Re:Notes on the trends. (Score:4, Informative)
If you ignore the peaks and troughs, looking only at the general trend, it has been on a fairly steady decline since 2002 according to that graph. (I'm completely ignoring the specific values, for a graph like this you always want to plot a smooth curve that reflects the general pattern and not the individual data points.)
Because the graph is based on what is taught, you're looking at a latency of 1-2 years - maybe more - to factor in the delay between the changes in demand and changes in the classroom. That would imply that the demand itself changed around 2000 at the latest. The steady decline also means that the 2003 and 2008 revisions to the standard have not significantly altered the trend - up or down - and that the problems originate with the C++ 1998 standard (the last one before the known start of the decline).
My guess is that between 1998 and 2000, there would have been a rise in usage of C++ (standards make programming much easier), that it crested around that time and that the decline (which I'm estimating to have started midway between the first and second formal language specifications) came from better specialist tools. I honestly couldn't tell you when CORBA started dying as a standard, but it seems to me that it was around the same timeframe and for much the same reason as I'm giving for C++ (RPC is perfectly good for remote functions, sockets are perfectly good for streaming data, etc - you just don't need a top-heavy solution that can do anything adequately but nothing brilliantly).
Likewise, I think that's part of why scripting languages are starting to suffer. A lot of them are becoming extremely top-heavy and whilst that might make programmers happy in the short-term (they don't have to mix languages right there and then), it makes programmers unhappy in the long-term (they do have to mix languages anyway, it's just more complicated to do so and they feel like they were promised they didn't have to).
If I extrapolate from this, I'm going to say XML (which now requires a monstrous number of libraries to process in various ways) is going to fall out of favour. Architecture-neutral data storage can be done using NetCDF, a key/value database like QDBM is quicker to read/write than an XML database, precisely because XML is often processed as ASCII text it is not very good at handling UTF32 safely, and unordered data is a bugger to read. Specialist tools already exist to do all of the things XML is used for, so I would expect XML to lose ground to those tools once it passes the critical threshold of complexity. It does not appear to have hit that threshold yet, but it will if it continues to gain complexity with no obvious corresponding gain in usefulness. (XML is very useful for some tasks but it doesn't become more useful for those tasks because of XML-RPC or other rarely-used extensions.)
Ada was once extremely popular, far more so than now, but lost a lot of ground because it also became extremely complex. There have been times when Ada has been the laughing-stock of programming because nobody could build a compiler capable of handling it. It was only partially implemented, which caused severe problems for portability but also for provability. (Ada was the flagship language of Formal Methods for a long time, but incomplete and overweight ships sink. It damaged the entire Formal Methods methodology to such an extent that it may never recover.)
This pattern also explains the love-hate relationship with X11 and with other designs that got.... a little too flamboyant. My old Software Engineering instructor used to represent this with a picture of a tyre swing with three ropes holding the tyre up. Each rope functions perfectly as designed, but the result is unusable.
Re: (Score:2)
C had an increase in market share as well even though that didn't improve its rank.
Logo (Score:5, Interesting)
I've seen logo used a lot in multi-agent systems research. It just lends itself well to that, with every turtle being an agent.
Interesting. (Score:3)
Anyone here want to comment on Lua? It's now provided with LaTeX to help provide a bit more oomph, but I'm torn between learning it and seeing what other scripting languages are added in.
Objective C and C# are not terribly surprising but given that there are plenty of C-based languages that never even made the top 20, I find it curious as to which C-based languages are thriving and which are not. If it were on the merits of the language alone, then you'd expect usage to reflect specific features, and I was assured repeatedly in the discussion on Java that languages were not (as I'd claimed) popular due to promotion. Surely not all those people could be wrong, could they?
Logo's popularity is puzzling as this is far too recent a survey to reflect the UK's demand to switch from learning about office supplies in IT to learning about writing software and starting off on 2D graphics applications. However, precisely because of that switch, I'd expect Logo's popularity to rise at least a little bit more. It is, after all, a language designed to start people off on writing 2D graphics applications.
Pascal, Delphi and Ada get mentions, but Modula-2 and Modula-3 do not. Nor does Eiffel. Not a terrible shock, but again it does say a lot about perceptions in regards to usage. I'm no fan of Modula-2 or Modula-3, but there are bound to be cases where they're more appropriate choices but the others are used instead.
Re: (Score:2, Interesting)
Lua is probably the smallest and easiest language to integrate into a system and is extremely powerful for its size. While you can write full blown applications only in Lua it's real purpose is to be a subordinate add on to another program or system. A lot of people point to games when Lua is mentioned but there's nothing inherent about games in it. So you'll see this a lot more in embedded systems coming up I think. For example, unlike say Ruby or Python it doesn't come with a lot in the library but yo
Re: (Score:3, Interesting)
At least Scala is dead (Score:2)
Yiobe's bogus metrics (Score:5, Informative)
Tiobe generates the rating by the search results of google/bing, etc. So basically, it's just measuring how many web pages mention a particular language. It does *not* measure the actual usage of the language in applications.
Ya people really underesitmate C/C++ (Score:5, Insightful)
As a simple example pretty much every videogame is written in it (C++ usually). On Windows it is almost always Visual C++, in particular because for the 360 that is what you have to use. The PS3 doesn't use VC++, of course, but it does use a C language for processor programming and nVidia's CG for programming the GPU (if you need more fine control than OpenGL ES offers). Go look at any posting for a programmer for a game company, see what language they are asking for.
Now obvious to anyone who's looked around that games are HUGE. Lots and lots of development going towards videogames. It's a large and profitable market.
In terms of pure C, that still reigns supreme in the embedded world and man is there a lot of that going on. we have tons of embedded devices, in things you'd never even think of.
The problem is as you note these guys use the "What are people chattering about," method, as do many people on Slashdot. They think because there's a lot of buzz about something that means it is in heavy use. Not really. There's no buzz about C++ because it is well established, but that doesn't mean it isn't getting used. It means the people using it don't feel the need to go on about it.
Re:Ya people really underesitmate C/C++ (Score:4, Informative)
The reason for its popularity... (Score:5, Informative)
...is obviously because of iOS. More specifically it's because when Steve Jobs rejoined Apple in 1996 he brought with his a lot of NeXTStep tech, including Obj-C. That's why many of the system types have the 'NS' prefix. History lesson aside, it's rather a shame as it's (in my opinion) a rather poor and outdated language. If I'm ever asked by people who aren't familiar with it what it's like I say that it's the anti-sibling to C++. By this I mean that it has the same parentage as C++, but where C++ went down one path, Obj-C took the other. The fact that most well regarded modern languages have more in common with C++ than Obj-C should indicate that they made mistakes in its design. Obj-C's biggest failing is its tendency to fail at runtime rather than during compilation. This is mostly down to its weak type system.
Don't get me wrong, I think C++ is getting pretty creaky too. I'm quite fond of D; in a fantasy world, some big commercial player will start using it and make it popular.
Re: (Score:2)
Are you sure this isn't just a matter of taste? It gives it scripting-language agility and introspection with compiled language speeds, and still most of the type checking features are available when you want them, it just doesn't compel them.
The people who hate really Objective-C the most seem to be the people who are paid to write IEnumeratesEveryOddThursday interfaces and AbstractClassFactoryIntegerSerializationDa
Re: (Score:3)
I think the point was that Objective-C is compiled to native machine code and it has instrospection along with dynamic typing. C# may have those capabilities but at the cost of running in a VM.
dZ.
Re:The reason for its popularity... (Score:4, Insightful)
You sometimes hear this said about Obj-C and it is somewhat true. It's syntax is a little outdated in comparison to some of the more modern languages but other things like the dynamic typing being a big issue are long since history; Objective-C compilers will now give you a lot more compile time information and make these kind of runtime errors largely a thing of the past. Obj-C is far from perfect but it's a much nicer language than the bloated hell that is C++.
Compilers can only compensate for the language's failures, not fix them. Having said that, the 'Analyze' option in Xcode 4 is pretty good.
Language bloat isn't a problem in itself. You are free not to use the features you consider bloat, at no cost. Where it does become a problem is when new language features are shoe-horned with every effort not to break compatibility. The result is obscure new syntax and existing features that should have gone the way of the Dodo. This is where C++11 is, if you ask me.
Explaining LOGO is easy (Score:5, Interesting)
You need to show a bunch of six-year-olds how to program in an hour? Here's LOGO. Here's your turtle. Type FWD 20, watch it move forward. Five minutes later, the kids know all the basic commands. Put a maze in front of them, let them figure it out. Congrats - they're programming with a computer.
LOGO was my first programming language, back on an Apple II with a big honkin 5 1/4" floppy disk drive. It was the eye-opening "OMG these things do more than Oregon Trail?!?!?" moment.
Encouraging. (Score:4, Interesting)
While I have not been doing any serious coding since quite a while, it's encouraging to see that the four programming language I learned many years ago, are still in this top 20 list, and have not changed position since last year: Java, C, Pascal and.. BASIC :)
Wait, I forgot one: where's FORTRAN!?
It's not about programming language (Score:4, Insightful)
Your job security and desirability as a programmer is more about domain knowledge than anything else. C++ and engineering knowledge will still carry you much much further than C# and fuck all.
Seriously, if you know C++ and you're thinking it might be outdated, by all means start looking at more modern languages, but the one thing that will ensure your success is to know more about the field you're working in.
R is not a programming language (Score:3)
R is a, very large, library of Mathematical and Statistical libraries usually written in Fortran glued together by a scripting language. Maybe the popularity of R means that Fortran is becoming more popular, via the "back door".
BTW, check out Fortran '08. OO, fast, native parallel capability[*], supports 30 year old legacy code, and easy to learn. I've been hobbying with it. As the saying goes "It ain't your grandpappy's Fortran".
[*] Which is mind bending enough I haven't tried it, yet.....
Logo (Score:4, Interesting)
People forget that Logo is not only about the turtle-animation and drawing.
It is parent to Lisp and has list-processing primitives that make it quite good at processing streams of information.
Its actually a lot like Java; procedures can dynamically generate procedures as they run.
Its syntax is so simple, a child can learn it but you can easily program recursive algorithms with it.
I say all this from experience. My very first programming job, I was an apprentice at a place that did the books and business-accounting of about 30 client companies, all in Logo.
This Logo was running on a micro and we had 8 terminals hooked up to it. This logo had NO turtle, it was text-only. (M.I.T. Experimental Logo #53 or something like that)