網(wǎng)上經(jīng)??吹絼e人拿lua與python來(lái)進(jìn)行對比,但是,本人認為,lua與python根本就不具有可比性.原因如下:
1、兩者的定位不同。python的定位在于自身的獨立開(kāi)發(fā),即是說(shuō)python定位于自己能解決所有的問(wèn)題。lua定位在與其它的代碼,尤其是C++代碼進(jìn)行相互配合的編譯,單獨的Lua本身沒(méi)有任何的意義。
2、站在解決問(wèn)題的角度上看。python依靠自身越來(lái)越強大的庫,讓編程者能實(shí)現越來(lái)越多,越來(lái)越復雜的問(wèn)題。lua本身則必須與其它的編譯語(yǔ)言結合,才能解決問(wèn)題。以C+++lua來(lái)舉例。單獨的C++,因為C++的復雜性,在其解決問(wèn)題提供方便的同時(shí),也給程序員帶來(lái)了很大的麻煩,這些麻煩主要有兩個(gè)方面:1,C++本身,特別是能用好C++,對程序員就來(lái)說(shuō)就是一個(gè)很高的要求。2,在解決復雜問(wèn)題時(shí),C++程序結構的復雜性和邏輯實(shí)現的復雜性,給程序員對程序的改進(jìn)和維護帶來(lái)了很大的麻煩。而C++與Lua的結合,讓C++可以只負責為lua提供各種基本的功能函數庫,而Lua調用這些庫來(lái)實(shí)現各種邏輯功能。這種分工可以讓程序員將程序中的基本代碼庫和邏輯實(shí)現代碼進(jìn)行分離,使程序的效率和可維護有了很大的提高。所以,如果真的要站在解決問(wèn)題的角度來(lái)對python和lua進(jìn)行對比的話(huà)。實(shí)際上,是C++與python進(jìn)行對比,而與lua無(wú)關(guān)。
3、python與C++對比,我覺(jué)得python與C++對比的優(yōu)勢就在于其所提供的基本庫,大大的降低了程序復雜度與可維護性對程序員本身的要求。比如,同樣的功能,如果是C++來(lái)做的話(huà),可能其程序員必須具備三年的經(jīng)驗,如果是python來(lái)做,而python又有解決問(wèn)題所需要的庫的話(huà),一個(gè)具有一年程序經(jīng)驗的程序員可能就能完成了。但是,同樣的,如果是C++與Lua結合來(lái)解決問(wèn)題的話(huà),可能就只需要半個(gè)高級程序員和一個(gè)只有c語(yǔ)言一年經(jīng)驗的程序員就可以了。半個(gè)高級程序員負責提供lua的函數庫,另一個(gè)程序員,只需要用這些代碼庫實(shí)現邏輯就行了。
綜上所述,C+++lua的開(kāi)發(fā)模式,和python源代碼庫開(kāi)發(fā)+python腳本開(kāi)發(fā)模式其實(shí)是一樣的。但是站在程序員的角度上來(lái)說(shuō),C+++lua就更為簡(jiǎn)單一些,因為除去基本的lua解釋代碼外,C++可以為lua動(dòng)態(tài)提供各種函數庫。而python程序員則必須受制于python所提供的各種功能庫。所以,如果解決一些具有普遍性和重復性的問(wèn)題時(shí),python是有優(yōu)勢的,因為有很多的代碼可以不用重寫(xiě),而C+++lua則必須重構。如果是解決一些非普遍的問(wèn)題,如果python本身沒(méi)有提供解決這些問(wèn)題的庫的話(huà),python程序員,就必須走回C++的老路了,哈哈。
聯(lián)系客服