Pharo

维基百科,自由的百科全书
(差异) ←上一修订 | 最后版本 (差异) | 下一修订→ (差异)
跳转到导航 跳转到搜索
Pharo
File:Pharo Logo v3.0.svg
File:Pharo v10.png
Pharo 10.0的截图
编程范型面向对象
实现者Pharo 社区
发行时间2008年,​18年前​(2008
当前版本
    Module:EditAtWikidata第29行Lua错误:attempt to index field 'wikibase' (a nil value)
    操作系统LinuxOS XWindows
    许可证MIT license,部分采用Apache License 2.0[1]
    网站{{URL|example.com|可选的显示文本}}Module:EditAtWikidata第29行Lua错误:attempt to index field 'wikibase' (a nil value)
    受影响于
    Smalltalk-80Squeak

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

    简介[编辑]

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

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

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

    它的虚拟机的特点:

    它的内置软件的特点:

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

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

    特征性语法[编辑]

    File:Pharo syntax postcard.svg
    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[6],作为其偏好的代码序列化格式。

    历史[编辑]

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

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

    学习Pharo[编辑]

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

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

    Pharo的使用[编辑]

    Pharo意在开发为公司和研究人员开发一个现代Smalltalk。作为示例,Pharo用于开发Seaside英语Seaside (software),一个Web应用框架。Pharo有两个支持机构,面向公司的Pharo财团[26],和面向用户的Pharo协会[27]

    公司和咨询[编辑]

    一些公司在开发中使用Pharo[28],典型例子为:

    虚拟机[编辑]

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

    相关条目[编辑]

    参考[编辑]

    1. ^ Pharo license information. [2017-06-08]. (原始内容存档于2016-05-30). 
    2. ^ DevelopOnTheWeb. developontheweb.co.uk. [2021-11-24]. (原始内容存档于2021-12-23). 
    3. ^ Pharo by example. 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. 
    4. ^ 4.0 4.1 Black, Andrew P.; Ducasse, Stéphane; Nierstrasz, Oscar; Pollet, Damien. Pharo by Example. Samuel Morello. ResearchGate. October 28, 2009 [2022-02-12]. ISBN 978-3-9523341-4-0. (原始内容存档于2021-11-24). 
    5. ^ The Rise and Fall of Commercial Smalltalk. www.wirfs-brock.com. [2021-11-24]. (原始内容存档于2022-04-15) (en-US). 
    6. ^ Tonel. [2022-02-12]. (原始内容存档于2022-04-03). 
    7. ^ Pharo got 10 years. Pharo-project.org. [May 31, 2018]. (原始内容存档于2022-03-14). 
    8. ^ Pharo Open Source Smalltalk — Release 1.4. Pharo-project.org. April 17, 2012 [April 5, 2013]. (原始内容存档于2014-03-29). 
    9. ^ Pharo Open Source Smalltalk — Release 2.0. Pharo-project.org. March 18, 2013 [April 5, 2013]. (原始内容存档于2014-03-29). 
    10. ^ Pharo Open Source Smalltalk — Release 3.0. pharo.org. April 30, 2014 [May 1, 2014]. (原始内容存档于August 23, 2017). 
    11. ^ Pharo Open Source Smalltalk — Release 4.0. pharo.org. April 15, 2015 [April 16, 2015]. (原始内容存档于August 23, 2017). 
    12. ^ Pharo Open Source Smalltalk — Release 5.0. pharo.org. May 12, 2016 [May 13, 2016]. (原始内容存档于December 29, 2017). 
    13. ^ Pharo Open Source Smalltalk - Release 6.0. pharo.org. June 6, 2017 [2022-02-12]. (原始内容存档于2017-11-20). 
    14. ^ Pharo 6.1 released. pharo.org. July 24, 2017 [2022-02-12]. (原始内容存档于2017-08-20). 
    15. ^ Pharo 7.0 released. pharo.org. January 22, 2019 [2022-02-12]. (原始内容存档于2022-02-12). 
    16. ^ Pharo 8.0 Released!. pharo.org. January 20, 2020 [2022-02-12]. (原始内容存档于2022-02-12). 
    17. ^ Pharo 9.0 Released!. pharo.org. July 15, 2020 [2022-02-12]. (原始内容存档于2021-07-20). 
    18. ^ Pharo 10.0 Released!. pharo.org. April 5, 2022 [2022-04-06]. (原始内容存档于2022-04-07). 
    19. ^ Pharo 11.0 Released!. pharo.org. May 11, 2023 [2023-07-02]. (原始内容存档于2023-06-14). 
    20. ^ Pharo 12.0 Released!. pharo.org. April 26, 2024 [2024-05-22]. (原始内容存档于2024-05-07). 
    21. ^ Pharo 13.0 Released!. pharo.org. May 21, 2025. 
    22. ^ Pharo 13.1 Released!. pharo.org. June 26, 2025. 
    23. ^ Pharo by Example. Pharo by Example. [April 5, 2013]. (原始内容存档于2013年3月26日). 
    24. ^ Deep into Pharo. Deep into Pharo. [September 1, 2013]. (原始内容存档于2015-02-18). 
    25. ^ one-click version页面存档备份,存于互联网档案馆
    26. ^ Pharo consortium页面存档备份,存于互联网档案馆
    27. ^ Pharo association页面存档备份,存于互联网档案馆
    28. ^ Pharo Open Source Smalltalk — Success stories. Pharo-project.org. [April 5, 2013]. (原始内容存档于2014-03-29). 
    29. ^ Home. seaside.st. March 18, 2007 [April 5, 2013]. (原始内容存档于2015-03-23). 
    30. ^ Zinc HTTP Components. Zn.stfx.eu. [April 5, 2013]. (原始内容存档于2015-05-09). 
    31. ^ Girba, Tudor. Home. Moose technology. [April 5, 2013]. (原始内容存档于2020-09-21). 
    32. ^ Agile Visualization. Object Profile. [May 31, 2018]. (原始内容存档于2022-05-01). 
    33. ^ Cog Blog. Mirandabanda.org. [April 5, 2013]. (原始内容存档于2015-02-18). 

    外部链接[编辑]