It’s been a year since I revealed the best languages to learn in 2013. Once again, I’ve examined the data produced by Jobs Tractor who analyzed more than 45,000 developer jobs advertised on Twitter during the past twelve months. The results:

Java 8,731
PHP 8,238
Objective-C 5,859
Java for Android 4,312
SQL 3,553
JavaScript 3,154
Ruby 2,937
C# 2,549
Python 1,587
C++ 1,273
C 685
ActionScript 674
ASP.net 492
Perl 224
Scala 143
Visual Basic 92

The main changes since last year…

  • PHP and Java have switched places but both remain in high demand.
  • Java for Android has overtaken SQL and is closing in on Objective-C.
  • JavaScript has overtaken Ruby.
  • Python has risen two places.
  • ActionScript has dropped two places.

Take this survey with a large pinch of salt. Then add pepper, ketchup and numerous other condiments. I’m not convinced Twitter is a reliable source of job-related data and regional differences can skew results.

A recent survey by the online course provider Lynda.com for Mashable produced the following list of languages in order of popularity:

  1. Java
  2. C
  3. C++
  4. C#
  5. Objective-C
  6. PHP
  7. Python
  8. Ruby
  9. JavaScript
  10. SQL

The usual suspects are there but, again, results will be biased by the topics offered and the site’s target audience (primarily newer developers).

Industry analyst RedMonk has taken a different approach and determined language popularity by examining the frequency of projects on GitHub and questions on StackOverflow:

  1. JavaScript
  2. Java
  3. PHP
  4. C#
  5. Python
  6. C++
  7. Ruby
  8. C
  9. Objective-C
  10. CSS

Don’t take this too literally; a language could score higher if it’s more problematic than others. I’m also surprised to find CSS on the list — although due to pre-processors like Sass, LESS and Stylus, CSS tends to be viewed more as a programming language nowadays. That said, if CSS is considered a programming language, where are HTML and SQL?

I Want Advice — Not Statistics!

Let’s make one point crystal-clear:

Never use statistics as the sole basis for learning a language.

Few developers start programming for financial gain. There are far easier ways to make money … become a “digital marketing strategist” or “SEO specialist” and hone those board-level BS monologues.(Apologies to any conscientious “specialists” out there — I’m sure you exist, I’ve just not met you yet.)

Choosing a popular language also pits you against thousands of others. Learning Fortran won’t be trendy but you’ll find lucrative work maintaining decades-old legacy systems no other developer wants to touch. Fortunately, we can make a few general observations that may sway your language-learning objectives.

Technologies Rise and Fall

All languages ascend and descend in popularity and demand but timescales will differ. Consider ActionScript. Flash development is in decline and I suspect a large chunk of ActionScript projects are in maintenance mode. The same can be said for Perl, COBOL and Visual Basic 6, although they’ve enjoyed a longer life.

If you’re particularly risk-averse, you may want to avoid languages with limited platform support such as ActionScript, VB6 and Objective-C. However, while Objective-C is primarily used on Apple-based OSes and APIs, the platform’s ascendancy continues and there’s no shortage of app-development jobs. For now.

Choices for Existing Developers

If you’ve mastered a language or two, the choice is far simpler: pick something that interests you (intellectually or financially). Programming skills are transferable and the learning curve will be shallower when learning a new language compared to when you first started.

There may be some obvious opportunities, for example:

  • ActionScript is based on ECMAScript (which is implemented in browsers as JavaScript); Flash developers will thus have a logical progression to HTML5 technologies.
  • C++, Java, C#, Objective-C and even PHP are conceptually similar, so you may be able to switch between them with relative ease.
  • If you’re developing Windows desktop applications using VisualStudio, your .NET knowledge will be applicable to Microsoft web server platforms.

Despite this, don’t be afraid to learn something new. JavaScript looks similar to Java and other C-like languages but many developers initially struggle with it because it’s fundamentally different. Persevere and you’ll gradually appreciate what JavaScript offers.

Choices for New Developers

Those fortunate enough to have started in the days of 8-bit home computing had few options and learned their craft with something like BASIC before progressing to C or assembly when they felt confident to do so. The dawn of the web was similarly simplistic; you learned HTML and perhaps a server-side language such as Perl. Skills could be gained incrementally as HTML evolved and technologies such as CSS, JavaScript, PHP, ASP and .NET were introduced.

I don’t envy those new to development in 2014; the choice is bewildering. Where do you start?

Tentatively, I suggest JavaScript. The language is available everywhere, growing rapidly and offers virtually unlimited online resources. Learning JavaScript first may also help you avoid some of the confusion experienced by developers coming from other languages. My only hesitation is the hostility of learning it within the browser environment. JavaScript can require additional knowledge of client-server architecture, HTML, CSS and cross-browser quirks — even if you’re primarily creating Node.js server-side code.

Alternatively, you could consider a language such as Ruby or Python which are relatively quick to learn and less encumbered by legacy and environmental issues. However, they offer fewer resources and deviate from C-based syntaxes which may be your ultimate goal.

The best advice I can offer: stop taking advice from articles like this!

Identify a problem and solve it with the software tools you have. Perhaps that’s automating a task usingAutohotkey or writing an expenses calculation macro in a spreadsheet. That knowledge will provide the impetus to progress to bigger and better programming tasks.

Question: If you recently started programming, what language did you choose? Did it help or hinder your learning? Would you recommend it to new developers?

What is the Best Programming Language to Learn in 2014?的更多相关文章

  1. The Swift Programming Language 中文翻译版(个人翻新随时跟新)

    The Swift Programming Language --lkvt 本人在2014年6月3日(北京时间)凌晨起来通过网络观看2014年WWDC 苹果公司的发布会有iOS8以及OS X 10.1 ...

  2. The best way to learn a programming language

    The best way to learn a programming language is to write a lot of code and read a lot of code.

  3. Questions that are independent of programming language. These questions are typically more abstract than other categories.

    Questions that are independent of programming language.  These questions are typically more abstract ...

  4. The Go Programming Language. Notes.

    Contents Tutorial Hello, World Command-Line Arguments Finding Duplicate Lines A Web Server Loose End ...

  5. The D Programming Language 书评

    此书的作者 Andrei Alexandrescu 作为前 C++ 社区的一朵奇葩,因为实在是不满 C++ 标准委员会的官僚作风,跳槽到了 D 社区,成为了 D 发明人 Walt Brightman ...

  6. What programming language is best for a bioinformatics beginner?

    probably Unix Shell scripts, Perl, or Python and R can be the best options. ---------- 1-python 2-R ...

  7.  Go is more about software engineering than programming language research.

    https://talks.golang.org/2012/splash.article Go at Google: Language Design in the Service of Softwar ...

  8. iOS Swift-元组tuples(The Swift Programming Language)

    iOS Swift-元组tuples(The Swift Programming Language) 什么是元组? 元组(tuples)是把多个值组合成一个复合值,元组内的值可以使任意类型,并不要求是 ...

  9. iOS Swift-控制流(The Swift Programming Language)

    iOS Swift-控制流(The Swift Programming Language) for-in 在Swift中for循环我们可以省略传统oc笨拙的条件和循环变量的括号,但是语句体的大括号使我 ...

随机推荐

  1. 7款个性化jQuery/HTML5地图插件

    现在我们经常会用到一些地图应用,无论是在网页上还是手机App中,地图貌似是一个不可或缺的应用.本文将带领大家一起来看看一些基于jQuery和HTML5的个性化地图插件,有几款地图比较实用,有些则是具有 ...

  2. 洛谷 1865 A%B问题

    题目背景 题目名称是吸引你点进来的 实际上该题还是很水的 题目描述 区间质数个数 输入输出格式 输入格式: 一行两个整数 询问次数n,范围m 接下来n行,每行两个整数 l,r 表示区间 输出格式: 对 ...

  3. java和javascript中this区别的浅探讨

    今天在学习javascript的时候碰到了this,感觉它跟java里的有点不一样.然后上网查了一下,参考了这篇文章,JavaScript中this关键字详解,发现它们之间的区别主要是这样: java ...

  4. 【风马一族_Android】 图能

    ---------------------------------- 第一次 名称:相片查看器 ---------------------------------- 通过3D.自动播放幻灯片.旋转.跳 ...

  5. sql简易的MRP资源分析

    写了个简易的MRP根据传进来的数据,进行上下级的判断,父表,子表 构思: 3张变量表,第一张用来存传进来的成品,这边对表做了循环就是成品是一样一样进去的,取成品表的第一行,将数据做父表和子表关联,取出 ...

  6. 使用 rem 实现 适配各种屏幕布局

    年数已久!!!技术更新太快,谨慎观看,不过作为了解一下思路还是可以的 在此呢,我只大略的谈一下在研究了px,em,rem,和手淘的做法之后,我所采用的做法及硬性规则: 我就不再过多的将上面三种单位的区 ...

  7. JAVA多线程学习1

    一.进程与线程 线程是指进程内的一个执行单元(可理解为程序内的一条执行路径),也是进程内的可调度实体. 线程与进程的区别: 1.线程是进程的一个执行单元,一个进程可以拥有多个线程,线程之间共享进程的地 ...

  8. php文本操作方法集合比较第2页

    fgets和fputs.fread和fwrite.fscanf和fprintf 格式化读写函数fscanf和fprintf fscanf函数,fprintf函数与前面使用的scanf和printf 函 ...

  9. PHP获取上个月、下个月、本月的日期(strtotime(),date())

    今天写程序的时候,突然发现了很早以前写的获取月份天数的函数,经典的switch版,但是获得上月天数的时候,我只是把月份-1了,估计当时太困了吧,再看到有种毛骨悚然的感觉,本来是想再处理一下的,但是一想 ...

  10. Windows 注册表 (未完成)

    由于最近需要用到注册表,并且操作很多系统设置,所以想吧关于微软注册表的东西都写出来,找了很久才发现,微软对于注册表做了很详细的说明,但是为了节省时间翻译文本为自动翻译,手动纠错,欢迎大家指出错误. 根 ...