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).