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