標籤:

Lua 有哪些優點,適用於哪些場景?


謝謝邀請。

Lua 最大的好處就是小,絕對的小,可以嵌入任何程序而我們幾乎可以忽略為此增加的大小。這門語言的功能基本是完備的。作為配置文件可以達成非常複雜的配置邏輯。看看 WoW 的各種插件和宏就知道了。

缺點么,其實都還好。我唯一不滿的是它沒有處理 UTF-8 的邏輯。所有的字元串當作位元組流處理。多數情況下這不是什麼大問題,但可惜我的工作和 Unicode 和字元串關係頗大,所以對這類功能支持一直非常敏感。


CC++的絕好伴侶,CC++是靜態編譯型語言,Lua是動態解釋型語言.當然,要做到動態也不是不行,C++可以用模板,C可以用宏,但是大量使用這些特性的項目代碼是不能看的...

所以,CC++ + Lua = 性能 + 動態性. 一邊是性能,一邊是靈活.

當前可以看到這部分用的最好的例子,ngx_lua,迅雷的blot界面引擎,WOW的腳本引擎,應該還有其他,涉獵不光不知道的更多了.


awesome(一個linux wm)的介紹是這樣的

awesome tries to complete these tools with what we miss: an extensible,
highly configurable window manager.

To achieve this goal, awesome has been designed as a framework window
manager.
Its extremely fast, small, dynamic and heavily extensible using the
Lua programming language.


這篇文章,也許可以回答你的問題:

[46]腳本語言Lua的特點是什麼?(同Python,Ruby,Perl等對比)

另外,這裡還有幾篇Lua和C++混合編程的入門介紹文章

從中可以很明顯地認識到Lua的特點以及他的應用場景

[47]一半是性能,一半是靈活——C++和Lua的混合編程(在Windows平台編譯並安裝Lua)

關於Lua的 系列文章 Lua | 有{間}客棧


容易和C/C++交互,內核小巧,極易嵌入到其他程序,可當做一種配置語言

經常用於遊戲開發中,魔獸世界,憤怒的小鳥都有用到


Lua本來就是嵌入式,

那麼用途就是粘合粘合粘合。

本身很好的與C/C++交互效果非常棒。

加上本身是有開源解釋器。

內嵌入程序,可以很好的利用其增量更新的特性。

在提供bind庫完善的前提上,是可以幾乎不需要從新編譯程序來更新程序的


除了上面提到的與C/C++交互,lua還有一個重要的優點是語法簡單,可以用做數據描述,甚至構造DSL,一個例子是premake:作為一個C++的元編譯系統,用lua來」描述「C++項目,可以看一個簡單的例子:

A Sample Script

(知乎不支持代碼格式嗎。。。)

這看起來像是一個配置文件,非常簡單易懂,但這確實就是lua代碼,除了簡單,用一門真正的語言來「描述」來項目,多了更多的靈活性,比如你可以使用if, else, for...等等來完成一些複雜的描述。


由Lua 粘合的Nginx生態環境


推薦閱讀:

用 Nginx + Lua(OpenResty) 開發高性能 Web 應用
lua基礎學習(一)
學習哪些 Functional programming language 能夠拓寬眼界,學到和其他編程範式明顯不一樣的東西?
Unity3D熱更新LuaFramework入門實戰(5)——UI
想學習一個優秀解釋器源碼,有推薦的嗎?Lua 怎麼樣?

TAG:Lua |