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