Lua 語言的靈活、高擴展性優點體現在哪裡?

接觸lua已經有一段時間了,但是對它的靈活和高擴展性還是沒有什麼體會.

如果僅僅是配置文件,和C語言重新讀取一次配置有何區別? 如果我在嵌入式系統中應用lua能帶來什麼好處..


  1. Lua 的語義取捨比較好,我認為比 JavaScript 更好,Lua 的表配合 metatable 能力非常逆天,而且又有 coroutine 加持。而且最重要的是,Lua 的語義設計正交性極佳,各種特性可以自由組合,這點很多大牌語言都比不上。
  2. 正由於 1 中所提到的特點,編寫 Lua 程序有很高的效率。
  3. Lua 的解釋器相對較小,但是效率較高(即使不算上 luaJIT),因此可以在苛刻的環境下運行,而不用太擔心性能。
  4. Lua 的設計目的之一就是作為嵌入外部程序內的控制腳本(所以為什麼要做 coroutine——就是為了和宿主交換控制流),在對外介面上自然不能含糊。


用C語言的問題是你需要自己寫配置文件的解析代碼,如果你自己寫過這類代碼的話會知道這活兒比較繁瑣。不過當配置文件用,json、xml都是比Lua更好的選擇。

如果你想在嵌入式環境使用腳本語言,Lua是非常好的選擇。舉兩個例子。我以前給公司的產品(嵌入式設備)寫自動化測試框架,自動化測試的特點是測試用例編寫要快速、容易,測試人員一般沒有太強的coding能力。研究了幾種語言,像python、AutoIt等,沒有一種能像Lua這麼容易移植、部署,而且方便和C/C++交互(目的是調用操作系統API)。考慮到這幾個約束:可移植(包括虛擬機和相關庫)、容易部署、能方便的調用操作系統API、能找到比較豐富的教材和資源、非開發人員能容易的編寫腳本,Lua基本是唯一的選擇。

另外一個例子,做過一個用於系統集成的嵌入式網關設備。系統集成的特點是需要集成的子系統很雜,使用的通信協議各不一樣,很多是私有協議(一般都不複雜)。這種場景下,需要一個能快速響應需求,集成第三方設備的框架,Lua是非常好的選擇。

另外,在Cortex-M3這樣資源極其有限的單片機上,也有eLua可用,其它腳本語言基本沒戲。


推薦閱讀:

計算機科學與技術(CS)專業學生該如何系統地自學?
為什麼asp.net沒能比php更流行?
易語言是圖靈完備的嗎?
不同編程語言的Delay函數分別是什麼?
總是糾結於編程語言標準怎麼辦?

TAG:編程語言 | 腳本 | 腳本語言 | Lua |