為什么開(kāi)發(fā)者對(duì)PHP又愛(ài)又恨
受人尊敬的服務(wù)器端腳本語(yǔ)言PHP,因在web開(kāi)發(fā)中的應(yīng)用而知名。***由Rasmus Lerdorf在1995年發(fā)布,受WordPress和Facebook的影響而變化著,據(jù)W3Techs報(bào)道,82%網(wǎng)站的服務(wù)器端編程語(yǔ)言是PHP。這門語(yǔ)言在編程語(yǔ)言受歡迎程度排名上,稍微落后于Java,在競(jìng)爭(zhēng)對(duì)手Tiobe排行榜降到第六名。做為高性能的升級(jí)版本PHP 7,預(yù)期在2015年發(fā)布。
然而,就像任何語(yǔ)言,它也有支持者和反對(duì)者。下面解釋了支持者聲援PHP、和持不同意見(jiàn)者痛批它的原因。
好的:流行、入門快
“PHP是目前***的web開(kāi)發(fā)語(yǔ)言,”PHP工具提供商Zend Technologies公司【注1】CEO Andi Gutmans說(shuō)。在New Media Campaings供職的開(kāi)發(fā)者Josh Lockhart,也是一名作家,強(qiáng)調(diào)了PHP較小的學(xué)習(xí)曲線、易于部署和快速的開(kāi)發(fā)迭代。Lockhart說(shuō),“PHP是最易理解的web開(kāi)發(fā)語(yǔ)言之一,它被安裝在大部分服務(wù)器上(包含大部分共享主機(jī))。因?yàn)橛袃?yōu)秀的在線文檔和***的在線資源,學(xué)習(xí)起來(lái)相對(duì)容易。”
好的:好找工作
“PHP幫助你賺錢、找到一份在服務(wù)器端的工作”,Gutmans說(shuō)。在上周的Dice.com技術(shù)工作網(wǎng)站上的快速研究,找到了3,366份PHP相關(guān)的工作。與17,418份Java工作相比顯得很平淡,緊追Perl(4,300)和Python(5,429),但是高于Ruby(2,973),甚至包括Objective-C(985)。Lockhart把PHP看做使用頻率***的語(yǔ)言之一,盡管它和Ruby、Python、Go和Rust之類的語(yǔ)言比起來(lái),有些保守。
好的:繼續(xù)在發(fā)展
這門語(yǔ)言自詡有閉包和命名空間之類的現(xiàn)代功能,還有性能和現(xiàn)代框架。正如Gutmans所指出的,“一些想離開(kāi)的人在PHP能提供什么上面所受到的必要教育不多。”Lockhart說(shuō),開(kāi)發(fā)者正在意識(shí)到,PHP有著強(qiáng)大的現(xiàn)代特性以及合適的面向?qū)ο缶幊棠P汀<磳⒌絹?lái)的版本7,在應(yīng)用程序上提供了巨大的性能提升。Lockhart指出,F(xiàn)acebook對(duì)PHP的增強(qiáng),包含了HHVM虛擬機(jī)和Hack語(yǔ)言【注2】。
壞的:抱怨設(shè)計(jì)、缺乏重心
博主Eevee在2012年反對(duì)這門語(yǔ)言的公開(kāi)信《PHP:不規(guī)則的糟糕設(shè)計(jì)》中說(shuō)道,“事實(shí)上PHP里的每個(gè)特性都多多少少是不規(guī)則的”。Eevee不僅僅給這門語(yǔ)言差評(píng),而且包括框架和生態(tài)系統(tǒng)。根據(jù)該博主說(shuō)的,這門語(yǔ)言不是可預(yù)期的、一致的,而是充滿了讓人詫異和不一致的地方。在批評(píng)中,PHP被稱作不透明的,沒(méi)有默認(rèn)的堆棧跟蹤,一直承受著復(fù)雜的、功能不佳的類型,“沒(méi)有清晰的設(shè)計(jì)哲學(xué)。早期的PHP受到了Perl的激勵(lì);帶有‘out’參數(shù)的龐大的stdlib來(lái)自于C;面向?qū)ο蟛糠帜7轮鳦++和Java設(shè)計(jì)。”
Lockhart承認(rèn),Eevee的反PHP言論有些“夸大了事實(shí)本質(zhì)”。盡管是一名PHP支持者,Lockhart在被問(wèn)及時(shí),還是足夠和藹地列出了批判:
- 這門語(yǔ)言是不一致的,特別是函數(shù)名稱和參數(shù)順序。“這很容易修正,因此這不是個(gè)大問(wèn)題。”
- PHP仍然有很多遺留包袱,像全局變量、魔術(shù)引用等等。“這些壞的實(shí)踐正在緩慢地從語(yǔ)言中修剪,但是在它們消失之前,它們還會(huì)慫恿愚昧的開(kāi)發(fā)者堅(jiān)持不好的實(shí)踐。”
- PHP不像其它語(yǔ)言那樣專注,Lockhart將其歸咎于“受到委員會(huì)驅(qū)動(dòng)的、長(zhǎng)期都是一塊一塊的”。
- 注1:Zend Technologies 公司是一家互聯(lián)網(wǎng)基礎(chǔ)架構(gòu)軟件公司。Zend Technologies最為人們熟知的是它的兩個(gè)奠基人:Andi Gutmans和Zeev Suraski,他們與其他以色列程序員一起,發(fā)展了由Rasmus Lerdorf開(kāi)創(chuàng)的PHP語(yǔ)言。http://zh.wikipedia.org/wiki/Zend_Technologies
- 注2:Hack,一種開(kāi)源腳本語(yǔ)言,運(yùn)行在HHVM虛擬機(jī)上,主要開(kāi)發(fā)者為Facebook。在2014年3月20日正式發(fā)布。在發(fā)布前,F(xiàn)acebook已經(jīng)在它的網(wǎng)站上廣泛使用及測(cè)試。http://zh.wikipedia.org/wiki/Hack_(%E7%A8%8B%E5%BC%8F%E8%AA%9E%E8%A8%80)