1. 程式人生 > >關於NodeJS PHP Python Java的比較,程式語言的對比和選擇

關於NodeJS PHP Python Java的比較,程式語言的對比和選擇

我的一個專案運用了這三種語言,其實做程式一定要越簡單越好,能用一種語言決不用2種,but 為何我要搞這麼複雜?

因為!! 每種語言的都有缺點,當缺點影響了效果的時候,必須配合其它語言才能完美,話說大型系統都是多種語言一起上,不是大公司有錢燒的,而是實際的需求要求不同的語言配合完成!

1、我最想用的語言是php、框架選擇多、開發速度快、即改即生效,但是php比較噁心的地方也非常多,呼叫系統命令的話,linux系統的許可權問題非常嚴重,當初為了不用其它語言,php呼叫系統shell怎麼辦? 用c語言寫了一個程式,編譯成二進位制linux可執行程式,賦予該程式root許可權,然後再寫一個shell檔案,讓c程式呼叫shell ,最後用php呼叫c程式來實現以root許可權執行shell檔案程式碼的能力,整個過程比較複雜,非常不爽。shell是linux系統原生語言,在控制系統層面上必用的,雖然它的語法和windows 的bat批處理命令是一樣一樣的噁心,但是跟系統打交道缺不了他,忍了吧。

總結:跟系統打交道用php很他媽的費勁,簡直無能。

2、php沒有像java那樣的application這種全域性變數,所以你必須用寫檔案、快取、資料庫的方式來共享全域性變數,來實現全域性控制,這是極其噁心的,也就是說php沒有全域性快取能力,半個廢物,全域性功能非常重要。雖然php外掛很多哈,但是仍然弱。

3、沒法全域性控制所有http請求,什麼意思?例如,10個人訪問php,每個人程序獨立,沒法對10個人進行一個統一的管理和反饋。

這三個缺點,java、python和nodejs都可以完成,不需要外掛配合。所以我被迫選擇python配合PHP,所以python的優點很明顯了,就是全能型,系統程式可以開發、web網站也可以開發,混合在一起的能力自己全部搞定,純全能型語言。

nodejs和python一樣,是新出來的語言,也是全能的。其實java也是全能的哈,java也很強大,但是我不喜歡用java的原因是它太過於死板和嚴謹了,但是他的嚴謹也讓它適合做大型程式,穩定性一流、速度也快,就是開發速度不行,太嚴格太囉嗦了,框架也很龐大,但是java的確是優等生,能力全面不說,應用範圍很廣,像安卓開發都用java,一舉多得,所以java很優秀不假,學java不虧,但是喜不喜歡,那就看個人喜好了,我是不太喜歡,我就喜歡開發速度越快越好,我也不做什麼大型系統。

後來,為何我又加了一個nodejs語言,是不是神經病呢?不是,真的是又被逼了,連python也不好使。

python的web服務效能不如php快,同樣做網站php訪問速度快,所以php在web領域並非浪得虛名,開發快、響應快!

但是php速度不如java web 速度快,如果同樣輕量級框架下,java編譯成class後的響應速度比php快的,實際如此,因為php是指令碼語言,每次都需要翻譯成機器語言來執行,而java的位元組碼翻譯速度要快很多了,更接近於機器語言,所以java快是有道理的。

nodejs的需要是因為 web介面,高併發web介面,nodejs比java、php、python都快得多,不是一點得快,是幾十倍的快,這在實際應用中可非常重要了,尤其是介面響應速度的,因為按照預期功能,用php開發了,介面響應達不到需求,在不增加伺服器的情況下怎麼辦?用python開發更慢了,用nodejs試試吧,果然快很多,效果很明顯 ,為什麼呢?因為nodejs的v8引擎是谷歌用在chrome瀏覽器上的速度很快,為何chrome會成為瀏覽器界的黑馬一統江湖?就因為這v8 ,夠輕量級又夠快,nodejs給用了。

第二,nodejs是IO非同步方式,寫過javascript的都知道回撥函式被大量使用,這點php做不到,php處理都是同步執行的,命令必須逐條被執行,nodejs不用的,這樣節省了很多時間,在等待IO處理的時候,可以做其它事情。

話說,php和python也都能實現IO非同步的機制,但是方案不成熟非原生支援,自己處理會很麻煩,萬變不離氣宗,任何語言都是表象對吧,都是對機器語言的封裝,基於對cpu和記憶體等硬體機制的呼叫,僅此而已,所以任何語言想要做到同樣的能力是完全可以的,但都無法超過電腦硬體的執行體系規則。

所以,因為nodejs在併發響應上的優勢選擇了它。所以我的程式用了3種語言,php、python、nodejs、shell,之前還有個c語言被python取代了,實際上python也不需要了, php、nodejs、shell就夠了。

最後總結:

到底用哪一種語言,根本不是我們可以說的算的,還是要看自己需要什麼功能,用哪種語言實現起來程式設計最快、響應最快。

1、php 適合做前端介面UI層、普通響應級別的webservice介面用於和mysql資料庫打通,框架多變成速度快夠簡單。

2、nodejs適合做IO密集的,併發需求打的、CPU計算少的,介面類。

3、python的能力實際上nodejs也基本ok,所以python作用反而不太大了,但是python在人工智慧等類庫上非常有優勢,大資料爬蟲等這種領域太方便,可能用python的大神比較多吧,我們站在巨人的肩膀上那輕鬆很多,所以python牛逼在類庫強大且先進,語言本身全能、開發速度也非常快,也是因為類庫太多吧。

很多人吐槽過python程式碼架構必須用空格或tab縮排,我也想吐槽,有這個必要嗎?唯一好處就是程式碼工整一些,被迫的。

4、java,當今最流行的語言,已經持續很多年,確實強大,應用範圍廣,全能,各種外掛也是很多,有點像人類社會的精英階層的意思。