Pharo

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

简介 

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

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

它的虚拟机的特点：
 具有JIT的多平台虚拟机，合并了分代垃圾回收器，，转发器
 快速对象枚举
 容易的调用栈操纵
 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)。

语言文法不直接指定代码应怎样存储在文件中。Pharo使用Tonel，作为其偏好的代码序列化格式。

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

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

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

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

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

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

教学和研究 
一些教育机构使用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虚拟机。

相关条目 
 Smalltalk
 GNU Smalltalk
 Squeak

参考

外部链接 
 Pharo Homepage
 Awesome Pharo 

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