為什么 非死book 發明新語言“Hack”

jopen 10年前發布 | 12K 次閱讀 Facebook

為什么非死book發明新語言“Hack”

 (注:Hack是一種PHP的派生語言)

為了替換掉那些有年頭的老代碼,非死book創建了一個新的語言。這篇文章將會告訴背后的故事。

By Steven Melendez

這個故事來自非死book工程師Julien Verlaguet和Ed Smith的一次訪談。2004年2月,扎克伯格(Mark Zuckerberg)的哈佛同學們第一次登陸非死book,服務器里運行著PHP。那個時候PHP擊敗了Perl成為最炙手可熱的 Web開發語言。

使用類似Ruby的Rails或者Python的Django這些當下最流行的開發框架都不是那個時候的選擇。Rails 第一次發布是在幾個月之后(注:2004年7月),而Django在一年后才被發布(注:2005年)。十年后,PHP因為笨拙的庫,不一致的命名規則,內置定義的函數,在多語言程序中語法和語義與相關語言巨大差異使人混淆,過去的設計原則極容易導致安全性問題等而被指責。

“每一個PHP程序員日復一日地處理著難以捉摸或者棘手的任務”,非死book的工程師Julien Verlaguet和Alok Menghrajani在最近的公司博客上寫道。

但是,PHP并沒離開非死book,并且其他的大公司和工程的數百萬行代碼都是用這個語言寫的。程序員們仍然得益于PHP的快速開發和部署,且努力去除那些不好的特性。

減輕PHP程序員的痛苦不是說拋棄這個語言和多年的開發成果。非死book開發了Hack,這是一種新的,派生于PHP的語言。它將與已有的代碼和諧相處,增強了安全特性源于函數式編程語言和學術研究。

“這是一種很特別的設計,能與PHP進行無縫的交互”,Verlaguet說。技術引領著Hack項目的發展,它的背后是一份混合編程語言和行業經驗的正式學術研究。非死book已經在內部使用和發展Hack大概有兩年時間了。最近,已經將項目開源,并且在4月9日安排公開的“開發者日”。

“我們這樣做的目的是希望能更好地傾聽來自社區的反饋, 同時開源社區也會讓Hack面對非死book外的開發者有更好的體驗”,Verlaguet說。

也許Hack的主要創新是引入了自動類型判斷,概念類似于深奧難懂的Haskell和 ML語言但是比他們少得多的命令行,同時更接近主流的編程語言。

傳統的PHP是動態類型,這意味著在代碼中的基本的本質的變量類型是一個數還是一個字符串或者其他類型是不確切的,除非程序實際運行著。程序員們享受這種靈活,卻為錯誤開辟了空間,它不像Java或者C那樣的靜態類型語言,代碼被寫出來的時候就明確告訴你變量的類型。

Hack 走了一條中間路線:它可以基于變量怎樣被使用的使用邏輯讓開發者指定類型,如果代碼的邏輯沖突,就會給出一個錯誤(error)。這個概念本身不是新的,但是它以前都是被用在編譯型語言上的,開發者需要等待他們的源代碼被轉換成機器碼,不能像PHP程序員希望的那樣點完保存立即執行,Verlaguet 說。

“解決方案在于建立了一個類型檢查守護進程”,他說。關于這個后臺程序運行在開發者的電腦里。它代替等待開發者去顯示調用一個編譯器,當源代碼文件被改變的時候,類型檢查進程要求操作系統去通知編譯器。這類似于同步文件需要更新時,Dropbox就得到一個信號。

被改變檢查的有效的方法是通過類型檢查器被反復檢測,直到其確認與其他的代碼是一致的。只要類型檢查器足夠快,程序員基本就不需要等待,類似于在Git版本管理系統上轉換到新分支那樣,Verlaguet說。

Hack 還有其他一些特性,增強的集合類型如vector和set來增強PHP的數組,匿名函數被使用在函數編程上。新的語言讓非死book逐步提升已有的 PHP代碼,使得長期投資在PHP上的價值繼續發揮作用, Ed Smith說,非死book的HHVM運行引擎將會同時提供給Hack和PHP。

“Hack 讓我們能在同一時間和同一文件上動態轉換我們的代碼”,Smith說,“換做其他的一種語言將會有很大的困難”你認為是嗎?

其他的公司和工程轉換到時髦的Hack還為時尚早,項目剛剛開源,Verlaguet說。不過,從對他采訪的記錄來看,整個項目目前是處于積極的態勢中。

英文原文:fastcolabs

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!