2014 年十大编程语言

oschina
 oschina
发布于 2015年01月04日
收藏 75

近日,IEEE Spectrum推出 了一个最流行的编程语言排行榜。排行榜筛选了 12 项指标,综合了 10 个来源(含 IEEE Xplore、Google、GitHub)的数据,最终评选出了下面这个排行榜(满分 100,得分越高排名越靠前),其中的十大编程语言分别是:

1、    Java
2、    C
3、    C++
4、    CNo.
5、    Python
6、    JavaScript
7、    PHP
8、    Ruby
9、    SQL
10、MATLAB

按照类型排名,各类主要编程语言的排行榜分别是:

编译型语言:

1、    Java(总排名 No.1)
2、    C(No.2)
3、    C++(No.3)
4、    C#(No.4)
5、    Objective-C(No.16)

解释型语言

1、    Python(No.5)
2、    JavaScript(No.6)
3、    PHP(No.7)
4、    Ruby(No.8)
5、    Perl(No.11)
6、    HTML(No.12)

数据语言

1、    SQL(No.9)
2、    MATLAB(No.10)
3、    R(No.13)

其中值得注意的是,不少古董级的语言依然具有很强的生命力。比方说汇编语言还排在 15 的高位,VB(No.14)仍然受追捧,甚至 Delphi 也挤进了前 30(No.27)。而有的语言则属于典型的大树底下好乘凉,明显受到了推出者的强势影响。比如 Objective-C 得益于苹果生态体系的强大(Swift 因为推出时间短未进入前 30),而 Go 则很大程度上是因为 Google 的作用。

尽管我们并不清楚榜单排行的具体指标是什么,但是如果想通过语言流行度来决定学习方向并不是好的做法。因为语言知识工具,关键在于你想用它来做什么。Michael McLaughlin 提出了自己的建议

开发商业软件,推荐:Java, C++, CNo., and AIDE – Android IDE (适用于 Java 和 C++ 源码)

OS X and iOS 开发:Objective-C

开发工具:C、C++ 与 Python

Web 开发:Python、PHP、Ruby 与 Perl

数据分析:SQL、MATLAB 和 R

也有不少网友对这个榜单提出了一些质疑。比方说,如果以图灵完整性来衡量,HTML 算语言吗?

稿源:36kr

本站文章除注明转载外,均为本站原创或编译。欢迎任何形式的转载,但请务必注明出处,尊重他人劳动共创开源社区。
转载请注明:文章转载自 OSCHINA 社区 [http://www.oschina.net]
本文标题:2014 年十大编程语言
加载中

最新评论(92

undefines
undefines
Python很好
李文轩
李文轩

引用来自“魏曼奇”的评论

考虑到|C完全就是C++的子集(几乎所有编译器都支持),那么C++是当仁不让的第一,原超Java。

引用来自“Greatim”的评论

是指语言,又不是指编译器。
另外,VC++对C的支持很不给力。

引用来自“魏曼奇”的评论

C++从语言定义上就完全支持C,VC++只是对C++的新标准支持不够好,但对C的支持是没问题的,因为VC++的编译器本身就脱胎于MS的C编译器。

引用来自“月落苍穹”的评论

C++和C是完全不同的两种语言。
仅仅从语言层面抬杠的来说,C++从一开始就不完全支持C的,C的一些废弃用法在C++中是语法错误。而且C++比C更加严谨,很多C能通过的而C++编译不过去。尤其后来的C和C++标准各自独立发展,比如C99、C11,C++根本就不完全支持。

引用来自“李文轩”的评论

标准化的时候是分了,但还是努力向内靠的。
C++98当然兼容不了C99,但C++11就能兼容C99的一些特征如long long、int32_t。
http://www.stroustrup.com/C++11FAQ.html#C99
这次C11和C++11,两家的大版本同年发布,也是照顾一些兼容性的。

引用来自“Greatim”的评论

同年发布跟照顾兼容性扯不到一块去吧,想兼容什么时候都能发布,后来C++14,C++17难道C也跟进了?C的要求是声明放在前面,C++的要求则是声明即赋值,两者语义表达的就是不同的东西。尽管编译器优化之后,可能比较接近。两种语言就是两种语言,刚一开始推出C++时候,兼容意义很大,后面的兼容,顶多就是避免混乱而已

引用来自“李文轩”的评论

可能我没有充分表达我的意思。
A兼容B,大约需要A晚发布于B;A和B互相兼容,就需要A、B起草新标准的时候互相沟通,更大的概率导致基本同时发布。
这里说的兼容当然也不是完全说编译器兼容,也指开发者的熟悉。如,alignof、noreturn、原子操作库、线程支持库。
"C的要求是声明放在前面,C++的要求则是声明即赋值,两者语义表达的就是不同的东西"此句待议。
C想要的是简单和自由,C++想要的是全面和自由。

引用来自“Greatim”的评论

C11 里面增加 _Atomic 关键字,C++11里面增加了没有,_Noreturn 呢,说好的兼容呢?C++实现就要用别的方式。语言之间互相抄袭特性是常事,C和C++之间不抄才反常了。保持兼容是没必要的,因为你把C改成Cpp之后,代码必须修改,而且改动不小。你觉得C++14改动小,但是14是11的重要改进,是成熟化方案。C++17没出,但是已经在部署,再往前看,C99的时候也不见c++99吧
me坤子
me坤子

引用来自“异类觉醒者”的评论

python 比 php 排名高,这合理吗?

引用来自“肖滔”的评论

反人类
又不是中国的排名
Greatim
Greatim

引用来自“魏曼奇”的评论

考虑到|C完全就是C++的子集(几乎所有编译器都支持),那么C++是当仁不让的第一,原超Java。

引用来自“Greatim”的评论

是指语言,又不是指编译器。
另外,VC++对C的支持很不给力。

引用来自“魏曼奇”的评论

C++从语言定义上就完全支持C,VC++只是对C++的新标准支持不够好,但对C的支持是没问题的,因为VC++的编译器本身就脱胎于MS的C编译器。

引用来自“月落苍穹”的评论

C++和C是完全不同的两种语言。
仅仅从语言层面抬杠的来说,C++从一开始就不完全支持C的,C的一些废弃用法在C++中是语法错误。而且C++比C更加严谨,很多C能通过的而C++编译不过去。尤其后来的C和C++标准各自独立发展,比如C99、C11,C++根本就不完全支持。

引用来自“李文轩”的评论

标准化的时候是分了,但还是努力向内靠的。
C++98当然兼容不了C99,但C++11就能兼容C99的一些特征如long long、int32_t。
http://www.stroustrup.com/C++11FAQ.html#C99
这次C11和C++11,两家的大版本同年发布,也是照顾一些兼容性的。

引用来自“Greatim”的评论

同年发布跟照顾兼容性扯不到一块去吧,想兼容什么时候都能发布,后来C++14,C++17难道C也跟进了?C的要求是声明放在前面,C++的要求则是声明即赋值,两者语义表达的就是不同的东西。尽管编译器优化之后,可能比较接近。两种语言就是两种语言,刚一开始推出C++时候,兼容意义很大,后面的兼容,顶多就是避免混乱而已

引用来自“李文轩”的评论

C++11是个大版本,C++14不是。C++14收尾工作完成了么?
C++14的改动较少,基本上是lambda方向,和C关系不大。
现在是2015年,说C++17好像有点早。
http://www.zhihu.com/question/27583316

C and C++: Siblings by Bjarne Stroustrup

其实就是政治原因,C 标准委员会的人跟C++标准会员会重合度不高(而且据说C99标准会员会的人和C89的重合度也不高),C++ 热脸贴了 C 的冷屁股。
C++98 倒是尽量保持和 C89 兼容,但是 C99 故意搞得和 C++98 不兼容,例如引入 _Bool 类型,而不是使用 C++ 定义的 bool 类型。类似的还有 const,C++ 的 const 全局变量大致等于 C 的 static const 全局变量。(To language lawyer: 不要跟我这儿提“C 没有全局变量"了,OK?)

C 语言里 sizeof('a') == sizeof(int),而 C++ 里 sizeof('a') == sizeof(char) == 1。
C 语言里 void f() == void f(...),而 C++ 里 void f() == void f(void) 。
C 语言里多个 .c 文件可以放全局的 int x; (无初值) ,而 C++ 会认为重复定义。
Greatim
Greatim

引用来自“魏曼奇”的评论

考虑到|C完全就是C++的子集(几乎所有编译器都支持),那么C++是当仁不让的第一,原超Java。

引用来自“Greatim”的评论

是指语言,又不是指编译器。
另外,VC++对C的支持很不给力。

引用来自“魏曼奇”的评论

C++从语言定义上就完全支持C,VC++只是对C++的新标准支持不够好,但对C的支持是没问题的,因为VC++的编译器本身就脱胎于MS的C编译器。

引用来自“月落苍穹”的评论

C++和C是完全不同的两种语言。
仅仅从语言层面抬杠的来说,C++从一开始就不完全支持C的,C的一些废弃用法在C++中是语法错误。而且C++比C更加严谨,很多C能通过的而C++编译不过去。尤其后来的C和C++标准各自独立发展,比如C99、C11,C++根本就不完全支持。

引用来自“李文轩”的评论

标准化的时候是分了,但还是努力向内靠的。
C++98当然兼容不了C99,但C++11就能兼容C99的一些特征如long long、int32_t。
http://www.stroustrup.com/C++11FAQ.html#C99
这次C11和C++11,两家的大版本同年发布,也是照顾一些兼容性的。

引用来自“Greatim”的评论

同年发布跟照顾兼容性扯不到一块去吧,想兼容什么时候都能发布,后来C++14,C++17难道C也跟进了?C的要求是声明放在前面,C++的要求则是声明即赋值,两者语义表达的就是不同的东西。尽管编译器优化之后,可能比较接近。两种语言就是两种语言,刚一开始推出C++时候,兼容意义很大,后面的兼容,顶多就是避免混乱而已

引用来自“李文轩”的评论

可能我没有充分表达我的意思。
A兼容B,大约需要A晚发布于B;A和B互相兼容,就需要A、B起草新标准的时候互相沟通,更大的概率导致基本同时发布。
这里说的兼容当然也不是完全说编译器兼容,也指开发者的熟悉。如,alignof、noreturn、原子操作库、线程支持库。
"C的要求是声明放在前面,C++的要求则是声明即赋值,两者语义表达的就是不同的东西"此句待议。
C想要的是简单和自由,C++想要的是全面和自由。
C11 里面增加 _Atomic 关键字,C++11里面增加了没有,_Noreturn 呢,说好的兼容呢?C++实现就要用别的方式。语言之间互相抄袭特性是常事,C和C++之间不抄才反常了。保持兼容是没必要的,因为你把C改成Cpp之后,代码必须修改,而且改动不小。你觉得C++14改动小,但是14是11的重要改进,是成熟化方案。C++17没出,但是已经在部署,再往前看,C99的时候也不见c++99吧
李文轩
李文轩

引用来自“魏曼奇”的评论

考虑到|C完全就是C++的子集(几乎所有编译器都支持),那么C++是当仁不让的第一,原超Java。

引用来自“Greatim”的评论

是指语言,又不是指编译器。
另外,VC++对C的支持很不给力。

引用来自“魏曼奇”的评论

C++从语言定义上就完全支持C,VC++只是对C++的新标准支持不够好,但对C的支持是没问题的,因为VC++的编译器本身就脱胎于MS的C编译器。

引用来自“月落苍穹”的评论

C++和C是完全不同的两种语言。
仅仅从语言层面抬杠的来说,C++从一开始就不完全支持C的,C的一些废弃用法在C++中是语法错误。而且C++比C更加严谨,很多C能通过的而C++编译不过去。尤其后来的C和C++标准各自独立发展,比如C99、C11,C++根本就不完全支持。

引用来自“李文轩”的评论

标准化的时候是分了,但还是努力向内靠的。
C++98当然兼容不了C99,但C++11就能兼容C99的一些特征如long long、int32_t。
http://www.stroustrup.com/C++11FAQ.html#C99
这次C11和C++11,两家的大版本同年发布,也是照顾一些兼容性的。

引用来自“Greatim”的评论

同年发布跟照顾兼容性扯不到一块去吧,想兼容什么时候都能发布,后来C++14,C++17难道C也跟进了?C的要求是声明放在前面,C++的要求则是声明即赋值,两者语义表达的就是不同的东西。尽管编译器优化之后,可能比较接近。两种语言就是两种语言,刚一开始推出C++时候,兼容意义很大,后面的兼容,顶多就是避免混乱而已
C++11是个大版本,C++14不是。C++14收尾工作完成了么?
C++14的改动较少,基本上是lambda方向,和C关系不大。
现在是2015年,说C++17好像有点早。
李文轩
李文轩

引用来自“魏曼奇”的评论

考虑到|C完全就是C++的子集(几乎所有编译器都支持),那么C++是当仁不让的第一,原超Java。

引用来自“Greatim”的评论

是指语言,又不是指编译器。
另外,VC++对C的支持很不给力。

引用来自“魏曼奇”的评论

C++从语言定义上就完全支持C,VC++只是对C++的新标准支持不够好,但对C的支持是没问题的,因为VC++的编译器本身就脱胎于MS的C编译器。

引用来自“月落苍穹”的评论

C++和C是完全不同的两种语言。
仅仅从语言层面抬杠的来说,C++从一开始就不完全支持C的,C的一些废弃用法在C++中是语法错误。而且C++比C更加严谨,很多C能通过的而C++编译不过去。尤其后来的C和C++标准各自独立发展,比如C99、C11,C++根本就不完全支持。

引用来自“李文轩”的评论

标准化的时候是分了,但还是努力向内靠的。
C++98当然兼容不了C99,但C++11就能兼容C99的一些特征如long long、int32_t。
http://www.stroustrup.com/C++11FAQ.html#C99
这次C11和C++11,两家的大版本同年发布,也是照顾一些兼容性的。

引用来自“Greatim”的评论

同年发布跟照顾兼容性扯不到一块去吧,想兼容什么时候都能发布,后来C++14,C++17难道C也跟进了?C的要求是声明放在前面,C++的要求则是声明即赋值,两者语义表达的就是不同的东西。尽管编译器优化之后,可能比较接近。两种语言就是两种语言,刚一开始推出C++时候,兼容意义很大,后面的兼容,顶多就是避免混乱而已
可能我没有充分表达我的意思。
A兼容B,大约需要A晚发布于B;A和B互相兼容,就需要A、B起草新标准的时候互相沟通,更大的概率导致基本同时发布。
这里说的兼容当然也不是完全说编译器兼容,也指开发者的熟悉。如,alignof、noreturn、原子操作库、线程支持库。
"C的要求是声明放在前面,C++的要求则是声明即赋值,两者语义表达的就是不同的东西"此句待议。
C想要的是简单和自由,C++想要的是全面和自由。
李文轩
李文轩

引用来自“魏曼奇”的评论

这些语言中,还有什么语言比C和C++拥有更大的交集?甚至共享编译器(解释器)?我是看不出来。美国人说:它看起来像只鸭子,走起来像只鸭子,叫起来像只鸭子,那它就是只鸭子。C++写的程序完全可以象C那样,完全符合鸭子的定义。些许差异不能否定他们巨大的共性。
鸭子是用来表示接口的吧
卧龙腾飞
卧龙腾飞
Java 老兵一个,加油!
Bruce_Yu
Bruce_Yu

引用来自“南宫天明”的评论

下面我来简单的说两句:
因为功能需求不同 所需要的语言也就不同了
比如C、C#、C++这些是用来制作软件用的(虽然我没有学习过C语言)
比如PHP 是用来制作网页用的
比如JAVASCRIPT 是制作页面特效用的
比如HTML5+CSS3是用来网页布局渲染用的

功能需求不一样 语言也就不一样吧

不过在天朝 我认为会以下几大语言你就很强大了:
PHP+MYSQL+JAVASCRIPT+HTML5+CSS3
特别是在前端这一块 更吃香...

引用来自“coder_mu”的评论

你工作超过一年了没?。。。

引用来自“南宫天明”的评论

五年
我擦,工作5年了,用居然php还没有用到C写扩展。。。
返回顶部
顶部