5月编程语言排行榜:动态语言的前世今生
创始人
2024-07-01 04:30:49
0

【51CTO独家特稿】TIOBE近日发布了2010年5月的编程语言排行榜,上期榜单C语言反超Java,本期C继续以18.186%的份额领跑,Java则位居第二。排名三到五位的依然是C++、PHP、VB,以下是本期编程语言排行榜前十名榜单:

更多榜单回顾,欢迎访问:51CTO编程语言排行榜

2010年5月编程语言排行榜榜单
2010年5月编程语言排行榜榜单

仔细观察本期榜单的Top10,我们会发现其中半数是动态语言,它们是:PHP、Visual Basic、Python、Perl和JavaScript。今天我们就一起走进动态语言的前世今生。

前10名编程语言趋势走向 
前10名编程语言趋势走向

何谓动态?

对于动态语言,网上比较流行的说法是:程序在运行时可以改变其结构,新的函数可以被引进,已有的函数可以被删除,即程序在运行时可以发生结构上的变化。我们可以理解成:直接被解释执行的语言称为动态语言。而需要编译环境将程序转换为其它的中间编码再执行的语言称为静态语言。

事实上,动态语言的根本是在语言设计之初的编译策略选择,即:编译器能对一段程序作出哪些判定。如果一个语言使用的编译策略支持编译器静态决定某个问题,我们认为这个语言使用了一个静态(static)策略,或这说这个问题可以在编译时刻(compile time)决定。另一方面,一个只允许在运行程序的时刻做出决定的策略成为动态策略(dynamic policy),或这被认为需要在运行时刻(run time)作出决定,(以上摘自《编译原理 2ed》)。一门语言动态与否的重点是在编译和运行,这在应用场景方面所产生的不同与程序员的工作密切相关:你能做什么,在何时做。

动态语言的历史

世界上第一门动态语言(也是世界上第二门编程语言)是Lisp,其后很多语言都从Lisp身上继承了必要的优势基因(比如Smaltalk、Python、Ruby等),动态性就是其中之一。上世纪七十年代,Smalltalk语言出现,集合了面向对象和动态性获得当时开发界的认可;1986年Perl出现,高效的开发效率和极少的语法限制获得了大量程序员的欢迎,也使更多人领教了动态语言的魅力。

目前,主要的动态编程语言有:PHP、Visual Basic、Ruby、Python、JavaScript、Groovy和Perl等,从动态与静态语言趋势图可以看出,动态语言已经逐渐转变成主流的编程语言,它们是Web应用开发的主力,并以一种比较轻松的姿态渐渐走进软件开发的其他角落。动态语言近年的高速发展与其自身特点和IT界的高速发展有很大关系。

动态语言与静态语言走势图 
近十年动态语言与静态语言走势图

因何而动?

与静态语言不同,动态语言对类型的要求并不十分严格,代码简洁自由,一般的动态语言多为动态类型和弱类型,自身即支持泛型编程(这里的类型归纳并不绝对,一般认为Python属强类型语言,Groovy支持静态类型)。动态语言秉承的一个理念是:优化人的时间而不是机器的时间。因此动态语言会为提高程序员的生产力方面不遗余力,但对程序性能方面的影响也不可忽视。

51CTO一直提倡从应用场景和程序员生产力两个方面来评价一门语言或技术。站在程序员的角度,使用动态语言进行程序开发要比静态编译型语言更加轻松自如,没有过多的语法和编译限制。我们经常可以听到从其他语言转向Ruby或Python的人提到“编程的乐趣”,这种乐趣是源自动态语言更接近人的思维(而不是机器思维),更符合项目需求流程而不是项目实现流程;同样一个功能,动态语言可以用更小的代码量来实现。动态语言对程序员生产力的提高,是其大行其道的主要原因。

在性能方面,动态语言没有太大的优势,但动态语言的理念是:优化人的时间而不是机器的时间。提高开发者的生产力,宁肯牺牲部分的程序性能或者购买更高配置的硬件。随着IT业的不断发展和摩尔定律的作用,硬件相对于人件一直在贬值,这个理念便有了合理的现实基础。从动态与静态语言趋势图可以看出,动态语言的抬升自2002年开始,2004年达到高潮,这一区间也正是计算机硬件价格大幅降低、互联网高速发展的时段。动态语言的流行,事实上是动态语言的相关特性迎合了互联网和IT界的发展,提高了程序员的生产力;虽然具有种种性能方面的不足,但很明显,动态语言的优点战胜了这些缺点。

#p#

其他编程语言及趋势

下面是本期榜单第21-50的编程语言排名:

其他编程语言及趋势 

其他编程语言及趋势 

 

 以下是本期第51-100的语言排名

ABC, Algol, APL, Applescript, Awk, Beta, cg, Clean, cT, Dylan, Eiffel, Euphoria, Factor, Falcon, Focus, Heron, Icon, IDL, Inform, Informix-4GL, Io, LabWindows/CVI, Lingo, LotusScript, LPC, MAD, Maple, Mathematica, MAX/MSP, Modula-2, Modula-3, MS-DOS batch, MUMPS, Natural, Occam, Oz, PL/I, Postscript, Progress, Q, R, Revolution, REXX, Sed, Seed7, SIGNAL, SPSS, VBScript, VHDL, XSLT

 

【2010年编程语言排行榜回顾】

  1. 4月编程语言排行榜:Top20里的“陌生人”
  2. 2010年3月编程语言排行榜:Fortran归来
  3. 2月编程语言排行榜:Objective-C的咏叹调
  4. 1月编程榜发布:Google Go意外夺得年度编程语言

 

相关内容

热门资讯

如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...
Windows恶意软件20年“... 在Windows的早期年代,病毒游走于系统之间,偶尔删除文件(但被删除的文件几乎都是可恢复的),并弹...
20个非常棒的扁平设计免费资源 Apple设备的平面图标PSD免费平板UI 平板UI套件24平图标Freen平板UI套件PSD径向平...
德国电信门户网站可实时显示全球... 德国电信周三推出一个门户网站,直观地实时提供其安装在全球各地的传感器网络检测到的网络攻击状况。该网站...
着眼MAC地址,解救无法享受D... 在安装了DHCP服务器的局域网环境中,每一台工作站在上网之前,都要先从DHCP服务器那里享受到地址动...
为啥国人偏爱 Mybatis,... 关于 SQL 和 ORM 的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行...