亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        Lua
        ——以總統(tǒng)為名的移動(dòng)開(kāi)發(fā)語(yǔ)言新貴

        2014-03-14 01:26:12楊杰
        電腦與電信 2014年4期
        關(guān)鍵詞:腳本語(yǔ)言編程語(yǔ)言程序員

        楊杰

        (武漢職業(yè)技術(shù)學(xué)院電信學(xué)院,湖北 武漢 430074)

        Lua
        ——以總統(tǒng)為名的移動(dòng)開(kāi)發(fā)語(yǔ)言新貴

        楊杰

        (武漢職業(yè)技術(shù)學(xué)院電信學(xué)院,湖北 武漢 430074)

        本文為移動(dòng)設(shè)備編程人員介紹了一種簡(jiǎn)單、輕量的編程語(yǔ)言——Lua,介紹了這種編程語(yǔ)言的來(lái)歷,詳細(xì)分析了Lua語(yǔ)言的編程特點(diǎn),最后介紹了Lua語(yǔ)言在移動(dòng)設(shè)備開(kāi)發(fā)的應(yīng)用。

        Lua;腳本語(yǔ)言

        1.Lua簡(jiǎn)介

        2014年3月,Tiobe公布了最新的編程語(yǔ)言前20位排行榜,和2012年榜單相比,Lua語(yǔ)言從21位升到19位有較大的升幅。

        表1 2013年編程語(yǔ)言排行榜

        Lua到底是什么編程語(yǔ)言呢?本文以Lua語(yǔ)言為主題,介紹這款以巴西總統(tǒng)的名字命名的移動(dòng)開(kāi)發(fā)語(yǔ)言新貴。

        1993年在巴西里約熱內(nèi)盧天主教大學(xué)(Pontifical Catholic University of Rio de Janeiro in Brazil)誕生了一門編程語(yǔ)言,發(fā)明者是該校的三位研究人員,他們給這門語(yǔ)言取了個(gè)浪漫的名字——Lua,在葡萄牙語(yǔ)里代表美麗的月亮。事實(shí)證明它沒(méi)有糟蹋這個(gè)優(yōu)美的單詞,Lua語(yǔ)言正如它名字所預(yù)示的那樣成長(zhǎng)為一門簡(jiǎn)潔、優(yōu)雅且富有樂(lè)趣的語(yǔ)言,圖1為L(zhǎng)ua語(yǔ)言的標(biāo)識(shí)。

        圖1Lua語(yǔ)言

        當(dāng)初巴西里約熱內(nèi)盧天主教大學(xué)的師生為什么要給這款語(yǔ)言起名為“Lua”,很大程度上是向巴西著名政治家、前任總統(tǒng)路易斯·伊納西奧·盧阿·達(dá)席爾瓦致敬。盧阿總統(tǒng)是巴西歷史上學(xué)歷最低,但是支持率最高的總統(tǒng),深受人民愛(ài)戴。作為巴西國(guó)家電子領(lǐng)域最重要的人才培養(yǎng)基地的里約熱內(nèi)盧天主教大學(xué)計(jì)算機(jī)研究生院把他們?cè)谟?jì)算機(jī)世界中最重要成就“Lua”語(yǔ)言與他們總統(tǒng)同名,可見(jiàn)他們對(duì)Lua語(yǔ)言給予了多么大的希望。

        Lua從一開(kāi)始就是作為一門方便嵌入(其它應(yīng)用程序)并可擴(kuò)展的輕量級(jí)腳本語(yǔ)言來(lái)設(shè)計(jì)的,因此它一直遵從著簡(jiǎn)單、小巧、可移植、快速的原則,官方實(shí)現(xiàn)完全采用ANSI C編寫(xiě),能以C程序庫(kù)的形式嵌入到宿主程序中。Lua的每個(gè)版本都保持著開(kāi)放源碼的傳統(tǒng),不過(guò)各版采用的許可協(xié)議并不相同。自5.0版(最新版是5.2)開(kāi)始,由于采用的是著名的MIT許可協(xié)議,Lua在游戲開(kāi)發(fā)、機(jī)器人控制、分布式應(yīng)用、圖像處理、生物信息學(xué)等各種各樣的領(lǐng)域中得到了越來(lái)越廣泛的應(yīng)用。其中尤以游戲開(kāi)發(fā)為最,許多著名的游戲,比如魔獸世界、博德之門、憤怒的小鳥(niǎo)、大話西游,都采用了Lua來(lái)配合引擎完成數(shù)據(jù)描述、配置管理和邏輯控制等任務(wù)。

        Lua是一個(gè)被設(shè)計(jì)成用于擴(kuò)展C/C++編程的輕量級(jí)腳本語(yǔ)言[3],它的目標(biāo)是成為一個(gè)很容易嵌入其它語(yǔ)言中使用的語(yǔ)言。Lua讓C/C++編寫(xiě)的代碼調(diào)用Lua腳本,同時(shí)C/C++函數(shù)也能夠在Lua腳本中調(diào)用。與C/C++代碼的交互性,讓Lua在應(yīng)用程序開(kāi)發(fā)中有著廣泛的應(yīng)用基礎(chǔ)。很多應(yīng)用程序使用Lua作為自己的嵌入式腳本語(yǔ)言,以此來(lái)實(shí)現(xiàn)可配置性、可擴(kuò)展性。

        2.Lua的特點(diǎn)

        2.1 可以和C/C++語(yǔ)言集成

        很多種語(yǔ)言包括Lisp、Scheme、Python、Perl、Bash、VBA、SQL等等,它們沒(méi)有一個(gè)可以像Lua那樣可以和C語(yǔ)言混合使用。C語(yǔ)言的API非常干凈和直觀,程序員花很短的時(shí)間就可以上手。

        為什么這個(gè)特性很重要呢?首先,如果你有現(xiàn)成的C/ C++類庫(kù),可以很容易地在Lua中調(diào)用這些API。或者也可以寫(xiě)一個(gè)腳本讓Lua在C中執(zhí)行。這也意味著Lua的程序不會(huì)有速度問(wèn)題。如果還是覺(jué)得Lua不夠快的話,可以用C完全重寫(xiě)這段代碼。雖然別的語(yǔ)言的程序也可以用C重寫(xiě),但是還沒(méi)有發(fā)現(xiàn)誰(shuí)能比Lua更方便地做到這一點(diǎn)。

        可擴(kuò)展的Lua并不像其它許多“大而全”的語(yǔ)言那樣,包括很多功能,比如網(wǎng)絡(luò)通訊、圖形界面等。但是Lua提供了非常易于使用的擴(kuò)展接口和機(jī)制:由宿主語(yǔ)言(通常是C或C++)提供這些功能,Lua可以使用它們,就像是本來(lái)就內(nèi)置的功能一樣。

        2.2 快速、簡(jiǎn)潔

        相比于其它語(yǔ)言,Lua的實(shí)現(xiàn)是非常高效的。也許是因?yàn)長(zhǎng)ua使用的是“基于寄存器的虛擬機(jī)”,而不是基于堆棧的虛擬機(jī)。你幾乎不需要顧慮Lua代碼的性能問(wèn)題。

        輕量級(jí)Lua語(yǔ)言的官方版本只包括一個(gè)精簡(jiǎn)的核心和最基本的庫(kù)。這使得Lua體積小、啟動(dòng)速度快,從而適合嵌入在別的程序里。5.0.2版的Lua的內(nèi)核小于120KB,而Python的內(nèi)核大約860KB,Perl的內(nèi)核大約1.1MB[4]。

        Lua的語(yǔ)法類似PASCAL和Modula,但更加簡(jiǎn)潔,所有的語(yǔ)法產(chǎn)生式規(guī)則(EBNF)不過(guò)才60幾個(gè)。熟悉C和PASCAL的程序員一般只需半個(gè)小時(shí)便可將其完全掌握。而在語(yǔ)義上Lua則與Scheme極為相似,Scheme的continuation與協(xié)程也基本相同,只是自由度更高。最引人注目的是,兩種語(yǔ)言都只提供唯一一種數(shù)據(jù)結(jié)構(gòu):Lua的表和Scheme的列表(list)。正因?yàn)槿绱耍腥松踔练QLua為“只用表的Scheme”。

        2.3 教育作用

        雖然這不是一個(gè)編程語(yǔ)言的功能,但是使用Lua可以使得程序員對(duì)計(jì)算機(jī)科學(xué)的整體了解有所提高,使程序員對(duì)虛擬機(jī)是如何實(shí)現(xiàn)的有了一個(gè)了解。這一切都得益于Lua有條不紊的改進(jìn)。

        2.4 函數(shù)式編程

        Lua提供了函數(shù)式編程的架構(gòu),讓編程更加有趣。例如anonymous functions,higher order functions,lexical closures,proper tail calls等等。這些特性不是語(yǔ)言的一些語(yǔ)法糖,而是Lua從底層就整合了這些特性。比如說(shuō),Lua的每一個(gè)方法都是一個(gè)值(比如數(shù)字2,或者字符串“ktr”),也就意味著每一個(gè)方法都是匿名的。你只要給它取個(gè)名字,然后你就可以調(diào)用它了。比如可以給print重新賦值:

        print=math.sin

        程序員可以利用這個(gè)功能創(chuàng)建沙箱。如果print是一個(gè)危險(xiǎn)的操作,可以替換成自己的print方法或者從全局中刪除這個(gè)方法。

        2.5 任何東西都是一張表

        在Lua中,任何一個(gè)變量類型都是一張表,例如Array,Hash,“module”或者全局變量等等。也就是說(shuō)你可以“require”一些模塊(類似Python的import語(yǔ)句)并且把結(jié)果當(dāng)作table來(lái)處理。在Python中,你可以__import__('...')一些模塊,然后返回值的變量就可以通過(guò)類似var(module)的方式來(lái)訪問(wèn)。在Lua中,你可以通過(guò)module[var]的方式來(lái)訪問(wèn)模塊中的變量。這里提到Python是為了強(qiáng)調(diào)不同之處,說(shuō)明Lua更容易使用。

        2.6 一致性

        Lua是非常一致的語(yǔ)言。它的很多功能都是做得恰到好處。比如說(shuō),Lua沒(méi)有“for”循環(huán)。直到Lua 4.0,也就是Lua語(yǔ)言發(fā)布7年以后才有“for”循環(huán)。這是因?yàn)閣hile循環(huán)更為通用,而且語(yǔ)法更簡(jiǎn)潔。Lua的開(kāi)發(fā)團(tuán)隊(duì)相對(duì)來(lái)說(shuō)比較保守,他們不接受patch,所以Lua的進(jìn)化比較緩慢,但是比較平穩(wěn)。我們知道所有的功能都是有規(guī)劃的在進(jìn)行,也就意味著我們不能指望所期待的功能可以被很快地實(shí)現(xiàn)。

        2.7 可移植性

        Lua基本上可以在任何環(huán)境中運(yùn)行。Lua的代碼是按照“Clean ANSI C”的標(biāo)準(zhǔn)編寫(xiě)的,所以如果你有一個(gè)C的運(yùn)行環(huán)境,你就可以運(yùn)行Lua。

        3.Lua語(yǔ)言在移動(dòng)設(shè)備開(kāi)發(fā)中的成功

        2011年一個(gè)小鳥(niǎo)保衛(wèi)鳥(niǎo)蛋的游戲——《憤怒的小鳥(niǎo)》讓Lua語(yǔ)言風(fēng)靡開(kāi)發(fā)者的世界。以快速小巧著稱的Lua擁有在目前所有腳本引擎中最快的運(yùn)行速度,這樣的特性讓Lua成為用作嵌入式腳本的最佳選擇。但是,Lua語(yǔ)言被人們所熟知還要追述到2010年喬布斯的蘋果將Lua語(yǔ)言引進(jìn)iOS平臺(tái),直到現(xiàn)在已經(jīng)有很多iPhone的應(yīng)用寫(xiě)入到Lua中。而Lua語(yǔ)言憑借其代碼幾乎能在所有操作系統(tǒng)和移動(dòng)終端上編譯運(yùn)行的這一特性,不但可以在iOS這一移動(dòng)平臺(tái)開(kāi)發(fā),同樣也可以在Android等其它平臺(tái)上開(kāi)發(fā)。有了Corona SDK以后Lua語(yǔ)言不但可以支持iOS,還可以支持Android平臺(tái)。以上這些原因使Lua語(yǔ)言在Tiobe編程語(yǔ)言排行榜上迅速攀升,成為移動(dòng)開(kāi)發(fā)領(lǐng)域的新貴。

        4.總結(jié)

        Lua是一種非常簡(jiǎn)單但是強(qiáng)大的編程語(yǔ)言。隨著應(yīng)用程序的需求不斷增加,程序員需要不斷改變程序的結(jié)構(gòu)。如今,許多程序員在用兩種不同的語(yǔ)言編程:一種是用于編寫(xiě)一個(gè)功能強(qiáng)大的“虛擬機(jī)”,另一種是用于基于單機(jī)的程序。Lua作為一種優(yōu)秀的編程語(yǔ)言,專為后者服務(wù)。Lua語(yǔ)言適用平臺(tái)小到PC-DOS大到CRAY大型機(jī)。它的語(yǔ)法簡(jiǎn)單、語(yǔ)義簡(jiǎn)單,是一種靈活的編程語(yǔ)言。

        [1]TIOBE Programming Community Index.TIOBE Programming,2014.

        [2]lua官方網(wǎng)站.

        [3]LuaJIT 2.0正式版發(fā)布. Lua編譯器.中國(guó)Linux聯(lián)盟,2012.

        [4]Paul Schuytema,Mark Manyen.Lua游戲開(kāi)發(fā)實(shí)踐指南(Game Development with Lua)[M].北京:機(jī)械工業(yè)出版社,2013.

        [5]姚蕾.基于LUA語(yǔ)言的趣味游戲設(shè)計(jì)[J].?dāng)?shù)字技術(shù)與應(yīng)用.2013,(6).

        Lua——The Upstart Mobile Development Language In the Name of the President

        Yang Jie
        (Wuhan Polytechnic,Wuhan 430074,Hubei)

        This article describes a kind of mobile device programmer language-Lua.Lua is simple and lightweight.This article describes its origin,and analyzes its programming features.Finally,it describes its application in mobile device development.

        Lua;scripting language

        楊杰,男,湖北潛江人,碩士,講師。研究方向:電子信息技術(shù)。

        猜你喜歡
        腳本語(yǔ)言編程語(yǔ)言程序員
        為了讓媽媽看懂地圖,一位“野生程序員”做了個(gè)小程序
        壓力-體積轉(zhuǎn)換在CFC編程語(yǔ)言中的實(shí)現(xiàn)解析
        怎樣成為一名優(yōu)秀程序員
        幼兒100(2020年29期)2020-10-21 06:17:58
        Java編程語(yǔ)言的特點(diǎn)與應(yīng)用
        淺談不同編程語(yǔ)言對(duì)計(jì)算機(jī)軟件開(kāi)發(fā)的影響
        電子制作(2018年1期)2018-04-04 01:48:36
        一種面向SSC的電信增值業(yè)務(wù)的生成方法及實(shí)現(xiàn)
        程序員之子
        意林(2017年24期)2018-01-02 22:49:14
        基于Unity3D的坦克大戰(zhàn)游戲設(shè)計(jì)與實(shí)現(xiàn)
        加班
        三月三(2016年6期)2016-06-21 10:25:33
        面向?qū)ο骔eb開(kāi)發(fā)編程語(yǔ)言的的評(píng)估方法
        野外三级国产在线观看| 欧美成妇人吹潮在线播放| 青青草视频免费观看| 亚洲aⅴ无码日韩av无码网站| 国产亚洲亚洲精品视频| 亚洲av高清天堂网站在线观看| 国产偷国产偷精品高清尤物| 久久精品久久久久观看99水蜜桃| 日韩中文字幕久久久经典网| 人妻中文字幕在线一二区| 日本一区二区三区爆乳| 亚洲欧美日韩中文在线制服| 91久久福利国产成人精品| 日韩精品自拍一区二区| 国产精品亚洲精品日韩已方 | 一本一本久久a久久精品综合| 亚洲综合有码中文字幕| 无码人妻久久一区二区三区免费丨| 国产熟女露脸大叫高潮| 欧美日韩免费一区中文字幕| 国产精品一品二区三区| 美女网站免费观看视频| 日韩精品一区二区亚洲av| 亚洲男人在线无码视频| 午夜视频一区二区三区播放| 五月丁香综合激情六月久久| 亚洲熟妇20| 亚洲av一二三又爽又爽又色| 国产精品女同一区二区免费站| 久久精品国产亚洲av四虎| 亚洲国产成人久久综合一区77| 免费在线观看草逼视频| 国产精品福利一区二区| 亚洲综合一区无码精品| 元码人妻精品一区二区三区9| 亚洲一区二区三区日本久久九 | 日本亚洲色大成网站www久久| 久久一日本道色综合久久大香| 熟女少妇av一区二区三区| 日韩少妇内射免费播放18禁裸乳| 乱码午夜-极国产极内射|