欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

Facebook拋棄PHP

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

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

隨著 Facebook 用戶數(shù)量的飆升,這個(gè)平臺所面臨的不僅僅是 PHP 的缺陷,還包括了緩慢的開發(fā)速度與經(jīng)常出現(xiàn)的代碼差錯(cuò)。于是,為了提高開發(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 的增強(qiáng)型語言,兼容現(xiàn)有的 PHP 代碼。它的主要特點(diǎn)是包含了靜態(tài)類型系統(tǒng)和即時(shí)編譯器,這使得其更加適合于大型項(xiàng)目的開發(fā)。Hack 對于開發(fā)者來說是一個(gè)非常優(yōu)秀的替代品,因?yàn)樗梢院芎玫亟鉀Q PHP 中的若干問題,包括:

  • 增強(qiáng)的類型檢查
  • 即時(shí)編譯,提高性能
  • 更好的 IDE 支持
  • 更好的錯(cuò)誤報(bào)告
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 的實(shí)現(xiàn)仍然基于 PHP 虛擬機(jī),無法很好地解決一些更低層次的問題,因此 Facebook 同時(shí)采用了更底層的編程語言 C++。C++ 作為一種通用的編程語言,在性能方面可以說是目前世界上最快的語言之一。使用 C++ 作為后端開發(fā)語言,F(xiàn)acebook 可以更好地控制服務(wù)器的性能,節(jié)省服務(wù)器資源。

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