iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 1
2
Software Development

30天 Lua重拾筆記系列 第 1

【30天Lua重拾筆記01】認識Lua

認識Luna

盧娜(Luna,又寫作露娜或路娜)是羅馬神話中的月亮女神。「Luna」在法語和義大利語中也有月亮或月神的意思。在希臘神話中她的對應者為塞勒涅。盧娜也常常和黛安娜或赫卡忒混淆在一起。在羅馬的阿文提諾山上建有供奉她的神廟。 — 維基百科

錯棚了...
不是她 ?


再來一次 - 認識Lua

Lua是葡萄牙文的月亮,是一個輕量、快速、容易學習且容易嵌入的程式語言。其目標本就是成為一個很容易嵌入其它語言中使用的語言。其精簡的核心只包含一些最基本的功能,啟動速度非常之快。 儘管如此,透過最基本的功能,甚至可以實現多種編程範式。

可嵌入的程式語言

Lua是設計為一個 可嵌入 於其他語言的程式語言。要特別強調的是他不是用於嵌入式設備,而是嵌入於其他語言,其目標本就是成為一個很容易嵌入其它語言中使用的語言。或許對於寫Python、Ruby、JS的人沒什麼感覺,但其可以與C/C++、Java互動,並以低成本的方式加到程式裡面。雖然重點於此,但Lua最流行的版本完全使用C標準寫成,因此也完全有理由能夠運行於嵌入式設備。

Lua可以用於嵌入式硬體,不僅可以嵌入其他程式語言,而且可以嵌入微處理器中,例如NodeMCU開源硬體項目將Lua嵌入到Wi-Fi SoC中 — 維基百科

輕巧、易學的語言核心

Lua非常小,於Linux作業系統下的5.4版,才307kB。kB阿各位!其設計也極為簡潔,幾乎有辦法在幾個小時內,學會 近乎所有 Lua核心內容。沒錯,是近乎所有!與快速學會Python不同,是可以幾乎完全的學會Lua。不過相對的,也有許多功能是需要自行延伸開發,這通常會需要C語言的知識與開發經驗。本系列文章會做一些簡單示範,但當前Lua也已經有上百至上千已經寫好的套件可以使用,而無須自行再開發。

靈活的特性

它只提供了很小的一個特性集合來滿足不同編程範式的需要,而不是為某種特定的編程範式提供繁雜的特性支援。

儘管Lua非常小,還是可以用物件導向的方式開發程式。此外,Lua包含記憶體自動垃圾回收,亦支援運算子多載。

我就是因為Lua的OOP模擬,才之後才去了解JS的OOP。(兩者都是prototype base OOP) 關於JS的OOP,可以閱讀我的7天搞懂JS進階議題

學習的價值

因為Lua極小,但畢竟也是個腳本語言(Script Language)。也因此你可以透或Lua去學習其他腳本語言的高級特性。此外,Lua的執行效率也是極高,容易撰寫,更可以用於設計領域特定語言(DSL)。

Lua的用途

  • Lua被用在多款知名遊戲內部。
  • Redis內部包含Lua。
  • Lua可以作為一個高效、輕量的網頁伺服器。
  • Lua可以用於開發遊戲

作為一個圖靈完全、可擴張的程式語言,去探討Lua做得到哪些別得程式語言做不到的事情似乎沒有意義。我的意思是,其他語言可用於的地方,Lua也完全可以用到。是否使用要考量到一個程式語言的特性、生態。如果你是要提供API或彈性開發,這或許會是一個可以考量的選項。此外,我也仍然會推薦學習Lua,學完它應該可以獲得不少。

語言體現了人類思源的本質。 — 松本行弘的程序世界


下一篇
【30天Lua重拾筆記02】Lua的實現與選擇
系列文
30天 Lua重拾筆記36
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

我要留言

立即登入留言