Pharo

Pharo 是一套开源Smalltalk程序开发平台。Pharo具备所谓现场编程的特性,例如实时操控对象,实时更新等。Pharo支持高级Web开发框架,例如Seaside

Pharo
面向对象
實作者Pharo 社区
2008年2008
当前版本
  • 11.0.0 (2023年5月11日)[1]
操作系统LinuxOS XWindows
許可證MIT license, 部分采用 Apache License 2.0[2]
網站pharo.org
啟發語言
Smalltalk-80Squeak

简介

Pharo 10.0的截图

Pharo是在2008年3月从Squeak v3.9分叉而来[3][4][5][5]:10[6]。Pharo的英文名称源自希腊语(Φάρος),意为灯塔。事实上在其标志上的最后一个字母O里有一座灯塔。

作为Smalltalk平台,Pharo具备Smalltak的特点:

  • 面向对象编程
  • 立即对象身份切换
  • 动态继承
  • 对象作为方法
  • 可选的绿色线程
  • 可定制的元类
  • 易于使用代理对象

它的虚拟机的特点:

  • 具有JIT的多平台虚拟机,合并了分代垃圾回收器ephemeron,转发器
  • 快速对象枚举
  • 容易的调用栈操纵
  • AST元连接
  • 相对较低的内存消耗
  • 可定制的编译器
  • 可选的完全的对象内存持久化
  • 可恢复的异常
  • 快速对象序列化

它的内建软件的特点:

  • 已开发程序和开发环境的可选融合
  • 现场对象检查

凭借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[7],作为其偏好的代码序列化格式。

历史

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],典型例子为:

  • Seaside,动态Web开发[27]
  • Zinc,服务器架构[28]
  • Moose,分析所有程序语言的数据和软件[29]
  • 图形库,用于演化的用户界面
  • Roassal,用于可视化数据[30]

教学和研究

一些教育机构使用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]

相关条目

参考

  1. https://pharo.org/news/pharo11-released.html.
  2. . [2017-06-08]. (原始内容存档于2016-05-30).
  3. . developontheweb.co.uk. [2021-11-24]. (原始内容存档于2021-12-23).
  4. . 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.
  5. 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).
  6. . www.wirfs-brock.com. [2021-11-24]. (原始内容存档于2022-04-15) (美国英语).
  7. . [2022-02-12]. (原始内容存档于2022-04-03).
  8. . Pharo-project.org. [May 31, 2018]. (原始内容存档于2022-03-14).
  9. . Pharo-project.org. April 17, 2012 [April 5, 2013]. (原始内容存档于2014-03-29).
  10. . Pharo-project.org. March 18, 2013 [April 5, 2013]. (原始内容存档于2014-03-29).
  11. . pharo.org. April 30, 2014 [May 1, 2014]. (原始内容存档于August 23, 2017).
  12. . pharo.org. April 15, 2015 [April 16, 2015]. (原始内容存档于August 23, 2017).
  13. . pharo.org. May 12, 2016 [May 13, 2016]. (原始内容存档于December 29, 2017).
  14. . pharo.org. June 6, 2017 [2022-02-12]. (原始内容存档于2017-11-20).
  15. . pharo.org. July 24, 2017 [2022-02-12]. (原始内容存档于2017-08-20).
  16. . pharo.org. January 22, 2019 [2022-02-12]. (原始内容存档于2022-02-12).
  17. . pharo.org. January 20, 2020 [2022-02-12]. (原始内容存档于2022-02-12).
  18. . pharo.org. July 15, 2020 [2022-02-12]. (原始内容存档于2021-07-20).
  19. . pharo.org. April 5, 2022 [2022-04-06]. (原始内容存档于2022-04-07).
  20. . pharo.org. May 11, 2023 [2023-07-02]. (原始内容存档于2023-06-14).
  21. . Pharo by Example. [April 5, 2013]. (原始内容存档于2013年3月26日).
  22. . Deep into Pharo. [September 1, 2013]. (原始内容存档于2015-02-18).
  23. one-click version页面存档备份,存于
  24. Pharo consortium页面存档备份,存于
  25. Pharo association页面存档备份,存于
  26. . Pharo-project.org. [April 5, 2013]. (原始内容存档于2014-03-29).
  27. . seaside.st. March 18, 2007 [April 5, 2013]. (原始内容存档于2015-03-23).
  28. . Zn.stfx.eu. [April 5, 2013]. (原始内容存档于2015-05-09).
  29. Girba, Tudor. . Moose technology. [April 5, 2013]. (原始内容存档于2020-09-21).
  30. . Object Profile. [May 31, 2018]. (原始内容存档于2022-05-01).
  31. . Mirandabanda.org. [April 5, 2013]. (原始内容存档于2015-02-18).

外部链接

This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.