I am a software engineer, database developer, web developer, social media user, programming geek, avid reader, sports fan, data geek, and statistics geek. I do not care if something is new and shiny. I want to know if it works, if it is better than what I use now, and whether it makes my job or my life easier. I am also the author of RegularGeek.com and Founder of YackTrack.com, a social media monitoring and tracking tool. Robert is a DZone MVB and is not an employee of DZone and has posted 107 posts at DZone. You can read more from them at their website. View Full User Profile

9 Programming Languages To Watch In 2011

12.13.2010
| 121946 views |
  • submit to reddit

I have written several posts regarding job trends in programming languages. However, I have not really written any posts that looked towards the future of programming languages. With job trends, I have been focusing on more heavily adopted languages. In this case, I wanted to look at some other languages that are gaining popularity but have not really become one of the top languages to use. Part of this analysis uses the Tiobe December 2010 rankings, some from ReadWriteWeb’s recent programming languages post (based on this Dataists post), and the rest comes from the job trends that are included. Two languages from the normal job trends posts that will continue to see solid growth and deem mentioning are Objective-C and Python. Obviously, with the growing Apple ecosystem, Objective-C continues to grow. Python is being used in data analysis, which is growing rapidly, as was mentioned in my recent post on some O’Reilly data.

I have not split these languages into any particular type, like traditional and scripting, because I wanted to look at everything together. Some of the jobs data is difficult to include because of the amount of noise from other industries. Go and R have a lot of noise in particular and are not included in the graphs. However, they are included due to their origin (Google) and usage (Data Analysis) respectively. First, let’s look at the languages themselves ordered by Tiobe rank (Tiobe ranking and RWW & Dataist Tier included) :

  • Go (Tiobe: 21 , Tier: 4)
  • R (Tiobe: 26, Tier:3)
  • Lua (Tiobe: 27, Tier:3)
  • Scheme (Tiobe: 29, Tier:3)
  • ActionScript (Tiobe: 37, Tier:2)
  • Erlang (Tiobe: 49, Tier:3)
  • Groovy (Tiobe: 50-100, Tier: 3)
  • Scala (Tiobe: 50-100, Tier:2)
  • Clojure (Tiobe: 100+, Tier:3)


Interestingly enough, there does not seem to be a correlation between the Tiobe rank and the Dataist Tier. If anything, it almost looks like a reverse correlation, but I am going to ignore correlation for now. So, how does the ranking data compare to the job demand data?

First, let’s look at the job trends from Indeed.com:

Indeed.com Job Trends December 2010


As we have seen in other job trends posts, SimplyHired focuses on short term trends:

SimplyHired.com Job Trends December 2010

Both graphs show ActionScript with more jobs but a fairly poor trend. Scheme has been growing slowly and has seen more recent interest. Groovy has been growing nicely, but not showing a really strong trend. The others have limited data, so there is not much we can see of the trends.

The job trend graph that could be more useful in this case is the relative growth from Indeed:

Indeed.com Relative Trends December 2010

The relative growth is my favorite trend graph because it shows the rapidity of change. So in our case it can show which languages may be prepared for a breakout year. The two obvious trends are Lua’s strong growth and the explosion of Clojure in the past 18 months. Other notable trends are the growth of Erlang, Groovy and Scala. Scheme and ActionScript have fairly flat trends here.

So, I have presented a good amount of data, but I have not really said anything specific. All 9 languages should be watched in the next year as they all have some interesting level of activity in one area or another. Google searches, GitHub projects, StackOverflow questions and job trends are all flawed in some way. But if you look at them together, they present an interesting picture of what programming languages are really seeing activity or adoption. Without further ado, here is my ranking of what programming languages watch in the next year:

  1. Lua – The language is seeing some good activity on GitHub and StackOverflow. It has a solid Tiobe ranking, but more importantly, jobs for Lua are becoming available. The relative trend for Lua is a great indicator that it is ready to go mainstream.
  2. R – With data analysis and big data becoming a part of every web startup, languages catering to the data crowd will become popular. The job trend data will be the most interesting part to watch here.
  3. Clojure – While not popular within the Tiobe index, it is popular in some programming circles. In particular, its job trend growth is showing that it could be posed for a big year of adoption.
  4. Go – Only Tiobe really shows this as a popular language. It is not ranked well in the Dataist Tier, and job trends are not very reliable yet. However, with a parent of Google it may not need purely organic growth.
  5. Erlang – This has been around for a few years and has decent trends all around. With the continued growth of real-time technologies like XMPP (eJabberd specifically), PubSubHubbub and others, 2011 could be a year where it becomes the next Python.
  6. Scala – This is one of the interesting trends. Scala has a very good showing in the Dataist Tier, but is not really ranked in the Tiobe index. With the solid job growth trends and popular adopters (i.e. Twitter), Scala could gain a serious amount of acceptance.
  7. Groovy – More than anything, I believe Groovy missed its window of opportunity. It is a solid scripting language with decent job growth trends, but how can it differentiate itself from Ruby, Python, Erlang and Scala?
  8. Scheme – For whatever reason, this language refuses to go away and has even picked up some interest. Without decent job growth, we could be another year away from Scheme breaking out again, at least 30 years after it broke out the first time.
  9. ActionScript – ActionScript is included in this list because of its high ranking on Tiobe and the Dataist Tier. However, the job trends do not point to good things for the language. It could be a temporary slump, so you should keep an eye on it next year.


I know people will have lots of comments on this, but specifically I am looking for other languages that may be gaining popularity. Let me know what I missed in the comments.

This article has been translated into Serbo-Croatian:  http://science.webhostinggeeks.com/9-programskih-jezika-na-koje-treba-obratiti

 

This article is translated to Serbo-Croatian language by WHG Team .
References
Published at DZone with permission of Robert Diana, author and DZone MVB. (source)

(Note: Opinions expressed in this article and its replies are the opinions of their respective authors and not those of DZone, Inc.)

Tags:

Comments

Fred Nott replied on Mon, 2010/12/13 - 9:34am

Bear in mind that all job postings that reference Flex or AIR would assume knowledge of Actionscript, without necessarily mentioning it.

Robert Diana replied on Mon, 2010/12/13 - 10:21am in response to: Fred Nott

That is an interesting point. I was surprised that the job demand trend had gone flat, but I wonder if there is something like Flex or AIR that could have changed the trend implicitly.

Mitch Pronschinske replied on Mon, 2010/12/13 - 11:04am

This is a really great post, Robert.  Tell your blog Happy Birthday for me!  :)

Jacek Furmankiewicz replied on Mon, 2010/12/13 - 11:12am

After having done a few month stint in Erlang, let me assure you that language is not going anywhere.

I'd quit instantly from any job that requires me to do any sort of significant Erlang coding for any sort of business application

It may have a niche for systems programming (e.g. CouchDB), but I pity the poor bloke who has to write a large CRUD app on top of Oracle or MySQL in Erlang. Six years later ,maybe he'll deliver a 0.1 version...

And the Erlang community isn't exactly helpful...to one confusing question I was told by one of the senior Erlang guys "if you want some help, hire me as a consultant"...nice. Compared to the help I often got on the Spring forums, this was a night and day experience.

Python, on the other hand...is wonderful. Django makes a laughing stock of all Java web frameworks in terms of productivity.

Robert Diana replied on Mon, 2010/12/13 - 4:18pm in response to: Mitch Pronschinske

Thanks Mitchell.

Robert Diana replied on Mon, 2010/12/13 - 4:23pm in response to: Jacek Furmankiewicz

Well, it is getting a lot of attention in some places. Its usage for eJabberd, Facebook chat (initially at least) and CouchDB mean that it is a useful language. Whether it really catches on with a solid community is a different question. I have not looked at Erlang yet, so I can't really comment on the current community. Also, some languages are not meant for CRUD applications, and maybe its true target is systems programming. The Spring community was always very friendly and helpful, so that may not be the best example of a typical community.

Jacek Furmankiewicz replied on Mon, 2010/12/13 - 4:36pm in response to: Robert Diana

Well, I get things done with Java / Spring.

With Erlang we just wasted thousands of dollars in developer salaries and lots of time...and rewrote the whole thing from scratch in Java / Spring / Hibernate in a fraction of the time and the performance was great. Erlang's positives are far overrated and its negatives are hidden for you to discover the ugly way...once you get past the hype.

The SAX parsing code I did in Erlang for a fairly complex XML document structure was one of the most horrible, convoluted pieces of code I ever did...Erlang's lack of mutable data structures really kills you in this particular use case. I was looking at that code (which later got reviewed by an Erlang consultant who said it's fine) and I thought...this is the most un-supportable piece of logic I ever saw. 2 weeks later I wouldn't be able to understand it myself.

Stay away from Erlang...period.

Jacek Furmankiewicz replied on Mon, 2010/12/13 - 4:42pm in response to: Jacek Furmankiewicz

And don't even get me started on their Mnesia "database"...what a hunk of garbage.. Does not support any data larger than 2 GB and its table structure is not upgradable (yeah, you can't change the record format on existing records). Great production-quality DB...just one of the many surprises Erlang has in store for the unlucky developer that gets stuck with it.

The only positive from this experience was that it got me exposed to functional programming and thus made me more open to *other* languages that offer that functionality and makes me miss it in Java (although coming finally in 8)...so I guess it wasn't a total waste of 6 months of my career.

Anton Arhipov replied on Mon, 2010/12/13 - 6:22pm

Jacek, what you describe is an application programming and Erlang has its niche somewhere else for sure. It just didn't fit your needs and this is not a reason to yell that this is a crappy technology. I've seen plenty of PHP programmers trying to roll out a project with Spring/Hibernate and yelling the same way - "I never had so many problems with PHP". That said, the right tool for the job.

Jacek Furmankiewicz replied on Mon, 2010/12/13 - 6:26pm in response to: Anton Arhipov

As I said, I can see how it may be useful for systems programming.

But the immaturity of the overall OTP platform (in terms of integration APIs, e.g. accessing relational DBs) and small community (and not always very helpful) is a definite red flag for any typical enterprise development.

Robert Diana replied on Mon, 2010/12/13 - 7:19pm in response to: Jacek Furmankiewicz

So I am guessing that we stay away from Erlang for data/XML processing. For trying a new language or tool, teams I have worked with focused on a short 2 day spike if possible. If that turns out OK, then we get someone to do a 5 day spike. Only then is it deemed usable. That type of process is really helpful in not throwing a tool at the wrong or unsuitable problem. It is a shame that you had a bad experience with it, but it does sound like it is not the right tool for your job.

Claude Lalyre replied on Tue, 2010/12/14 - 4:32am

So many languages to achieve the same goal and build solutions to customers... So many languages to learn, so many languages that break the developers into several communities... And what about the idea of developing THE language, the definitive one that all developers will learn and masterize ? One unique language, one unique community of developers...

Héctor Ea replied on Tue, 2010/12/14 - 5:47am

SimplyHired's ActionScript trend is what I've been hearing from some mates: the amount of requests for Flash/Flex/AIR projects decreased considerably this summer because of the HTML 5 boom we've all seen, however, starting October or so, people started to ask again for projects using the Flash platform. I've also seen on some job sites that while the offers for ActionScript applicants have lowered, the salary for the position has seen an increment.

Eric Giese replied on Tue, 2010/12/14 - 5:51am

The one language? Only by killing all others :-D

The fragmentation in the programming community will never end, but developers can arm against these problems: Like linguists can learn HOW languages work, developers can try to understand the concepts behind the languages. The way is the same. Learn a lot of different languages with different concepts and you won't care about the languages much longer.

Good ones to learn are Haskell, Lisp (Clojure), Scala, Go and Phyton. And a lot more. All of them have their own concepts and ideas which really help to learn. Oh, and learn C# and Java to earn money in the meantime!

Good concepts to learn by these are: functional programming, type inference (static typing without mentioning types), closures, type systems (structural typing like in go), type parameters (generics), closures, immutables values and lists, multiple inheritance, const correctness and so much more.

And, most important: Have lots of fun doing this!

Henry Staples replied on Tue, 2010/12/14 - 8:01am

For further reading, both Erlang and Lua were presented at HOPL III in 2007. Papers from the conference are available on acm.org. Joe Armstrong's paper is interesting as he describes how Erlang was created to ring the phones.

Moni Ghaoui replied on Wed, 2010/12/15 - 3:12am

I had a quick glance at the most popular lua projects in GitHub:

  • tukz / Tukui - A World of Warcraft Addon
  • tekkub / buffet - A World of Warcraft Addon
  • tekkub / panda - A World of Warcraft Addon
  • terceiro / awesome-freedesktop - A addon for an open source desktop
  • p3lim / Scent - A World of Warcraft Addon

So lua is only a language to consider if you're planning on getting into the games industry or write addons for World of Warcrack.

Robert Diana replied on Wed, 2010/12/15 - 7:44am in response to: Moni Ghaoui

My understanding is that Lua is gaining acceptance as an embedded scripting language as well. WoW may have given it some base usage, but it is definitely getting bigger than that.

Thijs Schreijer replied on Wed, 2010/12/15 - 9:23am in response to: Moni Ghaoui

Lua is meant to be an embedded scripting language so you're not likely to find standalone apps in Lua. As WoW has a huge userbase, and Lua is used a lot in gaming, it is not that strange that the top 5 are WoW related, just a pitty as many people might be tempted to think its WoW or gaming only.
Luas main power is that it comes in at a 100kb (compare to 1mb for Python) and its core is native C, hence extremely portable. It runs on most platforms (and hardware).
Some examples of other applications that use Lua;
- Adobe Lightroom
- SciTE text editor
- Network tooling; nmap, snort, and wireshark
- Girder
And hardware running Lua;
- Vera box by MiCasaVerde
- Logitech; Harmony 1100 and Squeezebox Duet
As with any language it has its uses, but it is definitely more than WoW only.

Jacek Furmankiewicz replied on Wed, 2010/12/15 - 8:59pm

Personally, my new language to learn for 2011 (after Python in 2010) is CoffeeScript. It fixes everything we hate about Javascript and modern Javascript tools such as node.js and JavascriptMVC are already starting to support it as an alternative to the ugly beast that is Javascript.

Cloves Almeida replied on Wed, 2010/12/15 - 10:31pm

I don't think Groovy has missed the train. Unlike Python, Ruby and Erlang, it can use Java libraries seamlessly. As Groovy classes are simple Java classes, unlike JRuby and JPython, the communication is two-way.

Unlike Scala, Groovy has a very familiar syntax for existing Java developers. The learning effort is pretty small.

A typesafe Groovy is underdevelopment. As it implements a lot of syntax sugars while maintaining compatibility, it could potentially become the de-facto successor of Java.

Jacek Furmankiewicz replied on Wed, 2010/12/15 - 11:03pm in response to: Cloves Almeida

the problem with Groovy is that it's had its chance for a long time now and failed to make any serious inroads. And now most of the action seems to be outside of the JVM.

You know, most of other languages that are mature (like Python or Ruby) have a very rich set of libraries too...in some cases even richer than Java. The JVM set of libraries is not as big of an asset as it was let's say 3-4 years ago...and that gap is getting smaller.

With more open source libraries being created in non-JVM languages we may very well see the abundance of OSS Java solutions decrease over time...no one wants to spend their free time working on a platform whose owner (Oracle) abuses OSS at will.

Moni Ghaoui replied on Thu, 2010/12/16 - 7:47am in response to: Thijs Schreijer

Ah good to see that it's being more widely used.

I was responding to the assertian that: "Lua - The language is seeing some good activity on GitHub and StackOverflow".

Just after reading that I quickly went to GitHub and found that WoW dominated the lists. I didn't check StackOverflow but give me a second ... ah ... top voted questions:

  1. Why is Lua considered a game language?
  2. Lua Patterns,Tips and Tricks
  3. Which game scripting language is better to use: Lua or Python?

Ok I know I am being biased by selecting only the top three but the point I'm trying to make is this: Lua should be a language worth watching, for sure, but the only conclusion I can see by visiting github and stackoverflow is that it is primarily used for games.

Anyways just saying. I'm not looking to troll here. I have checked out Lua in the past and it looks like a great language to use.

Gar Labs replied on Tue, 2011/08/23 - 11:52am

I was surprised that ActionScript is on the list. -GAR Labs

Kavosh Havaleda... replied on Mon, 2011/08/29 - 2:48pm

Im an independent computer programmer. I live single and always work in my ideas.

Kavosh Havaleda... replied on Mon, 2011/08/29 - 2:49pm

I think there is no any new idea in these languages.

James Kear replied on Tue, 2011/09/06 - 3:26pm

Dynamic languages are going through a rebirth, driven by a desire to shy away from schematized data, and accelerated by the renaissance of JavaScript. hire a programmers

Emma Watson replied on Fri, 2012/03/30 - 3:12am

I am personally interested in Erlang, Lua, Clojure and Groovy but I need to say that at least in my experience business has come through Java and Groovy. I have spent the last 10 years developing Java based applications and in the last couple of years I have incorporated Groovy as well. I find great acceptance of such language in companies that are already using JSE and JEE. In several cases Groovy has been even adopted by operation teams as a scripting language. Such teams have no or little experience with Java but need the benefit of the JSE and JEE infrastructure and libraries deployed.

java program

Howard Lewis Ship replied on Thu, 2012/02/09 - 3:21pm in response to: Robert Diana

Actually, Lua was written quite precisely as an efficient, embedded scripting language. I'm using it for some game prototypes and such and really liking it. In some ways, I think Lua is the language that JavaScript should have been ... literally, if Netscape had known about Lua and the license had been compatible, it's quite reasonable that our current browser infrastructure could be Lua. Maybe even node.lua!

Both languages cite Scheme as an influence; Lua has a more Modula/Pascal inspired syntax, where JavaScript is more C-oriented. Lua is a lot more consistent than JavaScript and doesn't have some of those odd forgotten (and regretted) aspects.

It's pretty amazing how fast Love2d apps can launch, fire up SDL (Simple Direct Layer) and get graphics on the screen ... long, long, long before a Java application has even started executing its main().

Howard Lewis Ship replied on Thu, 2012/02/09 - 3:58pm in response to: Moni Ghaoui

Lua is also used in quite a few iOS games; even when Apple was clamping down on Flash and everything else they didn't control, Lua got an exemption because it was used in some many commercial games. See this article. This may also affect its ranking.

Carla Brian replied on Sun, 2012/07/15 - 5:25am

These are a lot of programming languages. It is time to search for resources on this and study about this one. This will be interesting and challenging as well. - James Stuckey

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.