Pharo

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

 简介 
Pharo是在2008年3月从Squeak v3.9分叉而来。Pharo的英文名称源自希腊语（Φάρος），意为灯塔。事实上在其标志上的最后一个字母O里有一座灯塔。

作为Smalltalk平台，Pharo具备Smalltak的特点：
 面向对象编程
 立即对象身份切换
 动态继承
 对象作为方法
 可选的绿色线程
 可定制的元类
 易于使用代理对象

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

它的内建软件的特点：
 已开发程序和开发环境的可选融合
现场对象检查

凭借Smalltalk与生具来的特点， Pharo最大的优势之一是在修改代码时不必全程编译。例如，在调试窗口里编辑一个方法或者创建一个方法后不需要重启进程。这就是所谓的“编辑、继续”，有别于在其他语言里常见的“编辑、编译然后运行”。

特征性语法
560px|thumb|right|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，作为其偏好的代码序列化格式。

 历史 
自Squeak衍生，Pharo旨在创建一个符合Smalltalk-80规范的开源Smalltak环境。它专注于现代软件工程和程序开发技术，而Squeak定位于教学。

 版本 发行时间 主要特征 2008年3月16日  从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月 Ring元模型，更好的代码模拟器 2.0 2013年3月18日 浏览器改进，QA工具，Fuel序列化器，更好的文件API 3.0 2014年4月 新的模块编译器（Opal）和调试器，续体 4.0 2015年4月 GTools（Playground，Inspector，Spotter），槽模型 5.0 2016年5月 Spur VM，UFFI，改进的反射性 6.0 2017年6月6日 64-bit和Git支持 6.1 2017年7月24日 改进的Git支持 7.0 2019年1月22日 引导, 新的代码浏览器（Calypso）, 有状态的trait 8.0 2020年1月20日 改进的Git支持，测试，重构和Windows 9.0 2021年7月15日 GTK3支持，对象中心调试器和检查器，重构，官方ARM VM 10.0 2022年4月5日 清理，模块化，很多重写和改进的工具 11.0 2023年5月11日 Ephemerons，SIMD，更有效的闭包，改进的工具 12.0 2024年4月26日 新的调试点系统，新的类定义，持久空间 13.0 2025年5月21日 HDPI支持，可缩放UI，新的进程浏览器，机构式窗口管理器，在unix上使用epoll的异步IO  2025年6月26日 合并入自从版本13.0后的改进

 学习Pharo 
Pharo有一个活跃的社区和宽松的MIT许可。学习Smalltalk程序语言的利器，是两本介绍Pharo的书。第一本书为《Pharo by Example》 ，免费下载。第二本书是《Deep into Pharo》，免费下载。

初学者最好的体验Pharo的方法是在其官方网站下载一站式版本one-click version。

 Pharo的使用 
Pharo意在开发为公司和研究人员开发一个现代Smalltalk。作为示例，Pharo用于开发，一个Web应用框架。Pharo有两个支持机构，面向公司的Pharo财团Pharo consortium ，和面向用户的Pharo协会Pharo association。

 公司和咨询 
一些公司在开发中使用Pharo，典型例子为：

 ，动态Web开发
 Zinc，服务器架构
 ，分析所有程序语言的数据和软件
 图形库，用于演化的用户界面
 Roassal，用于可视化数据 

 虚拟机 
Pharo的虚拟机几乎完全用Smalltalk语言打造。自2008年，Pharo的虚拟机的表现接近最快的Smalltalk虚拟机。

 相关条目 
 Smalltalk
 GNU Smalltalk
 Squeak

 参考 

 外部链接 
 Pharo Homepage
 Awesome Pharo 

Category:面向对象的编程语言
Category:基于类的编程语言
Category:动态类型编程语言
Category:使用MIT许可证的软件
Category:Smalltalk编程语言家族