Facebook要建立Hack的原因?
首先Facebook的內部代碼是用PHP編寫的,同時Facebook可以讓很多新的開發人員能夠使用PHP,因為語言是容易學習和使用的。當然,Facebook的PHP代碼可能轉換為C衍生物被推到之前的生產環境中。問題的關鍵是Facebook強烈的依賴於PHP語言,以吸引新的人才和提高開發人員的效率。
Hack嚴格的類型
不幸的是,PHP不可能在Facebook的規模下執行。因為PHP是一種鬆散類型的語言,很多關於類型的錯誤可能在啟動並執行時候不會被發現。這就意味著Facebook在早起必須編寫很多執行類型錯誤檢查的測試,或者花更多的時間來重新構建發布後的運行錯誤。為瞭解決這樣一個問題,Facebook添加嚴格的類型來對運行時的傳回型別實施攻擊。嚴格的類型抹殺了很多相關單元測試的必要性,同時也激勵開發人員在早期開發過程中捕獲與類型相關的錯誤。
Hack瞬時類型檢查
為了使開發的過程中捕獲錯誤更加得心應手,Facebook的HHVM引擎包含了一個類型的檢查伺服器,這個伺服器在本地運行時監控Hack代碼。開發人員的代碼編輯器和IDE在代碼開發過程中可以使用這個類型檢查伺服器來立即報告文法或類型的相關錯誤。
現有的PHP代碼呢?
大多數現有的PHP代碼將運行在Facebook的HHVM引擎,這是必要的,因為Facebook的現有程式碼程式庫主要是PHP代碼。Hack代碼存在一些異常,畢竟其沒有和傳統的PHP等效,比如一些語言特性(如變數)和Zend擴充仍然不被支援。隨著時間的推移,HHVM也會儘快實現與Zend引擎的奇偶化校正。
此外,Facebook建立的Hack語言與傳統的PHP代碼進行逐步的遷徙。
這是否意味著PHP“死”了?
如果Hack是那麼好,這是否意味著PHP的日子已經屈指可數了?答案當然是:NO!傳統的PHP Zend是由專門的機構管理審核通過的,任何新的功能必須由機構的成員審核投票通過之後才能公布,這樣的投票時100%公正和公開的。
但Hack是非常不錯的,Hack有非常多屬於自己獨特的功能,所以永遠不可能成為傳統的PHP語言。Facebook的HHVM引擎比Zend引擎更好的效能,而且它具有更多的內部開發人員,致力於不斷使HHVM引擎變得更好。
這也並不意味著PHP的Zend引擎將消失,Zend和HHVM引擎能夠而且將會並存。競爭是一件好事,我希望這兩個Zend和HHVM會從彼此的優勢中獲益。
是Facebook負責嗎?
Hack是Facebook的產物,這主要是源於Facebook的工程師。雖然現在公眾都希望它能公布,但是Hack和HHVM很大程度上仍然依賴與Facebook的持續投資和參與。
未來
由於Hack和HHVM的優越性,我想從某種程度想來說,Hack是PHP的未來。