新聞中心
Pony 是一個面向?qū)ο蟮幕?AcTor 模型的安全而且高性能的編程語言。Pony 提供 Sublime 和 Atom 編輯插件,同時很快將提供 VIM 和 Visual Studio 支持??墒褂?LLDB 和 GDB 進行調(diào)試。

網(wǎng)站建設(shè)哪家好,找成都創(chuàng)新互聯(lián)公司!專注于網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、微信小程序開發(fā)、集團企業(yè)網(wǎng)站建設(shè)等服務(wù)項目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了綏濱免費建站歡迎大家使用!
Pony 兼容 C 程序,其編譯器可從 Pony 庫中生成 C 的頭文件,這樣 C/C++ 程序可方便調(diào)用 Pony 庫。
Pony 是什么?
你可以把 Pony 想象成某種“Rust 遇上 Erlang”的東西。Pony 有著最引人注目的特性,它們是:
類型安全存儲安全異常安全無數(shù)據(jù)競爭無死鎖此外,它可以被編譯為高效的本地代碼,它是在開放的情況下開發(fā)的,在兩句版 BSD 許可證下發(fā)布。
以上說的功能不少,但在這里我將重點關(guān)注那些對我們公司來說采用 Pony 至關(guān)重要的功能。
為什么使用 Pony?
使用大多數(shù)我們現(xiàn)有的工具編寫快速、安全、高效、高并發(fā)的程序并非易事?!翱焖佟⒏咝?、高并發(fā)”是可實現(xiàn)的目標(biāo),但加入“安全”之后,就困難了許多。對于 Wallaroo,我們希望同時實現(xiàn)四個目標(biāo),而 Pony 讓實現(xiàn)它們更加簡單。
高并發(fā)
Pony 讓并發(fā)變得簡單。部分是通過提供一個固執(zhí)的并發(fā)方式實現(xiàn)的。在 Pony 語言中,所有的并發(fā)都是通過 Actor 模型 進行的。
Actor 模型以在 Erlang 和 Akka 中的實現(xiàn)最為著名。Actor 模型出現(xiàn)于上世紀(jì) 70 年代,細(xì)節(jié)因?qū)崿F(xiàn)方式而異。不變的是,所有計算都由通過異步消息進行通信的 actor 來執(zhí)行。
你可以用這種方式來看待 Actor 模型:面向?qū)ο笾械膶ο笫菭顟B(tài) + 同步方法,而 actor 是狀態(tài) + 異步方法。
當(dāng)一個 actor 收到一個消息時,它執(zhí)行相應(yīng)的方法。該方法可以在只有該 actor 可訪問的狀態(tài)下運行。Actor 模型允許我們以并發(fā)安全的方式使用可變狀態(tài)。每個 actor 都是單線程的。一個 actor 中的兩個方法絕不會并發(fā)運行。這意味著,在給定的 actor 中,數(shù)據(jù)更新不會引起數(shù)據(jù)競爭或通常與線程和可變狀態(tài)相關(guān)的其他問題。
快速高效
Pony actor 通過一個高效的工作竊取調(diào)度程序來調(diào)度。每個可用的 CPU 都有一個單獨 Pony 調(diào)度程序。這種每個核心一個線程的并發(fā)模型是 Pony 嘗試與 CPU 協(xié)同工作以盡可能高效運行的一部分。Pony 運行時嘗試盡可能利用 CPU 緩存。代碼越少干擾緩存,運行得越好。Pony 意在幫你的代碼與 CPU 緩存友好相處。
Pony 的運行時還會有每個 actor 的堆,因此在垃圾收集期間,沒有 “停止一切” 的垃圾收集步驟。這意味著你的程序總是至少能做一點工作。因此 Pony 程序最終具有非常一致的性能和可預(yù)測的延遲。
安全
Pony 類型系統(tǒng)引入了一個新概念:引用能力,它使得數(shù)據(jù)安全成為類型系統(tǒng)的一部分。Pony 語言中每種變量的類型都包含了有關(guān)如何在 actor 之間分享數(shù)據(jù)的信息。Pony 編譯器用這些信息來確認(rèn),在編譯時,你的代碼是無數(shù)據(jù)競爭和無死鎖的。
如果這聽起來有點像 Rust,那是因為本來就是這樣的。Pony 的引用功能和 Rust 的借用檢查器都提供數(shù)據(jù)安全性;它們只是以不同的方式來接近這個目標(biāo),并有不同的權(quán)衡。
Pony 適合你嗎?
決定是否要在一個非業(yè)余愛好的項目上使用一門新的編程語言是困難的。與其他方法想比,你必須權(quán)衡工具的適當(dāng)性和不成熟度。那么,Pony 和你搭不搭呢?
如果你有一個困難的并發(fā)問題需要解決,那么 Pony 可能是一個好選擇。解決并發(fā)應(yīng)用問題是 Pony 之所以存在的理由。如果你能用一個單線程的 Python 腳本就完成所需操作,那你大概不需要它。如果你有一個困難的并發(fā)問題,你應(yīng)該考慮 Pony 及其強大的無數(shù)據(jù)競爭、并發(fā)感知類型系統(tǒng)。
你將獲得一個這樣的編譯器,它將阻止你引入許多與并發(fā)相關(guān)的錯誤,并在運行時為你提供出色的性能特征。
開始使用 Pony
如果你準(zhǔn)備好開始使用 Pony,你需要先在 Pony 的網(wǎng)站上訪問 學(xué)習(xí)部分。在這里你會找到安裝 Pony 編譯器的步驟和學(xué)習(xí)這門語言的資源。
如果你愿意為你正在使用的這個語言做出貢獻,我們會在 GitHub 上為你提供一些 初學(xué)者友好的問題。
同時,我迫不及待地想在 我們的 IRC 頻道 和 Pony 郵件列表 上與你交談。
要了解更多有關(guān) Pony 的消息,請參閱 Sean Allen 2018 年 7 月 16 日至 19 日在俄勒岡州波特蘭舉行的 第 20 屆 OSCON 會議 上的演講: Pony,我如何學(xué)會停止擔(dān)心并擁抱未經(jīng)證實的技術(shù)。
網(wǎng)頁標(biāo)題:簡單介紹一下Pony編程語言
文章網(wǎng)址:http://fisionsoft.com.cn/article/djpgeps.html


咨詢
建站咨詢
