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