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到底是什么语言呢?本期编程语言排行榜便以Lua语言为主题,介绍这款以巴西总统的名字命名的移动开发语言新贵。推荐专题:移动开发之编程语言教程

(图)Lua语言

Lua是一个被设计成用于扩展C/C++编程的轻量级脚本语言,它的目标是成为一个很容易嵌入其它语言中使用的语言。Lua让C/C++编写的代码调用Lua脚本,同时C/C++函数也能够在Lua脚本中调用。与C/C++代码的交互性,让Lua在应用程序开发中有着广泛的应用基础。很多应用程序使用Lua作为自己的嵌入式脚本语言,以此来实现可配置性、可扩展性。

Lua名字的由来

小巧的Lua语言来自于巴西里约热内卢天主教大学的实验性项目。当初巴西里约热内卢天主教大学的师生为什么要给这款语言起名为“Lua”,很大程度上是向巴西著名政治家、前任总统路易斯·伊纳西奥·卢阿·达席尔瓦致敬。卢阿总统是是巴西历史上学历***,但是支持率***的总统,深受人民爱戴,作为巴西国家电子领域最重要的人才培养基地的里约热内卢天主教大学计算机研究生院把他们在计算机世界中最重要成就“Lua”语言与他们总统同名,可见他们对Lua语言给予了多么大的希望。

[[38551]]

巴西前总统卢阿

Lua语言在移动开发中的成功

2011年以前中国人对Lua语言的老家里约热内卢可以说是基本不了解,不过一部以小鸟爱情为主题的动画片《里约大冒险》让我们了解了里约热内卢的美丽风光。同样一个小鸟保卫鸟蛋的游戏《愤怒的小鸟》让Lua语言风靡开发者的世界。(扩展阅读《开发愤怒的小鸟的Lua语言:Wax框架详解1》、《开发愤怒的小鸟的Lua语言:Wax框架详解2》)

(图)里约大冒险版《愤怒的小鸟》

像前文所说Lua语法简洁优美,解释器由标准C编写。以快速小巧著称的Lua拥有在目前所有脚本引擎中最快的运行速度,这样的特性让Lua成为用作嵌入式脚本的***选择。但是,Lua语言被人们所熟知还要追述到1年前乔布斯的苹果将Lua语言引进iOS平台,直到现在已经有很多iPhone的应用写入到Lua中。而Lua语言凭借其代码几乎能在所有操作系统和移动终端上编译运行的这一特性,不但可以在iOS这一移动平台开发,同样也可以在Android等其他平台上开发。曾介绍过Lua语言的SDK库Corona。有了Corona SDK以后Lua语言不但可以支持iOS,还可以支持Android平台。以上这些原因使Lua语言在Tiobe编程语言排行榜上迅速攀升,成为移动开发领域的新贵。

Lua的技术特点

目前Lua语言的***版本是5.2 Beta,Lua也能对面向对象编程,函数式编程,数据驱动式编程提供很好的支持。作为一个扩展式语言,Lua没有 "main" 程序的概念:它只能嵌入一个宿主程序中工作,这个宿主程序被称作embedding program或简称为host。宿主程序可以通过调用函数执行一小段Lua代码,可以读写Lua变量,可以注入C函数让Lua代码调用。这些扩展的C函数,可以大大的扩展了Lua可以处理事务的领域,这样就可以订制出各种语言,而它们共享一个统一的句法格式的框架。Lua的官方发布版就包含了一个叫做Lua的简单的宿主程序,它用Lua库提供了一个保证独立的Lua解释器。

写一个最最简单的程序——Hello World。

 
 
 
 
  1. print("Hello World") 

假定你把上面这句保存在hello.lua文件中,你在命令行只需要:

 
 
 
 
  1. prompt> lua hello.lua 

看到结果了吗?

让我们来看一个稍微复杂点的例子:

 
 
 
 
  1. -- defines a factorial function  
  2. function fact (n)  
  3.     if n == 0 then  
  4.        return 1  
  5.     else  
  6.        return n * fact(n-1)  
  7.     end  
  8. end  
  9.    
  10. print("enter a number:")  
  11. a = io.read("*number")      -- read a number  
  12. print(fact(a)) 

这个例子定义了一个函数,计算输入参数n的阶乘;本例要求用户输入一个数字n,然后打印n的阶乘。

(图)魔兽世界插件中的“Hello World”

很多网站宣传Lua语言作为脚本开发了《魔兽世界》,其实Lua语言只是开发了《魔兽世界》的插件,几乎所有的《魔兽世界》插件都是使用解释性的脚本Lua编写,核心的C++代码只占全部代码中的很小一部分比重。在传统平台上Lua***的应用场景是在游戏中作为处理逻辑的脚本,即用来编写游戏的任务脚本,以实现游戏的可配置性和可扩展性。在游戏中Lua脚本的加载不需重启服务器,尽管脚本的运行效率低于编译好的二进制代码,但目前CPU速度已完全能够让Lua脚本迅速解释执行。这也正是包括《魔兽世界》、《战锤40K》、《仙境传说》、《博德之门》和《轩辕剑外传汉之云》在内的众多游戏选择Lua开发插件的原因。

(图)魔兽世界中游戏内插件开发的布局器

想学习Lua语言的朋友还可以到下载频道魔兽世界Lua插件的编辑器来试验一下。

#p#

下面是本期编程语言排行榜的其他排名数据和趋势走向。

前10名编程语言走势图

20到50名语言排行

PositionProgramming LanguageRatings
21Logo0.596%
22PL/SQL0.525%
23Scheme0.497%
24Go0.482%
25C shell0.475%
26Visual Basic .NET0.464%
27Q0.458%
28D0.445%
29MATLAB0.444%
30SAS0.414%
31R0.404%
32Forth0.399%
33Scratch0.399%
34Fortran0.385%
35Haskell0.370%
36NXT-G0.356%
37ML0.343%
38NATURAL0.337%
39Clean0.336%
40LabVIEW0.311%
41ActionScript0.308%
42ABAP0.303%
43Icon0.302%
44PL/I0.290%
45OpenEdge ABL0.286%
46Alice0.283%
47COBOL0.281%
48Erlang0.275%
49MOO0.273%
50Prolog0.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

不同语言的比例

 下面给出了编程语言类别的一年变化趋势

 

【2011年榜单回顾】

  1. 2011年7月编程语言排行榜:COBOL五角大楼出品
  2. 2011年6月编程语言排行榜:为孩子创造的语言Scratch
  3. 2011年5月编程语言排行榜:用MATLAB构建宇宙
  4. 2011年4月编程语言排行榜:告别Smalltalk
  5. 2011年3月编程语言排行榜:用Ada向人类首位程序员致敬
  6. 2011年2月编程语言排行榜:冰河时代的Fortran
  7. 2011年1月编程语言排行榜:Python称霸2010

【责任编辑:陈贻新 TEL:(010)68476606】

THE END