Pharo 是一套開源Smalltalk程序開發平台。Pharo具備所謂現場編程英語Interactive programming的特性,例如實時操控對象,實時更新等。Pharo支持高級Web開發框架,例如Seaside英語Seaside (software)

Pharo
編程範型面向對象
實作者Pharo 社區
面市時間2008年,​16年前​(2008
當前版本
  • 12.0(2024年4月26日)[1]
編輯維基數據鏈接
操作系統LinuxOS XWindows
許可證MIT license, 部分採用 Apache License 2.0[2]
網站pharo.org
啟發語言
Smalltalk-80Squeak

簡介

編輯
 
Pharo 10.0的截圖

Pharo是在2008年3月從Squeak v3.9分叉而來[4][5][6][6]:10[7]。Pharo的英文名稱源自希臘語(Φάρος),意為燈塔。事實上在其標誌上的最後一個字母O里有一座燈塔。

作為Smalltalk平台,Pharo具備Smalltak的特點:

  • 面向對象編程
  • 立即對象身份切換
  • 動態繼承
  • 對象作為方法
  • 可選的綠色線程
  • 可定製的元類
  • 易於使用代理對象

它的虛擬機的特點:

它的內建軟件的特點:

  • 已開發程序和開發環境的可選融合
  • 現場對象檢查

憑藉Smalltalk與生具來的特點, Pharo最大的優勢之一是在修改代碼時不必全程編譯。例如,在調試窗口裡編輯一個方法或者創建一個方法後不需要重啟進程。這就是所謂的「編輯、繼續」,有別於在其他語言裡常見的「編輯、編譯然後運行」。

特徵性語法

編輯
 
Pharo語法明信片

Pharo語法基於了具有一些擴展的Smalltalk-80語言語法。這些擴展在現代Smalltalk方言中是常見的。

  • 用於動態數組的文字,指定數組內容在程序執行期間求值的表達式:
{1. 2. 1+2}
  • 用於字節數組的文字,它只能用在0255範圍內的整數構成:
#[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英語Seaside (software),一個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]

相關條目

編輯

參考

編輯
  1. ^ https://pharo.org/news/2024-04-26-pharo12-released.html.
  2. ^ Pharo license information. [2017-06-08]. (原始內容存檔於2016-05-30). 
  3. ^ Pharo board. [2015-04-01]. (原始內容存檔於2015-03-31). 
  4. ^ DevelopOnTheWeb. developontheweb.co.uk. [2021-11-24]. (原始內容存檔於2021-12-23). 
  5. ^ 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. ^ 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). 
  7. ^ The Rise and Fall of Commercial Smalltalk. www.wirfs-brock.com. [2021-11-24]. (原始內容存檔於2022-04-15) (美國英語). 
  8. ^ Tonel. [2022-02-12]. (原始內容存檔於2022-04-03). 
  9. ^ Pharo got 10 years. Pharo-project.org. [May 31, 2018]. (原始內容存檔於2022-03-14). 
  10. ^ Pharo Open Source Smalltalk — Release 1.4. Pharo-project.org. April 17, 2012 [April 5, 2013]. (原始內容存檔於2014-03-29). 
  11. ^ Pharo Open Source Smalltalk — Release 2.0. Pharo-project.org. March 18, 2013 [April 5, 2013]. (原始內容存檔於2014-03-29). 
  12. ^ Pharo Open Source Smalltalk — Release 3.0. pharo.org. April 30, 2014 [May 1, 2014]. (原始內容存檔於August 23, 2017). 
  13. ^ Pharo Open Source Smalltalk — Release 4.0. pharo.org. April 15, 2015 [April 16, 2015]. (原始內容存檔於August 23, 2017). 
  14. ^ Pharo Open Source Smalltalk — Release 5.0. pharo.org. May 12, 2016 [May 13, 2016]. (原始內容存檔於December 29, 2017). 
  15. ^ Pharo Open Source Smalltalk - Release 6.0. pharo.org. June 6, 2017 [2022-02-12]. (原始內容存檔於2017-11-20). 
  16. ^ Pharo 6.1 released. pharo.org. July 24, 2017 [2022-02-12]. (原始內容存檔於2017-08-20). 
  17. ^ Pharo 7.0 released. pharo.org. January 22, 2019 [2022-02-12]. (原始內容存檔於2022-02-12). 
  18. ^ Pharo 8.0 Released!. pharo.org. January 20, 2020 [2022-02-12]. (原始內容存檔於2022-02-12). 
  19. ^ Pharo 9.0 Released!. pharo.org. July 15, 2020 [2022-02-12]. (原始內容存檔於2021-07-20). 
  20. ^ Pharo 10.0 Released!. pharo.org. April 5, 2022 [2022-04-06]. (原始內容存檔於2022-04-07). 
  21. ^ Pharo 11.0 Released!. pharo.org. May 11, 2023 [2023-07-02]. (原始內容存檔於2023-06-14). 
  22. ^ Pharo 12.0 Released!. pharo.org. April 26, 2024 [2024-05-22]. (原始內容存檔於2024-05-07). 
  23. ^ Pharo by Example. Pharo by Example. [April 5, 2013]. (原始內容存檔於2013年3月26日). 
  24. ^ Deep into Pharo. Deep into Pharo. [September 1, 2013]. (原始內容存檔於2015-02-18). 
  25. ^ one-click version頁面存檔備份,存於網際網路檔案館
  26. ^ Pharo consortium頁面存檔備份,存於網際網路檔案館
  27. ^ Pharo association頁面存檔備份,存於網際網路檔案館
  28. ^ Pharo Open Source Smalltalk — Success stories. Pharo-project.org. [April 5, 2013]. (原始內容存檔於2014-03-29). 
  29. ^ Home. seaside.st. March 18, 2007 [April 5, 2013]. (原始內容存檔於2015-03-23). 
  30. ^ Zinc HTTP Components. Zn.stfx.eu. [April 5, 2013]. (原始內容存檔於2015-05-09). 
  31. ^ Girba, Tudor. Home. Moose technology. [April 5, 2013]. (原始內容存檔於2020-09-21). 
  32. ^ Agile Visualization. Object Profile. [May 31, 2018]. (原始內容存檔於2022-05-01). 
  33. ^ Cog Blog. Mirandabanda.org. [April 5, 2013]. (原始內容存檔於2015-02-18). 

外部連結

編輯