文章目錄
lua和python根本就不具有可比性
出處:http://blog.csdn.net/shgaol/article/details/3746477
網上經常看到別人拿lua與python來進行對比,但是,本人認為,lua與python根本就不具有可比性.原因如下:
1、兩者的定位不同。python的定位在於自身的獨立開發,即是說python定位於自己能解決所有的問題。lua定位在與其它的代碼,尤其是C++代碼進行相互配合的編譯,單獨的Lua本身沒有任何的意義。
2、站在解決問題的角度上看。python依靠自身越來越強大的庫,讓編程者能實現越來越多,越來越複雜的問題。lua本身則必須與其它的編譯語言結合,才能解決問題。以C+++lua來舉例。單獨的C++,因為C++的複雜性,在其解決問題提供方便的同時,也給程式員帶來了很大的麻煩,這些麻煩主要有兩個方面:1,C++本身,特別是能用好C++,對程式員就來說就是一個很高的要求。2,在解決複雜問題時,C++程式結構的複雜性和邏輯實現的複雜性,給程式員對程式的改進和維護帶來了很大的麻煩。而C++與Lua的結合,讓C++可以只負責為lua提供各種基本的功能函數庫,而Lua調用這些庫來實現各種邏輯功能。這種分工可以讓程式員將程式中的基本程式碼程式庫和邏輯實現代碼進行分離,使程式的效率和可維護有了很大的提高。所以,如果真的要站在解決問題的角度來對python和lua進行對比的話。實際上,是C++與python進行對比,而與lua無關。
3、python與C++對比,我覺得python與C++對比的優勢就在於其所提供的基本庫,大大的降低了程式複雜度與可維護性對程式員本身的要求。比如,同樣的功能,如果是C++來做的話,可能其程式員必須具備三年的經驗,如果是python來做,而python又有解決問題所需要的庫的話,一個具有一年程式經驗的程式員可能就能完成了。但是,同樣的,如果是C++與Lua結合來解決問題的話,可能就只需要半個進階程式員和一個只有c語言一年經驗的程式員就可以了。半個進階程式員負責提供lua的函數庫,另一個程式員,只需要用這些程式碼程式庫實現邏輯就行了。
綜上所述,C+++lua的開發模式,和python原始碼庫開發+python指令碼開發模式其實是一樣的。但是站在程式員的角度上來說,C+++lua就更為簡單一些,因為除去基本的lua解釋代碼外,C++可以為lua動態提供各種函數庫。而python程式員則必須受制於python所提供的各種功能庫。所以,如果解決一些具有普遍性和重複性的問題時,python是有優勢的,因為有很多的代碼可以不用重寫,而C+++lua則必須重構。如果是解決一些非普遍的問題,如果python本身沒有提供解決這些問題的庫的話,python程式員,就必須走回C++的老路了,哈哈。
lua和python誰更適用於嵌入MMORPG?
出處:http://www.kuqin.com/language/20080506/8042.html
預計新項目會選擇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。
評論# re: lua和python誰更適用於嵌入MMORPG? 2008-05-06 18:03 劍孤寒
正在用lua做遊戲,過來說兩句:
2. 數值計算比較強大,支援多維陣列,而lua沒有數群組類型
-> lua中的table是可以當數群組類型使用的
6. 對於string和list的支援,lua可以通過擴充庫實現
->lua是有string的
8. lua支援多線程,每個線程可以配置獨立的解譯器,因此lua更適合於整合進多線程程式
->lua本身是不支援多線程,在lua裡這個東東叫做協同程式
用lua做遊戲最大的缺點是不好把程式中的類(包括各種繼承關係,以及在指令碼裡繼承C++中的類)導到指令碼裡(當初為瞭解決這個問題著實花了不少時間),如果能解決這個問題lua絕對比python更適合做遊戲^_^
# re: lua和python誰更適用於嵌入MMORPG? 2008-05-06 19:15 Kevin Lynx
@劍孤寒
貌似有個tolua++可以很輕鬆地解決這個問題。
各指令碼效率對比
出處:http://www.timestretch.com/article/mandelbrot_fractal_benchmark