色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

Facebook拋棄PHP

傅智翔1年前8瀏覽0評論

Facebook 近日宣布拋棄 PHP 作為后端主要開發(fā)語言,改而使用 C++ 和 Hack。這個草創(chuàng)社交網(wǎng)絡(luò)在最初時使用的是 PHP,但隨著社區(qū)規(guī)模越來越大,開發(fā)者們越來越意識到 PHP 的不足之處。比如,缺乏足夠的靜態(tài)類型檢查和性能問題。

隨著 Facebook 用戶數(shù)量的飆升,這個平臺所面臨的不僅僅是 PHP 的缺陷,還包括了緩慢的開發(fā)速度與經(jīng)常出現(xiàn)的代碼差錯。于是,為了提高開發(fā)效率,F(xiàn)acebook 開始尋求更加高效和可靠的語言。

Hack example:
function getOrders(int $userId): vec{
$conn = $this->getConnection();
$stmt = $conn->query(
'SELECT order_id FROM orders WHERE user_id = '.$userId
);
return $stmt->map($row ==>new Order($row['order_id']));
}

Hack 語言是由 Facebook 發(fā)明的,它是基于 PHP 的增強型語言,兼容現(xiàn)有的 PHP 代碼。它的主要特點是包含了靜態(tài)類型系統(tǒng)和即時編譯器,這使得其更加適合于大型項目的開發(fā)。Hack 對于開發(fā)者來說是一個非常優(yōu)秀的替代品,因為它可以很好地解決 PHP 中的若干問題,包括:

  • 增強的類型檢查
  • 即時編譯,提高性能
  • 更好的 IDE 支持
  • 更好的錯誤報告
C++ example:
class FriendFinder {
 public:
explicit FriendFinder(UserGraph* graph) : graph(graph) {}
vectorfind_friends(User* user) {
auto friends = graph->get_direct_friends(user);
vectorresult(friends.size());
transform(friends.begin(), friends.end(), result.begin(),
[](User* friend_user) { return Friend(friend_user); });
return result;
}
private:
UserGraph* graph;
};

然而,由于 Hack 的實現(xiàn)仍然基于 PHP 虛擬機,無法很好地解決一些更低層次的問題,因此 Facebook 同時采用了更底層的編程語言 C++。C++ 作為一種通用的編程語言,在性能方面可以說是目前世界上最快的語言之一。使用 C++ 作為后端開發(fā)語言,F(xiàn)acebook 可以更好地控制服務(wù)器的性能,節(jié)省服務(wù)器資源。

最終,在使用 Hack 作為替代品之后,F(xiàn)acebook 發(fā)現(xiàn)其開發(fā)效率顯著提高,而且出現(xiàn)的代碼差錯數(shù)量大幅減少。Facebook 在這個改變之后也得到了一些合作伙伴的好評,包括 Shopify 和 Rdio 等。