Pharo
編程範型 | 物件導向 |
---|---|
實作者 | Pharo 社區 |
釋出時間 | 2008年 |
目前版本 |
|
作業系統 | Linux、OS X、Windows |
許可證 | MIT license, 部分採用 Apache License 2.0[2] |
網站 | pharo |
啟發語言 | |
Smalltalk-80(Squeak) |
Pharo 是一套開源Smalltalk程式開發平台。Pharo具備所謂現場編程的特性,例如即時操控對象,即時更新等。Pharo支援進階Web開發框架,例如Seaside。
簡介
Pharo是在2008年3月從Squeak v3.9分叉而來[4][5][6][6]:10[7]。Pharo的英文名稱源自希臘語(Φάρος),意為燈塔。事實上在其標誌上的最後一個字母O里有一座燈塔。
作為Smalltalk平台,Pharo具備Smalltak的特點:
- 物件導向程式設計
- 立即對象身份切換
- 動態繼承
- 對象作為方法
- 可選的綠色線程
- 可客製化的元類
- 易於使用代理對象
它的虛擬機器的特點:
- 具有JIT的多平台虛擬機器,合併了分代垃圾回收器,ephemeron,轉發器
- 快速對象列舉
- 容易的呼叫棧操縱
- AST元連接
- 相對較低的主記憶體消耗
- 可客製化的編譯器
- 可選的完全的對象主記憶體持久化
- 可恢復的異常
- 快速對象序列化
它的內建軟件的特點:
- 已開發程式和開發環境的可選融合
- 現場對象檢查
憑藉Smalltalk與生具來的特點, Pharo最大的優勢之一是在修改代碼時不必全程編譯。例如,在除錯窗口裏編輯一個方法或者建立一個方法後不需要重新啟動行程。這就是所謂的「編輯、繼續」,有別於在其他語言裏常見的「編輯、編譯然後執行」。
特徵性語法
Pharo語法基於了具有一些擴充的Smalltalk-80語言語法。這些擴充在現代Smalltalk方言中是常見的。
- 用於動態陣列的文字,指定陣列內容在程式執行期間求值的表達式:
{1. 2. 1+2}
- 用於位元組陣列的文字,它只能用在
0
到255
範圍內的整數構成:
#[1 2 3 4]
- 用於比例十進制數的文字,它是能夠準確表示十進制分數的定點十進制數的表示法:
3.14s2
- pragma。在Smalltalk-80中,pragma只用於原始方法。在Pharo中,它們是全功能的方法標註:
<gtInspectorPresentationOrder: 30>
- 在註釋中的兩個雙引號,被被解釋為作為這個註釋內容一部份的一個單引號字元。
提供的Pharo語言語法是非常簡單和極簡主義的。基本語言元素通常可以體現在一張明信片上。它的文法被歸類為LL(1)。
語言文法不直接指定代碼應怎樣儲存在檔案中。Pharo使用Tonel[8],作為其偏好的代碼序列化格式。
歷史
自Squeak衍生,Pharo旨在建立一個符合Smalltalk-80規範的開源Smalltak環境。它專注於現代軟件工程和程式開發技術,而Squeak定位於教學。
版本 | 發行時間 | 主要特徵 |
---|---|---|
2008年3月16日 [9] | 從Squeak環境分叉 | |
1.0 | 2010年4月15日 | 真實的閉包,移除EToys和MVC |
1.1 | 2010年7月26日 | Cog JIT VM,設置框架 |
1.2 | 2011年3月29日 | 新的Finder,新近變更工具,改進的Help,更好的theme |
1.3 | 2011年8月 | Zinc,無頭映像 |
1.4 | 2012年4月[10] | Ring元模型,更好的代碼模擬器 |
2.0 | 2013年3月18日[11] | 瀏覽器改進,QA工具,Fuel序列化器,更好的檔案API |
3.0 | 2014年4月[12] | 新的模組編譯器(Opal)和除錯器,續體 |
4.0 | 2015年4月[13] | GTools(Playground,Inspector,Spotter),槽模型 |
5.0 | 2016年5月[14] | Spur VM,UFFI,改進的反射性 |
6.0 | 2017年6月6日[15] | 64-bit和Git支援 |
6.1 | 2017年7月24日[16] | 改進的Git支援 |
7.0 | 2019年1月22日[17] | 引導, 新的代碼瀏覽器(Calypso), 有狀態的trait |
8.0 | 2020年1月20日[18] | 改進的Git支援,測試,重構和Windows |
9.0 | 2021年7月15日[19] | GTK3支援,對象中心除錯器和檢查器,重構,官方ARM VM |
10.0 | 2022年4月5日[20] | 清理,模組化,很多重寫和改進的工具 |
11.0 | 2023年5月11日[21] | Ephemerons,SIMD,更有效的閉包,改進的工具 |
12.0 | 2024年4月26日[22] | 新的除錯點系統,新的類別定義,持久空間 |
學習Pharo
Pharo有一個活躍的社區和寬鬆的MIT許可。學習Smalltalk程式語言的利器,是兩本介紹Pharo的書。第一本書為《Pharo by Example》[23] ,免費下載。第二本書是《Deep into Pharo》,免費下載。[24]
初學者最好的體驗Pharo的方法是在其官方網站下載一站式版本[25]。
Pharo的使用
Pharo意在開發為公司和研究人員開發一個現代Smalltalk。作為範例,Pharo用於開發Seaside,一個Web應用框架。Pharo有兩個支援機構,面向公司的Pharo財團[26],和面向用戶的Pharo協會[27]。
公司和諮詢
一些公司在開發中使用Pharo[28],典型例子為:
教學和研究
一些教育機構使用Pharo,包括:
- 布宜諾斯艾麗斯大學
- 伯恩大學
- 布魯塞爾大學
- Bretagne Occidentale大學
- École des Mines de Douai
- Savoie大學
- Ivan Franko Nat. Uni. of Lviv
- Czech 技術大學
- CULS Prague
- 喀麥隆Maroua大學
- 北密執根大學
- 阿根廷天主教大學
- Santiago大學
- Policnica de Catalunya大學
- Saarland大學
- Quilmes大學
- La Plata大學
- Technologica Nacional大學
- Nacional de San Martin大學
- Tomsk大學
一些使用Pharo的研究機構:
- LAFHIS, AR
- SCG, CH
- CEA-List, FR
- CAR-EMD, FR
- RMOD-Inria, FR
- UMMISCO-IRD, FR
- Reveal, CH
- LYSIC, FR
- IGEVET, AR
- Pleiad, CL
- Uqbar, AR
虛擬機器
Pharo的虛擬機器幾乎完全用Smalltalk語言打造。自2008年,Pharo的虛擬機器的表現接近最快的Smalltalk虛擬機器。[33]
相關條目
參考
- ^ https://pharo.org/news/2024-04-26-pharo12-released.html.
- ^ Pharo license information. [2017-06-08]. (原始內容存檔於2016-05-30).
- ^ Pharo board. [2015-04-01]. (原始內容存檔於2015-03-31).
- ^ DevelopOnTheWeb. developontheweb.co.uk. [2021-11-24]. (原始內容存檔於2021-12-23).
- ^ Pharo by example. Andrew P. Black, Stéphane Ducasse, Oscar Nierstrasz, Damien Pollet, Damien Cassou, Marcus Denker. [Kehrsatz] Switzerland. October 28, 2009. ISBN 978-3-9523341-4-0. OCLC 957555627.
- ^ 6.0 6.1 Black, Andrew P.; Ducasse, Stéphane; Nierstrasz, Oscar; Pollet, Damien. Pharo by Example. Samuel Morello. ResearchGate. October 28, 2009 [2022-02-12]. ISBN 978-3-9523341-4-0. (原始內容存檔於2021-11-24).
- ^ The Rise and Fall of Commercial Smalltalk. www.wirfs-brock.com. [2021-11-24]. (原始內容存檔於2022-04-15) (美國英語).
- ^ Tonel. [2022-02-12]. (原始內容存檔於2022-04-03).
- ^ Pharo got 10 years. Pharo-project.org. [May 31, 2018]. (原始內容存檔於2022-03-14).
- ^ Pharo Open Source Smalltalk — Release 1.4. Pharo-project.org. April 17, 2012 [April 5, 2013]. (原始內容存檔於2014-03-29).
- ^ Pharo Open Source Smalltalk — Release 2.0. Pharo-project.org. March 18, 2013 [April 5, 2013]. (原始內容存檔於2014-03-29).
- ^ Pharo Open Source Smalltalk — Release 3.0. pharo.org. April 30, 2014 [May 1, 2014]. (原始內容存檔於August 23, 2017).
- ^ Pharo Open Source Smalltalk — Release 4.0. pharo.org. April 15, 2015 [April 16, 2015]. (原始內容存檔於August 23, 2017).
- ^ Pharo Open Source Smalltalk — Release 5.0. pharo.org. May 12, 2016 [May 13, 2016]. (原始內容存檔於December 29, 2017).
- ^ Pharo Open Source Smalltalk - Release 6.0. pharo.org. June 6, 2017 [2022-02-12]. (原始內容存檔於2017-11-20).
- ^ Pharo 6.1 released. pharo.org. July 24, 2017 [2022-02-12]. (原始內容存檔於2017-08-20).
- ^ Pharo 7.0 released. pharo.org. January 22, 2019 [2022-02-12]. (原始內容存檔於2022-02-12).
- ^ Pharo 8.0 Released!. pharo.org. January 20, 2020 [2022-02-12]. (原始內容存檔於2022-02-12).
- ^ Pharo 9.0 Released!. pharo.org. July 15, 2020 [2022-02-12]. (原始內容存檔於2021-07-20).
- ^ Pharo 10.0 Released!. pharo.org. April 5, 2022 [2022-04-06]. (原始內容存檔於2022-04-07).
- ^ Pharo 11.0 Released!. pharo.org. May 11, 2023 [2023-07-02]. (原始內容存檔於2023-06-14).
- ^ Pharo 12.0 Released!. pharo.org. April 26, 2024 [2024-05-22]. (原始內容存檔於2024-05-07).
- ^ Pharo by Example. Pharo by Example. [April 5, 2013]. (原始內容存檔於2013年3月26日).
- ^ Deep into Pharo. Deep into Pharo. [September 1, 2013]. (原始內容存檔於2015-02-18).
- ^ one-click version(頁面存檔備份,存於互聯網檔案館)
- ^ Pharo consortium(頁面存檔備份,存於互聯網檔案館)
- ^ Pharo association(頁面存檔備份,存於互聯網檔案館)
- ^ Pharo Open Source Smalltalk — Success stories. Pharo-project.org. [April 5, 2013]. (原始內容存檔於2014-03-29).
- ^ Home. seaside.st. March 18, 2007 [April 5, 2013]. (原始內容存檔於2015-03-23).
- ^ Zinc HTTP Components. Zn.stfx.eu. [April 5, 2013]. (原始內容存檔於2015-05-09).
- ^ Girba, Tudor. Home. Moose technology. [April 5, 2013]. (原始內容存檔於2020-09-21).
- ^ Agile Visualization. Object Profile. [May 31, 2018]. (原始內容存檔於2022-05-01).
- ^ Cog Blog. Mirandabanda.org. [April 5, 2013]. (原始內容存檔於2015-02-18).