偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

為什么 Facebook 發(fā)明新語言“Hack”

開發(fā) 項目管理
為什么 Facebook 發(fā)明新語言“Hack”?(注:Hack是一種PHP的派生語言)為了替換掉那些有年頭的老代碼,F(xiàn)acebook創(chuàng)建了一個新的語言。這篇文章將會告訴背后的故事。

為什么 Facebook 發(fā)明新語言“Hack”?(注:Hack是一種PHP的派生語言)

為了替換掉那些有年頭的老代碼,F(xiàn)acebook創(chuàng)建了一個新的語言。這篇文章將會告訴背后的故事。

---By Steven Melendez

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

使用類似Ruby的Rails或者Python的Django這些當(dāng)下***的開發(fā)框架都不是那個時候的選擇。Rails***次發(fā)布是在幾個月之后(注:2004年7月),而Django在一年后才被發(fā)布(注:2005年)。十年后,PHP因?yàn)楸孔镜膸?,不一致的命名?guī)則,內(nèi)置定義的函數(shù),在多語言程序中語法和語義與相關(guān)語言巨大差異使人混淆,過去的設(shè)計原則極容易導(dǎo)致安全性問題等而被指責(zé)。

“每一個PHP程序員日復(fù)一日地處理著難以捉摸或者棘手的任務(wù)”,F(xiàn)acebook的工程師Julien Verlaguet和Alok Menghrajani在最近的公司博客上寫道。

但是,PHP并沒離開Facebook,并且其他的大公司和工程的數(shù)百萬行代碼都是用這個語言寫的。程序員們?nèi)匀坏靡嬗赑HP的快速開發(fā)和部署,且努力去除那些不好的特性。

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

“這是一種很特別的設(shè)計,能與PHP進(jìn)行無縫的交互”,Verlaguet說。技術(shù)***著Hack項目的發(fā)展,它的背后是一份混合編程語言和行業(yè)經(jīng)驗(yàn)的正式學(xué)術(shù)研究。Facebook已經(jīng)在內(nèi)部使用和發(fā)展Hack大概有兩年時間了。最近,已經(jīng)將項目開源,并且在4月9日安排公開的“開發(fā)者日”。

“我們這樣做的目的是希望能更好地傾聽來自社區(qū)的反饋, 同時開源社區(qū)也會讓Hack面對Facebook外的開發(fā)者有更好的體驗(yàn)”,Verlaguet說。

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

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

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

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

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

Hack還有其他一些特性,增強(qiáng)的集合類型如vector和set來增強(qiáng)PHP的數(shù)組,匿名函數(shù)被使用在函數(shù)編程上。新的語言讓Facebook逐步提升已有的PHP代碼,使得長期投資在PHP上的價值繼續(xù)發(fā)揮作用, Ed Smith說,F(xiàn)acebook的HHVM運(yùn)行引擎將會同時提供給Hack和PHP。

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

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

英文原文:fastcolabs

譯文鏈接:http://www.oschina.net/news/50565/why-facebook-invented-a-new-php-derived-language-called-hack

責(zé)任編輯:林師授 來源: 開源中國社區(qū) 編譯
相關(guān)推薦

2022-01-17 16:09:43

Go語言開發(fā)

2014-03-21 10:45:33

FacebookHack

2015-04-08 10:46:11

2023-02-10 08:58:46

2014-11-03 10:14:22

2021-05-06 06:53:39

DockerGoogleFacebook

2015-09-08 16:22:14

Facebook公有云云市場

2019-02-20 11:14:08

程序員技能溝通

2021-09-15 19:11:05

2013-04-25 10:14:39

Facebook開發(fā)者開發(fā)

2021-03-26 06:00:37

編程語言CPU

2021-03-25 16:01:11

編程語言CPU機(jī)器語言

2020-04-07 16:12:56

Go編程語言開發(fā)

2010-11-02 14:31:44

Google Maps

2011-11-08 10:30:05

Eclipse

2017-09-06 10:51:22

Facebook

2012-06-12 09:47:17

C語言

2020-09-04 15:34:07

C編程語言開發(fā)

2017-04-05 18:10:05

R語言開發(fā)Ross

2011-09-09 12:09:27

Dart
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號