9

每当我开始学习一门语言时,我做的第一件事就是生成一个用该语言编写的可执行文件(它可以是编译程序或脚本),运行时会打印“hello, world”和 stdout 的换行符:

theironknuckle@beastbook:~/Code$ ./hello
hello, world

在使用 GNU Smalltalk 大约一个小时后,我还没有找到如何做到这一点。

(我知道 hello world 程序可以在会话中表示为

'hello, world' printNl

这不符合我的标准输出要求)

我知道 Smalltalk 中没有主线。所以我对实现它可能需要什么样的样板非常感兴趣。同样,文件不一定要编译,但练习的最终结果必须是导致上述会话提取的 smalltalk 代码。

PS。yesyesyes我知道我做错了,因为我不接受“基于图像的编程”哲学。我不在乎。我并不反对学习如何使用图像和 IDE 以及所有这些,但我现在真的没有什么兴趣。我关心的是 Smalltalk 语言本身。从句法、哲学和排版上看,它相当漂亮。我觉得从命令行解释器和文本编辑器学习编程语言很舒服。:)

4

1 回答 1

12

在 GNU Smalltalk 中,几乎没有样板。你可以把你的单行放在一个 .st 文件中,然后运行它gst hello.st

如果您想探索使用类而不是直接执行的语句,那也很容易,传递给的文件中的以下内容gst可以解决问题:

Object subclass: Hello [
    greet [
            'Hello, World' displayNl
    ]
].
greeting := Hello new.
greeting greet.

传递到gst命令行的文件会按顺序解析和执行,因此您可以将上面的列表拆分为两个单独的文件 - 一个用于声明/编译类,第二个用于实际运行它。

一旦你开发了你的程序,你可以-S在加载你的类之后使用gst标志来快照图像,这样你就不需要每次编译开销,而可以只运行你的启动语句。

gst也有shebang支持,所以#! /usr/bin/gst -f如果你不想手动将它传递给gst,你可以把它放在文件的顶部。(有关更多信息,请参阅有关调用的文档,包括如何在不硬编码的位置的情况下执行此操作gst

于 2013-06-15T05:57:33.047 回答