11

我真的开始学习 Smalltalk。现在我正在使用Squeak,但是有什么方法可以在 Smalltalk 中开发而不使用虚拟机,但是像 IDE 之类的东西?

4

6 回答 6

25

Smalltalk 中的图像类似于 VMware 机器:它只是正在运行的 Smalltalk 应用程序的冻结状态。 所有Smalltalks 都使用图像,使用一个进行开发是所有 Smalltalks 中进行开发的首选方式。同样,所有 Smalltalks 都编译为字节码并在虚拟机上运行,​​就像 Java、.NET、Python 和其他一样。但这与您用于开发 Smalltalk 程序的程序以及体验的原生程度完全无关。

正如其他人所提到的,Squeak 实际上带有一个非常好的 IDE——即所有 Squeak。但是,我认为这并不是您真正要问的。据我所知,您的问题是以下两者之一或两者:

  1. 我可以用我熟悉的工具、用我熟悉的方法为 Smalltalk 开发吗?例如,在一个文件一个文件的基础上,在一个普通的文本编辑器中?
  2. 我可以使用 Smalltalk 制作外观正常的应用程序吗?

我可以使用我熟悉的工具为 Smalltalk 开发吗?

回答第一个问题:对于几乎所有 Smalltalks,没有。Smalltalk 的文件格式设计为在 Smalltalk IDE 中操作,而不是直接在文本编辑器中操作。这就是为什么 Squeak、Pharo、VisualWorks、VisualAge 和我曾经使用过的所有其他 Smalltalk 都避免让您直接编辑源代码,而是提供他们自己的自定义 IDE。因为这些工具是跨平台的,所以它们的 IDE 通常不是原生的,而是代表一种模拟的跨平台感觉。虽然您可以直接编辑所有这些系统的源代码(例如,您可以编辑foo.sourcesSqueak 图像的文件,然后使用更改浏览器加载您的编辑),但实际上没有人这样做。

在这方面,有两条路线可能会让你更快乐。首先,正如其他人所指出的,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 在它运行的每个平台上看起来都显得格格不入,iTunes 非常受欢迎,尽管在 Windows 系统上看起来真的很奇怪,等等。网站上过多的界面也使人们更好地适应了非标准界面。因此,您可能根本不在乎——而且由于 Squeak 的界面具有高度的主题性,因此在您即将发货时让它看起来“漂亮”并不难。

(GNU Smalltalk确实有非常好的 Gtk+ 绑定,这对您来说可能是可以接受的,这取决于您想要做什么。有一些主要的应用程序,例如 GIMP 和 Pidgin,是针对 Gtk+ 编写的,在 Windows 中看起来还不错。不过,请原谅您不考虑这是一个可行的选择。)

我的推荐

老实说,我强烈建议您找到一个带有您喜欢的 IDE 的 Smalltalks 并使用它。与尝试使用文本编辑器相比,您的工作效率会大大提高,无论是像 Eclipse 这样的修饰过的编辑器,还是像 Scite 这样的蹩脚的编辑器。如果你走其他路线,你将错过 Smalltalk 的许多优点:没有 REPL、低级调试、低级代码浏览等等。

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

于 2009-12-18T03:27:59.703 回答
5

Squeak一个 IDE。“IDE”的概念可以说来自 Smalltalk!您是否想要“面向文件”的工作流程?GNU Smalltalk是一种以这种方式工作的实现。

于 2009-12-18T00:24:03.990 回答
4

一般来说,答案是否定的,因为 Smalltalk 不仅仅是一种语言,它也是环境,包括您对其所做的更改。您可以将其转换为具有框架而不是活动对象的宇宙的更静态的系统,但这将是另一回事。NeXTSTEP 和 Cocoa 基本上做到了这一点。所以答案可能是“当然,它叫做Objective-C”。

编辑:所有这一切,请参阅 Logan 对 GNU Smalltalk 的引用。

于 2009-12-18T00:24:04.973 回答
2

使用 VM 不会阻止您使用 IDE。您应该问的问题是哪个 IDE 具有良好的 Smalltalk 集成。Squeak绝对是 Smalltalk IDE 的最佳选择

也许其他人在考虑其他 IDE,因为您已经在使用 Squeak 并且似乎并不满足。您到底在寻找什么 Squeak 没有提供?

于 2009-12-18T00:19:46.543 回答
1

在 Squeak 图像中工作真的很有趣。

环境起初有点混乱,但它非常强大。

在实时系统中工作可以很容易地探索和改变事物。您可以在屏幕上查看对象的状态、玩弄它、浏览对象类、运行一些代码并观察世界的变化。

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

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

于 2009-12-18T02:05:38.433 回答
0

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

于 2010-12-10T15:35:12.973 回答