有没有不使用虚拟机来开发Smalltalk的方法?

11

我正在学习Smalltalk。目前我正在使用Squeak,但是是否有一种不需要使用虚拟机(VMs)而是像集成开发环境(IDE)一样的方式来开发Smalltalk的方法呢?


3
我建议你熟悉一下Squeak IDE。一旦你习惯了它,它并不那么困难;实际上,与传统的写/编译/运行循环相比,我听说它非常高效。(虽然我只是稍微尝试过,所以不能担保,但普遍认为Smalltalk > 传统的IDE。) - Sasha Chedygov
6个回答

26
一个Smalltalk中的图像类似于VMware虚拟机:它只是运行Smalltalk应用程序的冻结状态。所有的Smalltalk都使用图像,并且使用其中一个进行开发是所有Smalltalk中首选的方法。同样,所有的Smalltalk都编译成字节码并在虚拟机上运行,就像Java、.NET、Python和其他语言一样。但这与您用来开发Smalltalk程序的程序以及本地体验有完全无关。
正如其他人所提到的,Squeak实际上带有一个非常好的IDE——即所有Squeak。然而,我认为这不是你真正想问的。据我所理解,你的问题是以下两个或两个以上:
1. 我可以用我熟悉的工具、熟悉的方法来开发Smalltalk吗?例如,在普通文本编辑器中逐个文件地进行开发? 2. 我可以使用Smalltalk制作外观普通的应用程序吗?
我可以在我熟悉的工具中开发Smalltalk吗?
针对第一个问题:几乎所有的Smalltalk都不行。Smalltalk的文件格式是设计成在Smalltalk IDE中处理,而不是直接在文本编辑器中编辑。这就是为什么Squeak、Pharo、VisualWorks、VisualAge和我用过的其他所有Smalltalk都避免让你直接编辑源代码,而是提供自己的自定义IDE。由于这些工具是跨平台的,它们的IDE通常不是本地的,而是代表模拟的跨平台感觉。虽然你可以直接为所有这些系统编辑源代码(例如,你可以编辑Squeak镜像的foo.sources文件,然后使用Change Browser加载你的编辑),但实际上没有人这样做。
有两种方法可能会让你更满意。首先,正如其他人指出的那样,GNU Smalltalk打破了常规,并且确实具有编辑器友好的基于文件的格式。据我所知,GNU Smalltalk在Windows下运行效果不佳,并且受GPL许可证的限制,这可能对你构成问题。但它确实允许你使用自己选择的编辑器。vim和Emacs都支持GNU Smalltalk的语法高亮,虽然我不知道NetBeans、Emacs或其他主要IDE的包,但编写一个这样的包并不难。
如果你只是觉得Squeak看起来"丑陋",那么你可以选择第二种路线,使用Dolphin Smalltalk。 Dolphin Smalltalk是Smalltalk的Windows本地版本。尽管它的未来目前还不确定,但你可能希望看一下它,因为在其本地环境中,你可能会感到更加自在,如果Squeak让你感到不适的话。 我能制作原生外观的应用程序吗? 如果您想要真正的原生小部件,目前可选项很少。 Dolphin提供原生小部件,但是,正如我之前提到的,它的未来目前不确定。 Squeak、VisualWorks和GNU Smalltalk提供了良好的FFI系统,因此您可以制作原生UI,但这样做相对困难和复杂。 因此,基本上:如果这对您非常重要,那么现在使用Smalltalk可能不是您最好的选择。
请注意,有很多应用程序并不需要使用原生小部件。 游戏和信息亭肯定不需要使用标准小部件,但是如果你四处看看,很少有主流应用程序费力去使用它们。 微软自己的产品以具有自定义外观和感觉而著称,Chrome在其运行的每个平台上看起来都很有趣,尽管在Windows系统上看起来真正奇怪,但iTunes却非常受欢迎。 网站上的众多界面也更好地适应了人们对非标准界面的接受。 因此,有可能您根本不关心——而且由于Squeak的界面高度可主题化,使其在即将发布时看起来"漂亮"并不困难。

(GNU Smalltalk 有非常好的 Gtk+ 绑定,这可能对你是可接受的,具体取决于你想做什么。例如,The GIMP 和 Pidgin 这样的主要应用程序是使用 Gtk+ 编写的,在 Windows 上看起来很好。尽管如此,如果你不考虑它作为一个可行的选项,我会原谅你。)

我的建议

说实话,我强烈建议你找到一个你喜欢的带有 IDE 的 Smalltalk,并使用它。与使用文本编辑器相比,无论是像 Eclipse 这样的高级编辑器还是像 Scite 这样的差劣编辑器,你将会更加高效。如果你选择其他方法,你将错过很多 Smalltalk 的优点:没有 REPL、劣质的调试、劣质的代码浏览等等。

如果你坚持使用传统的开发环境,最好的选择是 GNU Smalltalk。在使用它之前,你应该仔细评估它在 Windows 上的稳定性和性能,并确保你对其 GPL 许可证的影响感到舒适,但如果你满意,它是唯一真正支持基于文件的开发模型的 Smalltalk。


并不完全是这样:你可以使用make和stc编译器(也是一个命令行工具)在Smalltalk/X中构建应用程序(甚至是非GUI、命令行应用程序)。ST/X本身是没有镜像的,它是从单独的st源文件编译而来的。但如果你喜欢,ST/X也包括一个IDE。因此,在IDE中开发,导出文件并进行编译也是可能的。 - blabla999

5

Squeak是一个IDE。"IDE"的概念可以说起源于Smalltalk!您是否想要一个"面向文件"的工作流程?GNU Smalltalk是一种按照这种方式工作的实现。


4
尽管我说这样做不再是Smalltalk,但GNU Smalltalk可能非常接近OP所想要的。 - Rob Napier

4
通常来说,答案是否定的,因为Smalltalk不仅是一种语言,还包括你对它所做的更改等整个环境。你可以通过框架将其转化为更静态的系统,而不是具有生动对象的宇宙,但这将是另一回事。NeXTSTEP和Cocoa本质上就是这样做的。所以答案可能是“当然,它被称为Objective-C”。
注:所有这些都说了,可以看看Logan提到的GNU Smalltalk的参考。

2
使用虚拟机并不妨碍您使用集成开发环境(IDE)。您应该问的问题是,哪个IDE具有良好的Smalltalk集成。 Squeak 绝对是Smalltalk IDE的首选。

也许其他人会考虑其他IDE,因为您已经在使用Squeak,但似乎不太满意。您究竟想要什么,而Squeak又没有提供?


2
我想在Windows上为Windows开发,而不使用Squeak那种困难的界面。 - Nathan Campos

1

在Squeak的图像中工作可能会非常有趣。

一开始环境可能有点令人困惑,但它非常强大。

在实时系统中工作可以轻松地探索和更改事物。您可以将屏幕上的对象查看其状态,玩耍,浏览对象类,运行一些代码并观察世界变化。

Smalltalk浏览器也更加专注于“浏览”代码而不是编写代码。您可以快速找到使用类的所有位置(从编译器到http服务器),并了解它们如何组合在一起。

尝试适应图像一段时间。我认为使用外部IDE会失去某些东西。


0

如果您从squeaksource加载SVI项目,则可以在Smalltalk工具中使用VI绑定。我已将其更新为在Squeak 4.1中运行,不确定是否适用于4.2。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接