编译 – 编译’hello,world’GNU smalltalk

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

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

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

(我知道你好世界节目可以在会话中表达为

'hello, world' printNl

这不符合我的标准要求)

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

PS. yesyesyes我知道,由于不接受“基于图像的编程”哲学,我做错了.我不在乎.我并不反对学习如何使用图像和IDE以及所有这些,但我现在对它的兴趣微乎其微.我关心的是Smalltalk语言本身.在语法上,哲学上和印刷上它是相当美丽的.从命令行解释器和文本编辑器学习编程语言我感觉很舒服. 🙂

最佳答案
在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. (有关更多内容,请参阅有关invocation的文档,包括如何在不对gst的位置进行硬编码的情况下执行此操作)

转载注明原文:编译 – 编译’hello,world’GNU smalltalk - 代码日志