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