Compilation 编译';你好,世界';GNU smalltalk

Compilation 编译';你好,世界';GNU smalltalk,compilation,stdout,smalltalk,gnu-smalltalk,Compilation,Stdout,Smalltalk,Gnu Smalltalk,每当我开始学习一种语言时,我要做的第一件事就是生成一个用该语言编写的可执行文件(可以是编译程序或脚本),运行时会打印“hello,world”和一个新行到stdout: theironknuckle@beastbook:~/Code$ ./hello hello, world 在GNU Smalltalk上玩了大约一个小时后,我还不知道该怎么做 (我知道hello world程序可以在会话中表示为 'hello, world' printNl 这不符合我的标准要求) 我知道Smalltalk

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

theironknuckle@beastbook:~/Code$ ./hello
hello, world
在GNU Smalltalk上玩了大约一个小时后,我还不知道该怎么做

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

'hello, world' printNl
这不符合我的标准要求)

我知道Smalltalk没有主线。所以我很好奇什么样的样板可能是必要的,使它发生。同样,不一定要编译该文件,但该练习的最终结果必须是smalltalk代码,从而产生上述会话提取


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

在GNU Smalltalk中,几乎没有样板文件。 您可以将单行代码放在.st文件中,然后使用
gst hello.st

如果您想使用类而不是直接执行的语句进行探索,那么这也很容易,在传递给
gst
的文件中,以下内容将起到作用:

Object subclass: Hello [
    greet [
            'Hello, World' displayNl
    ]
].
greeting := Hello new.
greeting greet.
在命令行上传递给
gst
的文件将按顺序进行解析和执行,因此您可以将上面的列表拆分为两个单独的文件—一个用于声明/编译类,另一个用于实际运行它

一旦开发了程序,就可以在加载类后使用gst的
-S
标志来快照映像,这样就不会每次都有编译开销,只需运行startup语句即可

gst
还支持shebang,因此您可以将
#/如果您不想手动将其传递给gst,请在文件顶部的usr/bin/gst-f
。(有关更多信息,请参阅上的文档,包括如何不硬编码gst的位置)