8月编程语言排行榜:以总统为名的语言新贵Lua
8月4日,Tiobe公布了最新的8月编程语言排行榜,和7月榜单相比,最大变动就数微软的F#了,F#首次进入TOP20。1至10名中,PHP重返第4,C#则到了第5,其他不变。不过看看最近人气上升的F# ,就没有什么好奇怪的了。作为一种不错的程序设计语言,微软最新的Visual Studio 2010中也包含了F#。
下面是前20名的编程语言排行
2011年6月、7月的Tiobe编程语言排行榜都介绍了移动开发语言Lua,其中7月编程语言排行榜以年度语言预测为主题,直言Lua是2011年度唯一有机会挑战Objective-C的语言。但是Lua到底是什么语言呢?本期51CTO编程语言排行榜便以Lua语言为主题,介绍这款以巴西总统的名字命名的移动开发语言新贵。51CTO推荐专题:移动开发之编程语言教程
(图)Lua语言
Lua是一个被设计成用于扩展C/C++编程的轻量级脚本语言,它的目标是成为一个很容易嵌入其它语言中使用的语言。Lua让C/C++编写的代码调用Lua脚本,同时C/C++函数也能够在Lua脚本中调用。与C/C++代码的交互性,让Lua在应用程序开发中有着广泛的应用基础。很多应用程序使用Lua作为自己的嵌入式脚本语言,以此来实现可配置性、可扩展性。
Lua名字的由来
小巧的Lua语言来自于巴西里约热内卢天主教大学的实验性项目。当初巴西里约热内卢天主教大学的师生为什么要给这款语言起名为“Lua”,很大程度上是向巴西著名政治家、前任总统路易斯·伊纳西奥·卢阿·达席尔瓦致敬。卢阿总统是是巴西历史上学历最低,但是支持率最高的总统,深受人民爱戴,作为巴西国家电子领域最重要的人才培养基地的里约热内卢天主教大学计算机研究生院把他们在计算机世界中最重要成就“Lua”语言与他们总统同名,可见他们对Lua语言给予了多么大的希望。
巴西前总统卢阿
Lua语言在移动开发中的成功
(图)里约大冒险版《愤怒的小鸟》
Lua的技术特点
目前Lua语言的最新版本是5.2 Beta,Lua也能对面向对象编程,函数式编程,数据驱动式编程提供很好的支持。作为一个扩展式语言,Lua没有 "main" 程序的概念:它只能嵌入一个宿主程序中工作,这个宿主程序被称作embedding program或简称为host。宿主程序可以通过调用函数执行一小段Lua代码,可以读写Lua变量,可以注入C函数让Lua代码调用。这些扩展的C函数,可以大大的扩展了Lua可以处理事务的领域,这样就可以订制出各种语言,而它们共享一个统一的句法格式的框架。Lua的官方发布版就包含了一个叫做Lua的简单的宿主程序,它用Lua库提供了一个保证独立的Lua解释器。
写一个最最简单的程序——Hello World。
print("Hello World")
假定你把上面这句保存在hello.lua文件中,你在命令行只需要:
prompt> lua hello.lua
看到结果了吗?
让我们来看一个稍微复杂点的例子:
-- defines a factorial function function fact (n) if n == 0 then return 1 else return n * fact(n-1) end end print("enter a number:") a = io.read("*number") -- read a number print(fact(a))
这个例子定义了一个函数,计算输入参数n的阶乘;本例要求用户输入一个数字n,然后打印n的阶乘。
(图)魔兽世界插件中的“Hello World”
很多网站宣传Lua语言作为脚本开发了《魔兽世界》,其实Lua语言只是开发了《魔兽世界》的插件,几乎所有的《魔兽世界》插件都是使用解释性的脚本Lua编写,核心的C++代码只占全部代码中的很小一部分比重。在传统平台上Lua最流行的应用场景是在游戏中作为处理逻辑的脚本,即用来编写游戏的任务脚本,以实现游戏的可配置性和可扩展性。在游戏中Lua脚本的加载不需重启服务器,尽管脚本的运行效率低于编译好的二进制代码,但目前CPU速度已完全能够让Lua脚本迅速解释执行。这也正是包括《魔兽世界》、《战锤40K》、《仙境传说》、《博德之门》和《轩辕剑外传汉之云》在内的众多游戏选择Lua开发插件的原因。
(图)魔兽世界中游戏内插件开发的布局器
下面是本期编程语言排行榜的其他排名数据和趋势走向。
前10名编程语言走势图
20到50名语言排行
Position | Programming Language | Ratings |
21 | Logo | 0.596% |
22 | PL/SQL | 0.525% |
23 | Scheme | 0.497% |
24 | Go | 0.482% |
25 | C shell | 0.475% |
26 | Visual Basic .NET | 0.464% |
27 | Q | 0.458% |
28 | D | 0.445% |
29 | MATLAB | 0.444% |
30 | SAS | 0.414% |
31 | R | 0.404% |
32 | Forth | 0.399% |
33 | Scratch | 0.399% |
34 | Fortran | 0.385% |
35 | Haskell | 0.370% |
36 | NXT-G | 0.356% |
37 | ML | 0.343% |
38 | NATURAL | 0.337% |
39 | Clean | 0.336% |
40 | LabVIEW | 0.311% |
41 | ActionScript | 0.308% |
42 | ABAP | 0.303% |
43 | Icon | 0.302% |
44 | PL/I | 0.290% |
45 | OpenEdge ABL | 0.286% |
46 | Alice | 0.283% |
47 | COBOL | 0.281% |
48 | Erlang | 0.275% |
49 | MOO | 0.273% |
50 | Prolog | 0.264% |
下面是第50到100的编程语言排名
(Visual) FoxPro, ABC, Algol, APL, Arc, ATLAS, Avenue, Awk, Bash, bc, BETA, BlitzMax, Boo, Bourne shell, CFML, cg, CL (OS/400), Cobra, cT, Dylan, Eiffel, Factor, Groovy, Inform, Io, J, Ladder Logic, MAD, Magic, Maple, Mercury, Monkey, MUMPS, Oberon, Occam, OpenCL, Oz, PILOT, PowerShell, Revolution, S, Scala, Smalltalk, Standard ML, SuperCollider, Tcl, TOM, VBScript, VHDL, X10
不同语言的比例
下面给出了编程语言类别的一年变化趋势