Hack – Facebook推出的新語言
Facebook推出的Hack語言也許正是Facebook的駭客Hacker精神體現,他們宣稱該語言能夠幫助開發者更快更容易編制出更少錯誤的程式碼。
Hack是用於以很快的速度來構建複雜的網站,同時還確保了網站的原始碼有良好的組織且沒有錯誤。它的“安全網”功能允許程式設計師編寫更安全的程式碼,以減少日後維護擴充時帶來的煩惱。這篇文章(點選原標題進入)探討Hack哈克一些特點,可以說它是比目前最流行的網路程式語言PHP要更好。Hack是建立在Facebook的HHVM虛擬機器上,HHVM提供了眾所周知的卓越的執行效能。
在2003時創始人祖克伯建立Facebook時,他使用的是PHP這個Web開發語言,當時它是建立動態網站最流行的語言。
PHP是一個動態型別語言,意味著你不必花費時間定義變數,只要你完成程式碼就立即能夠執行,這種易於編碼且降低開發時間和努力方式受到歡迎,但是這種方式同時會增加匯入大量錯誤機會,特別是在執行時會暴露其醜陋的一面。
當你需要找錯誤執行的程式碼(不同於靜態型別語言)時,這種問題進一步加劇。程式碼錯誤會隨著程式碼庫的成長不斷增長。對於每千行程式碼有5個錯誤,小專案可能不會面臨大問題,但對於一個大型程式碼庫可能多達5000錯誤 - 需要很多除錯。
這種情況在Facebook等雲規模的企業中不斷惡化,成千上萬的程式設計師每天編寫和釋出新程式碼。他們程式碼不能有錯誤,因為這可能會導致使用者資料被洩露。那麼下一步應該做什麼呢?
重新發明輪子
由於Facebook前端主要是用PHP編寫的,切換到一個新的語言就意味著公司將不得不遷移整個網站的程式碼,這不僅是不現實的,但也並不可行。
另外,如果程式設計師已經習慣了PHP,這要求人力資源重新啟動大規模的培訓招聘。幸運的是有一個更好的解決方案 - 他們重新發明了一種語言,從PHP衍生出來,能與這種傳統的語言共存。
“於是,Hack就誕生了。我們相信,它結合了兩個動態型別和靜態型別語言最優點,而且,這將是對各種大小規模的專案都是有價值的”(banq:看來適合各種個子高矮不同的人的萬能褲子誕生了)。
從本質上講,Hack是“更好的PHP ” 。從PHP派生,它可以與PHP無縫工作,更快開發更安全的Web應用。你可以有一個同時包含PHP和Hack程式碼的專案,這是吸引PHP開發人員嘗試Hack的關鍵之點。並可能鼓勵他們逐步遷移他們的PHP程式碼到Hack。
Hack主要是給PHP增加了靜態型別以及其他現代程式語言中還有更多的功能。它是基於HHVM (HipHop虛擬機器) 開發,HHVM是一個Facebook開放平臺,能夠同時執行Hack和PHP程式語言。
Hack和HHVM組合是針對現代Web的基礎之一:快速應用開發。因為歷史上測試和除錯Web應用程式從來沒有容易過,但Hack正在改變,它允許程式設計師早期發現錯誤,而且不影響PHP的開發週期。從幾個技術網站使用Hack的結果反饋來看都是好的。
Hack優點
Hack對PHP的最大的改進是:去掉不必要的和容易出錯的功能。Hack還增加了安全網(不會減慢速率),以讓你少範錯誤。它還增加了現代程式語言中的各種功能,這使得編寫程式碼變得愉快。
哈克既是動態型別又是靜態型別的Web開發語言,從而把兩個型別語言最好的結合在一起。這實際上是所謂的“漸進式型別,”這是一種允許變數要麼在編譯時或執行時進行型別化的型別系統。它可以在不編譯情況下執行你的程式碼 - 你可以編輯一個程式碼檔案並重新載入網頁,能瞬間看到修改導致變化效果。
Hack 還帶來了集合collections, lambda表示式, 和返回型別執行時增強 以及引數型別等特點, 另外還有泛型 非同步程式設計。
這些新特點沒有阻礙程式碼可讀性,程式設計師閱讀Hack程式碼如同瀏覽傳統PHP的動態語言,他們也能像如同閱讀靜態型別那種文件式程式碼一樣。
缺點
最大缺點是放棄了PHP對於初學者入門簡單的特點,你不能直接嵌入HML程式碼到原始碼中,你不能在函式或類之外寫程式碼。也許這是一種習慣問題。
Facebook已經在其網站上部署Hack “我們已經部署了Hack在Facebook,它也取得了很大的成功,在過去的一年裡,我們已經遷移幾乎我們整個的PHP程式碼庫到Hack。”Facebook部落格上如是說。
[該貼被banq於2014-04-09 11:37修改過]
相關文章
- Hack:Facebook推出的新程式語言
- 忘記 PHP!Facebook 的 HHVM 引擎將轉用 Hack 語言PHP
- Facebook 推出 PHP 語言規範草案PHP
- Hack:用於HHVM的一種新程式語言
- 谷歌新推出的Carbon語言能直接取代C++?谷歌C++
- Slack是用Hack語言開發
- nand2tetris_hack組合語言NaN組合語言
- “最好的語言” PHP 如何造就 Facebook?PHP
- Progress新的開發語言ABL(其實推出有段時間了)
- Facebook 自然語言處理新突破:新模型能力趕超人類 & 超難 NLP 新基準自然語言處理模型
- Facebook新研究:一個編碼器hold住93種語言!跨語言遷移無需修改
- WebDSL 新的DSL語言Web
- Facebook 開源 Skip 物件導向+函數語言程式設計語言物件函數程式設計
- 一種新的面嚮物件語言――Other語言(暫定名)物件R語言
- 蘋果新的程式語言 Swift 語言進階(十二)--選項鍊蘋果Swift
- Swift 新語言開發Swift
- 新年新語言 - ClojureScript
- Facebook推出自定義Feed流等上週產品新聞 - Angel JaimeAI
- 蘋果的新程式語言 Swift 簡介蘋果Swift
- 如何學習一門新的語言
- 技術創新研究所宣佈推出全球規模居首的阿拉伯語自然語言處理模型NOOR自然語言處理模型
- 經歷虛假新聞指責後,Facebook擬推出新聞專案
- 如何為Mac新增新語言?Mac
- C# 7.0 語言新特性C#
- 以dart語言為例說說如何學習一門新的語言Dart
- 微軟推出基於Excel的低程式碼程式語言:Power Fx微軟Excel
- 為什麼我們需要一門新語言——Go語言Go
- 通往 Rust 1.0 之路,Mozilla 新的程式語言Rust
- JDK1.5中新的語言特徵JDK特徵
- 引入新程式語言的經驗教訓
- 學習一門新語言的二三事
- Java從8到21的語言新特性Java
- 蘋果推出新部落格 宣傳全新程式語言Swift蘋果Swift
- FaceBook推出的Android圖片載入庫FrescoAndroid
- swift語言新特性:可選值Swift
- 新編如果程式語言是女人
- Streem:Ruby之父開發的新指令碼語言指令碼
- 常高偉:如何學習一門新的語言