我是一个刚开始涉足 Smalltalk 的 Rubyist,我正在尝试选择一个实现来进行试验。Squeak 或 Pharo 似乎是一个不错的选择,但我无法找到当前信息来帮助决定哪个更好。我通过谷歌搜索找到的大部分内容都是几年前的,可能不再相关。
这些天有明确的最爱吗?如果不是,各有什么优缺点?
在某种程度上,这是个人品味的问题。Pharo 是 Squeak 的分支,旨在使其成为更现代的 Smalltalk 版本,有时以不坚持向后兼容 Squeak 为代价。
Pharo 是一个分支,也意味着它们有很多共同点,从 VM 到类库的大部分。许多附加软件包都可以与它们一起使用,有些是使用 Squeak 作为主要开发平台开发的,我猜其中有一些是在 Pharo(Seaside、Pier 等)中开发的。两种变体都有免费的介绍书:Squeak by Example 和 Pharo by Example,但 Pharo 似乎更新了。
就我个人而言,我更喜欢 Pharo,因为它给了我更干净、更现代的感觉。
学习 Smalltalk 的另一个选择是Cuis。
从描述:
Cuis 与其他 Squeak 变体的不同之处在于它对系统复杂性持积极态度:随着系统变老,它们通常会变得更加复杂。新功能被添加为下面的任何内容之上的层,有时没有真正理解它,而且几乎总是没有修改它。... 避免这种情况的唯一方法是了解整个系统,并始终重新设计整个系统。保持简单和一致。
代码在 Github 上。最新的图像文件在这里。
Cuis 有大约 600 个班级。这使得一个人理解一切是非常可行的。稍后您可能想要切换到 Squeak、Pharo 或其他 Smalltalk,因为绝大多数类和方法都是兼容的。
有许多有趣的可能起点:
详细说明您想要实现的目标,我们可以更好地帮助您
可能有一个明显的最爱,但你必须自己开发它。
Pharo 和 squeak 有很大的共同点。但由于 pharo 是 squeak 的一个分支,这也意味着它们彼此不同。
如果你从学习smalltalk的角度来看,那么两者都是平等的。如果从支持技术的角度来看,情况可能会有所不同。大多数开发人员要么是squeakers,要么是pharoers。开发人员创建库和技术支持框架。如果图书馆的开发人员是 pharoer,我希望图书馆在 pharo 中比在 squeak 中更好地维护(反之亦然)。
您可能应该看看两者并尝试您想要实现的目标。在大多数情况下,体验将是相同的。一旦它不再是相同的,你可能已经知道你最喜欢的了。
我正在做一系列关于如何 从一开始就使用 Squeak的教程,所以我很自然地偏向于 Squeak。当然,我不害怕使用不同的 fork 来最容易地展示特定的包。比如我用一键码头图片介绍Seaside和Pier,基本就是Pharo。
尽管不是严格意义上的 Smalltalk 实现,但不应忽视 Newspeak。还不是生产环境,但如果您在 Alan Kay 和 Nicolas Wirth 作为语言专家之间纠结, Newspeak就像 Smalltalk 和 Modula2 的结合。
还有 Instantiations 的 VisualAge (VAST) 和最近的版本是 Smalltalk/X,两者共享一个相似的界面,而这又与 Pharo 或 Squeak 大不相同。我将 Pharo 用于我的研究、宠物项目和一些概念验证的东西。我的企业软件包是在 VAST/VASmalltalk/VisualAge 中完成的,无论您喜欢哪个名称。另外,请记住,GNUSmalltalk。