PHP 比 Java 的開發效率高在哪?
現在很多互聯網應用都是php開發的,在很多人的觀念里已經把php與java分到了兩個開發領域,php是互聯網,java是企業應用。 都說php的開發效率高,更適合互聯網快速發布的特點,但我一直 沒感覺到php的開發效率比java到底高在哪,請說的具體一點,細節一點。
PHP和MySQL是絕配,一開始就作為PHP開發的亮點而存在。PHP操作MySQL的方便性其他語言比不了。
PHP跟Apache等服務器亦是絕配,一等支持。代碼文件往服務器上一丟,愛咋整咋整。
PHP的Array堪稱一絕,數組、關聯數組一網打盡,而且提取、存入等各種功能,甚至你想不到的一些方便功能,PHP都給你了。
PHP為Web而生,Web開發需要的什么協議相關、請求響應、加密處理、各種流,都內置了,琳琅滿目受用一生。
社區資源豐富,資料唾手可得。
動態語言、弱類型的靈活度,加上PHP后來增強的類型提示,讓你隨心所欲。
以上還沒提到Laravel,如果你用上Laravel、Yii啥的框架,估計會樂不思蜀。
最后讓PHP黑繼續頑固下去吧,這么好的語言/工具是給我等享用的。其實PHP的主要矛盾不是PHP黑嘴里說的那么不堪,而是入點流的PHP開發者供不應求。你說反了。
PHP適合非核心系統,玩票小系統,如果要要應用到大系統就要做很多改造,所以小玩家比較多。
JAVA適合小系統,中型系統和大系統,結構整齊,缺點是代碼看起來死板,看起來復雜。
php程序員往往都有半吊子的前端技能,所以理論上來說是全棧工程師的支柱,也代表着老板可以用一個人做兩個人的活。
看起來是縮減了成本。
PHP高就高在它臟。
所以你隨便糊一個什么東西基本上滿足需求,寫再亂的代碼只要能運行起來就有好。
但是反過來如果想要他變得干凈就要費勁了:一大堆的convention,各種黑科技,沒錯雖然psr標准化了但是autoload這東西真的就是在糊啊。
很多人會噴C++程序員都習慣隨手造輪子,PHP可是把隨手Hack的輪子都直接當成了標准來處理了的。
這么臟確實方便,就像一些答案里說的,隨手就能登上機器改代碼等等。可是,這樣搞對Ops和質量保證很不友好啊。比如你在生產機器上fix了一個bug,在什么情況下把它合並到主分支呢?難道還要在生產機器上配置一套vcs客戶端?
再者,業務復雜和高吞吐量的情況下,PHP這些特色都沒了:要么沒有一個強有力的類型系統做保障結果自身寫成了一坨屎,要么濫用動態特性造成代碼極度不可讀。所以很有可能的原因是,團隊的核心成員離職以后這個項目基本就廢了,不得不再挖新坑。更神奇的是PHP中這種能夠詭異地實現各種需求的特性還真是非常的多,更加劇了這一問題。
第三點就是,PHP是很multi-paradigm的,而且因為一些設計的缺陷導致項目里面不得不交叉混用各種不同的paradigm。加之語言版本的混亂,配置的復雜(當然現在你可以php -S了),以及各種安全性和一些隱晦的缺陷,這些都是影響項目穩定性的致命傷害:因為這些原因可能會有一大部分人不得不在不同機器/操作系統上保留不同的配置,或者是固守某個特定的版本,或者堅持使用自己hack出來的工具。
當然其實上面那些缺陷,除了作為動態語言必有的之外,Java里也多少都存在(特別是對於初學者,或者至今還在使用一些老舊技術棧的人)。但關鍵是,首先Java自身設計上還是有一定的緊湊和保守(所謂的歧視程序員智商),對於團隊協作來說非常的重要,畢竟不是每個人都是大牛。其次Java有非常完善的標准和工具集,自動化程度非常的高,這就避免了需要程序員“ssh到服務器”這種尷尬的操作。另外作為一個工業級的編程語言,Java(及一部分開發框架)在可靠性方面是少有能及的,這一點你PHP再洗也沒用。
所以對比一下其實就出來了,PHP臟又快,所以,個人或者小團隊快速實現一些原型產品的時候可能會非常的方便,但是隨着業務邏輯變復雜,這個優勢會逐漸消失。反觀Java雖然自由度不高,設計的看起來有些蠢,但是有工業級框架和工具的支撐前期開發上不比PHP差勁,而且能夠保證后續的可維護性:至少每個人都能看懂代碼。
———
關於程序員,我覺得完全不能按照使用的編程語言來划分,更不應該隨便用80%這個數字來隨便代表別人。
就像,ssh到Linux這種本身作為基本的ops知識是一個合格的開發人員的必備,而且,自動化工具的存在帶給開發人員的好處就是,不用再處理這些臟東西了,把更多的時間留給更好的實現邏輯和提升質量:在源頭控制好了問題,就更不會存在ssh到生產環境修bug這種操作了。
以上。