Pharo 是一套開源Smalltalk程式開發平台。Pharo具備所謂現場編程的特性,例如即時操控對象,即時更新等。Pharo支援進階Web開發框架,例如Seaside。
編程範型 | 物件導向 |
---|---|
實作者 | Pharo 社區 |
釋出時間 | 2008年 |
目前版本 |
|
作業系統 | Linux、OS X、Windows |
許可證 | MIT license, 部分採用 Apache License 2.0[2] |
網站 | pharo |
啟發語言 | |
Smalltalk-80(Squeak) |
簡介
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)。
歷史
自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]
相關條目
參考
外部連結
Wikiwand in your browser!
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.