Pharo是一个开源、跨平台的
smalltalk80
编程语言和运行时实现,基于Cog
虚拟机。它包含所有运行Pharo系统所需的源代码,提供实时对象操作、实时更新等特性。Pharo于2008年3月从Squeak v3.9分支而来,旨在为现代软件工程和程序开发提供一个符合Smalltalk-80规范的环境。2012年04月20日,Pharo 1.4 发布,Smalltalk
开发环境。
Pharo的目标是提供一个简洁新颖的开源
smalltalk开发环境。Smalltalk被公认为历史上第二个面向对象的程序设计语言和第一个真正的集成开发环境(IDE)。Smalltalk由Alan Kay,Dan Ingalls,Ted Kaehler,Adele Goldberg等于70年代初在Xerox PARC开发。Smalltalk对其它众多的
程序设计语言的产生起到了极大的推动作用,主要有:
Objective-C,Actor,Java和
Ruby等。90年代的许多软件开发思想得益于
smalltalk,例如设计模式、敏捷编程和重构等。Pharo的英文名称源自
希腊语(Φάρος),意为灯塔,其标志上的最后一个字母O中包含一座灯塔。
Pharo继承了Smalltalk的特点,如面向对象编程、立即对象身份切换、动态继承、对象作为方法、可选的绿色线程、可定制的元类、易于使用代理对象等。Pharo的
虚拟机具有JIT的多平台支持,合并了分代垃圾回收器、ephemeron、转发器等特性,并且具有快速对象枚举、容易的调用栈操纵、AST元连接、相对较低的内存消耗、可定制的编译器、可选的完全的对象内存持久化、可恢复的异常、快速对象序列化等特点。
Pharo的内建软件特点包括已开发程序和
开发环境的可选融合、现场对象检查等。Pharo的一个显著优势是在修改代码时不必全程编译,支持“编辑、继续”的工作流程,与其他语言的“编辑、编译然后运行”相区别。
Pharo语法基于了具有一些扩展的
smalltalk80语言语法。这些扩展在现代Smalltalk方言中是常见的,例如用于动态数组的文字、用于字节数组的文字、用于比例十进制数的文字、pragma作为全功能的方法标注等。Pharo的语法非常简单和极简主义,基本语言元素可以体现在一张明信片上,其文法被归类为LL(1)。Pharo使用Tonel作为其偏好的代码序列化格式。
Pharo意在为公司和研究人员开发一个现代Smalltalk。Pharo用于开发Seaside,一个Web应用框架。Pharo有两个支持机构,面向公司的Pharo财团,和面向用户的Pharo协会。一些公司在开发中使用Pharo,例如Seaside、Zinc、Moose、图形库、Roassal等。Pharo也被多个教育机构和研究机构使用,包括
布宜诺斯艾利斯艾丽斯大学、伯恩大学、
法语布鲁塞尔自由大学等。