Pharo
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分叉而来[3][4][5][5]:10[6]。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日 [8] | 从Squeak环境分叉 | |
Pharo 1.0 | 2010年4月15日 | 真实的闭包,移除EToys和MVC |
Pharo 1.1 | 2010年7月26日 | Cog JIT VM,设置框架 |
Pharo 1.2 | 2011年3月29日 | 新的Finder,新近变更工具,改进的Help,更好的theme |
Pharo 1.3 | 2011年8月 | Zinc,无头映像 |
Pharo 1.4 | 2012年4月[9] | Ring元模型,更好的代码模拟器 |
Pharo 2.0 | 2013年3月18日[10] | 浏览器改进,QA工具,Fuel序列化器,更好的文件API |
Pharo 3.0 | 2014年4月[11] | 新的模块编译器(Opal)和调试器,续体 |
Pharo 4.0 | 2015年4月[12] | GTools(Playground,Inspector,Spotter),槽模型 |
Pharo 5.0 | 2016年5月[13] | Spur VM,UFFI,改进的反射性 |
Pharo 6.0 | 2017年6月6日[14] | 64-bit和Git支持 |
Pharo 6.1 | 2017年7月24日[15] | 改进的Git支持 |
Pharo 7.0 | 2019年1月22日[16] | 引导, 新的代码浏览器(Calypso), 有状态的trait |
Pharo 8.0 | 2020年1月20日[17] | 改进的Git支持,测试,重构和Windows |
Pharo 9.0 | 2021年7月15日[18] | GTK3支持,对象中心调试器和检查器,重构,官方ARM VM |
Pharo 10.0 | 2022年4月5日[19] | 清理,模块化,很多重写和改进的工具 |
Pharo 11.0 | 2023年5月11日[20] | Ephemerons,SIMD,更有效的闭包,改进的工具 |
学习Pharo
Pharo有一个活跃的社区和宽松的MIT许可。学习Smalltalk程序语言的利器,是两本介绍Pharo的书。第一本书为《Pharo by Example》[21] ,免费下载。第二本书是《Deep into Pharo》,免费下载。[22]
初学者最好的体验Pharo的方法是在其官方网站下载一站式版本[23]。
Pharo的使用
Pharo意在开发为公司和研究人员开发一个现代Smalltalk。作为示例,Pharo用于开发Seaside,一个Web应用框架。Pharo有两个支持机构,面向公司的Pharo财团[24],和面向用户的Pharo协会[25]。
公司和咨询
一些公司在开发中使用Pharo[26],典型例子为:
教学和研究
一些教育机构使用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虚拟机。[31]
相关条目
参考
- https://pharo.org/news/pharo11-released.html.
- . [2017-06-08]. (原始内容存档于2016-05-30).
- . developontheweb.co.uk. [2021-11-24]. (原始内容存档于2021-12-23).
- . 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.
- Black, Andrew P.; Ducasse, Stéphane; Nierstrasz, Oscar; Pollet, Damien. . Samuel Morello. ResearchGate. October 28, 2009 [2022-02-12]. ISBN 978-3-9523341-4-0. (原始内容存档于2021-11-24).
- . www.wirfs-brock.com. [2021-11-24]. (原始内容存档于2022-04-15) (美国英语).
- . [2022-02-12]. (原始内容存档于2022-04-03).
- . Pharo-project.org. [May 31, 2018]. (原始内容存档于2022-03-14).
- . Pharo-project.org. April 17, 2012 [April 5, 2013]. (原始内容存档于2014-03-29).
- . Pharo-project.org. March 18, 2013 [April 5, 2013]. (原始内容存档于2014-03-29).
- . pharo.org. April 30, 2014 [May 1, 2014]. (原始内容存档于August 23, 2017).
- . pharo.org. April 15, 2015 [April 16, 2015]. (原始内容存档于August 23, 2017).
- . pharo.org. May 12, 2016 [May 13, 2016]. (原始内容存档于December 29, 2017).
- . pharo.org. June 6, 2017 [2022-02-12]. (原始内容存档于2017-11-20).
- . pharo.org. July 24, 2017 [2022-02-12]. (原始内容存档于2017-08-20).
- . pharo.org. January 22, 2019 [2022-02-12]. (原始内容存档于2022-02-12).
- . pharo.org. January 20, 2020 [2022-02-12]. (原始内容存档于2022-02-12).
- . pharo.org. July 15, 2020 [2022-02-12]. (原始内容存档于2021-07-20).
- . pharo.org. April 5, 2022 [2022-04-06]. (原始内容存档于2022-04-07).
- . pharo.org. May 11, 2023 [2023-07-02]. (原始内容存档于2023-06-14).
- . Pharo by Example. [April 5, 2013]. (原始内容存档于2013年3月26日).
- . Deep into Pharo. [September 1, 2013]. (原始内容存档于2015-02-18).
- one-click version(页面存档备份,存于)
- Pharo consortium(页面存档备份,存于)
- Pharo association(页面存档备份,存于)
- . Pharo-project.org. [April 5, 2013]. (原始内容存档于2014-03-29).
- . seaside.st. March 18, 2007 [April 5, 2013]. (原始内容存档于2015-03-23).
- . Zn.stfx.eu. [April 5, 2013]. (原始内容存档于2015-05-09).
- Girba, Tudor. . Moose technology. [April 5, 2013]. (原始内容存档于2020-09-21).
- . Object Profile. [May 31, 2018]. (原始内容存档于2022-05-01).
- . Mirandabanda.org. [April 5, 2013]. (原始内容存档于2015-02-18).