程序員(一般)定義好的編程語言是他們知道最好或最經(jīng)常使用。
我是一個PHP程序員趋观,約翰是一個JavaScript程序員狐胎,DHH是一個Ruby程序員垄惧,施瓦茨和蘭德爾是一個Perl程序員搓谆。
每個不同程序員看待問題都是不一樣的炒辉,但是總有一兩個會被共同認為是最好的。
每當聽到PHP被不尊重的時候泉手,作為一個PHP開發(fā)人員黔寇,感覺很受傷。
雖然我們必須使用PHP為一個用于Web應(yīng)用程序的語言斩萌,但它是一個爛語言缝裤,其使用不應(yīng)予以鼓勵,或支持超出了必要颊郎。
哎喲憋飞,聽說我日常使用的語言,被給予很爛的評價時候姆吭,有人可能會說你不應(yīng)該管其他人對你選擇的語言的評價榛做,只要自己認可就行。我想我真的不應(yīng)該嗎内狸,而且該聲明暗示的是检眯,不僅是語言很爛,開發(fā)商爛昆淡,而且我們PHP開發(fā)者也爛锰瘸。
那么,究竟應(yīng)該怎么做才關(guān)閉他人的大嘴巴呢?我們能否使PHP語言受到尊重? 我們能否讓PHP開發(fā)人員受到尊重? 讓我們來分析某些方面我們可以做到這一點昂灵。
打破一切
PHP7要打破一切避凝。 PHP開發(fā)人員應(yīng)該接受打破版本之間向下兼容的定律。只要不允許大量的向后兼容眨补,PHP7將是一個高度尊重的語言管削。
◆ 創(chuàng)建一個具體的核心語言 -刪除所有庫方法,并保持在對象集中的核心方法撑螺。 您應(yīng)該能夠編寫無需任何外部庫或擴展PHP7和對基本輸入/輸出佩谣,字符串處理和數(shù)學一個很好的完整的語言。庫以外的任何應(yīng)該通過批準擴展实蓬。
◆ 一切都當作一個對象
-以從Ruby茸俭,Smalltalk和(主要)的Java對象,并把它一切當作對象安皱。 整數(shù)是對象调鬓,字符串是對象,他們每個人都可以操作的方法酌伊,
我不相信PHP需要的Ruby和Smalltalk在對象之間傳遞彼此訊息的觀念腾窝,而調(diào)用對象的方法才是最好的缀踪。
◆ 一致的命名方法和類
-由于PHP的最大的抱怨之一是不斷要檢查,(needle,haystack) 或(haystack,
needle)虹脯,或some_function()驴娃,或function_some(),或someFunction()循集,一個一致的格式需要制定唇敞。
◆ 讓事情嚴格 -嘗試傳遞到一個方法浮動字符串? 這是一個警告。
◆ 一切是Unicode -在PHP6中的所有字符串都是Unicode咒彤,這很好疆柔,我主張PHP7也應(yīng)該保持。
◆ 中央啟動點 -創(chuàng)建一個主類或初始化镶柱,所有代碼執(zhí)行源于此旷档。
◆ 清理C代碼 -我不是一個C的專家,但如果你比較了解Ruby的C代碼到PHP的C代碼歇拆,可以很容易地了解了PHP與Ruby的內(nèi)部鞋屈。 我非常熟悉PHP,所以我自己的寫擴展更容易故觅。
◆ 擺脫eval() - eval()是邪惡的谐区。 如果你正在使用它,那么這是一個錯的主意:這將打破PHPUnit逻卖,拋棄它從現(xiàn)在開始。
◆ 支持操作符重載 -因為一切都是對象昭抒,開發(fā)者只需掌握操作對象的方法即可评也。
◆ 允許的方法簽名 -允許真正的方法簽名,所以程序員可以有不同的參數(shù)列表或返回類型的同名方法灭返。
class A {
public int function doSomething(int $a, float $b) {
// Same as $a->*($b->to_int());
int $c = $a * $b->to_int();
return $c;
}
public float function doSomething(int $a, float $b, float $c) {
// Same as calling $a->*($b->*($c)); since * is a method on each object $a and $b.
float $d = $a * $b * $c;
return $d;
}
}
◆ 建立一個PHP虛擬機(PVM) -我不能完全肯定這是可能的盗迟,因為我不是一個語言設(shè)計師,但它會是不錯的一個PHP虛擬機熙含。 它可以執(zhí)行PHP字節(jié)碼罚缕,并允許一個明確的堆和堆棧。
◆ 刪除copy-on-write (COW) -COW是一個相當陌生的概念怎静,邮弹,如果你不知道它的存在,以新的開發(fā)蚓聘,就可能導致問題腌乡。
◆ PHP官方發(fā)布規(guī)格 -類似于W3C HTML5規(guī)范,PHP的規(guī)格將允許開發(fā)人員實現(xiàn)自己的PHP版本夜牡,并確保有具體的例子來編譯与纽。
尊重語言
應(yīng)努力使語言得到尊重。 我們應(yīng)盡量招募開發(fā)者做出具有非常強大功能的PHP7。 我們應(yīng)該釋放巨大的代碼的安全急迂,易于閱讀影所,并教新的開發(fā)者以正確的方式編程。
我不知道Ruby的瘋狂僚碎,但我尊重Ruby語言猴娩。 我看到它的力量,我看在Ruby on Rails是一個非常好的框架听盖,它只是我不是喜歡的胀溺。如果我們能獲得具有很好威望的開發(fā)商認可或尊重,PHP就會走的更遠皆看。
尊敬開發(fā)人員
從上文的理解仓坞,我們需要一個非常德高望重的PHP開發(fā)核心團隊。 他們發(fā)布代碼腰吟,舉辦講座无埃,向人們展示了“正確的方式”做事,這支團隊將很快的受到不少開發(fā)商的尊重毛雇。
結(jié)論
我興奮PHP的未來嫉称。 我很懷疑我的想法會被執(zhí)行,但我真的相信他們會幫助整個社會灵疮。
我感到非常興奮织阅,當 世界第二大的網(wǎng)站宣布,他們正在幫助PHP建立偉大的社區(qū)震捣。
PHP是不會消失荔棉,他會越來越好,只要我們努力提高它蒿赢,改善它润樱,終有一天PHP會成為受開發(fā)者普遍尊重的語言。
最后羡棵,我不是一個語言設(shè)計師壹若。 我的想法可能會被認為完全胡說。 如果我不正確的地方皂冰,請禮貌地讓我知道店展,我會很高興地談?wù)撍?讓我們共同努力,使PHP成為備受尊重秃流,功能強大壁查,快速,高效的語言剔应。編譯若有差錯睡腿,歡迎指正语御!
中文原文鏈接:PHP7需要改變什么?
英文原文鏈接:What PHP Needs to Change