預(yù)計(jì)新項(xiàng)目會(huì)選擇lua或python之一作為游戲的腳本語(yǔ)言。以前草草地接觸過這兩門語(yǔ)言,對(duì)于語(yǔ)法,以及嵌入進(jìn)C/C++程序都有點(diǎn)感性上的認(rèn)識(shí)。可能是受《UNIX編程藝術(shù)》中KISS原則的影響,現(xiàn)在總喜歡簡(jiǎn)潔的東西。所以我個(gè)人比較偏向于使用lua。
這兩天翻了下網(wǎng)絡(luò)上的資料,在lua的wiki上看到一篇比較lua和python的文章,草草地翻譯出要點(diǎn):
Python:
1. 擴(kuò)展庫(kù)很多,資料很多
2. 數(shù)值計(jì)算比較強(qiáng)大,支持多維數(shù)組,而lua沒有數(shù)組類型
3. 本身帶的c類型(?)支持處理動(dòng)態(tài)鏈接庫(kù),不需要進(jìn)行C封裝(C擴(kuò)展)
4. 遠(yuǎn)程調(diào)試器,似乎lua擴(kuò)展工具支持
5. 自然語(yǔ)言似的語(yǔ)法
6. 對(duì)于string和list的支持,lua可以通過擴(kuò)展庫(kù)實(shí)現(xiàn)
7. 對(duì)unicode的支持
8. 空格敏感(代碼不忽略空格),這其實(shí)可以使python的代碼風(fēng)格看起來(lái)更好一點(diǎn)
9. 內(nèi)建位操作,lua可以通過擴(kuò)展庫(kù)支持
10.語(yǔ)言本身對(duì)錯(cuò)誤的處理要好些,可以有效減少程序錯(cuò)誤
11.初級(jí)文檔比lua多
12.對(duì)面向?qū)ο笾С指?
Lua:
1. 比python小巧很多(包括編譯出來(lái)的運(yùn)行時(shí)庫(kù))
2. 占用更小的內(nèi)存
3. 解釋器速度更快
4. 比python更容易集成到C語(yǔ)言中
5. 對(duì)于對(duì)象不使用引用計(jì)數(shù)(引用計(jì)數(shù)會(huì)導(dǎo)致更多的問題?)
6. lua早期定位于一種配置語(yǔ)言(作為配置文件),因此比起python來(lái)更容易配置數(shù)據(jù)
7. 語(yǔ)言更漂亮(nice)、簡(jiǎn)單(simple)、強(qiáng)大(powerful)。
8. lua支持多線程,每個(gè)線程可以配置獨(dú)立的解釋器,因此lua更適合于集成進(jìn)多線程程序
9. 對(duì)空格不敏感,不用擔(dān)心編輯器會(huì)將tab替換成空格
Useful Comments:
1. Everything is an object allocated on the heap in Python, including numbers. (So 123+456 creates a new heap object).
2. lua對(duì)于coroutine的支持更適用于嵌入進(jìn)游戲,雖然python也有,但是并沒有包含進(jìn)核心模塊
3.Python was a language better suited to Game AI
本來(lái)想去找點(diǎn)對(duì)于python的正面資料(嵌入進(jìn)游戲這方面),但是居然沒找到。客觀地說(shuō)如果單獨(dú)用python做應(yīng)用,python還是很有優(yōu)勢(shì)。現(xiàn)在心意已決,應(yīng)該向leader推薦lua。
ps,希望能補(bǔ)充以上兩種語(yǔ)言的特點(diǎn)。