编译'hello,world'GNU smalltalk

The*_*kle 8 smalltalk compilation stdout gnu-smalltalk

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

theironknuckle@beastbook:~/Code$ ./hello
hello, world
Run Code Online (Sandbox Code Playgroud)

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

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

'hello, world' printNl
Run Code Online (Sandbox Code Playgroud)

这不符合我的标准要求)

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

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

Stu*_*ing 12

在GNU Smalltalk中,几乎没有样板.您可以将您的单行放在.st文件中,然后运行它gst hello.st

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

Object subclass: Hello [
    greet [
            'Hello, World' displayNl
    ]
].
greeting := Hello new.
greeting greet.
Run Code Online (Sandbox Code Playgroud)

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

一旦开发了程序,就可以-S在加载类后使用gst标志对图像进行快照,这样每次都不会产生编译开销,而只需运行启动语句即可.

gst还有shebang支持,所以#! /usr/bin/gst -f如果你不想手动将它传递给gst ,你可以放在文件的顶部.(有关更多内容,请参阅有关调用的文档,包括如何在不对其进行硬编码的情况下执行此操作gst)