每当我着手学习某种语言时,我要做的第一件事就是生成一个用该语言编写的可执行文件(它可以是编译程序或脚本),该文件在运行时会向标准输出输出“hello,world”和换行符:
theironknuckle@beastbook:~/Code$ ./hello
hello, world
在与GNU Smalltalk进行了大约一个小时的摸索之后,我还没有发现如何做到这一点。
(我知道,您可以在一个 session 中将hello world程序表示为
'hello, world' printNl
这不符合我的标准输出要求)
我了解Smalltalk中没有主线。所以我对实现它可能需要什么样的样板很感兴趣。同样,不一定必须编译该文件,但练习的最终结果必须是smalltalk代码,该代码会导致上述 session 提取。
PS。是的,我知道我不接受“基于图像的编程”理念而做错了。我不在乎我不反对学习如何使用图像和IDE以及其他所有东西,但是我现在的兴趣不大。我关心的是Smalltalk语言本身。从语法上,哲学上和打印上来说,它是非常美丽的。我从命令行解释器和文本编辑器学习编程语言感到很自在。 :)
最佳答案
在GNU Smalltalk中,几乎没有样板。
您可以将单行放在.st文件中,然后使用gst hello.st
运行
如果要使用类而不是直接执行的语句进行探索,那也很容易,传递给gst
的文件中的以下内容将达到目的:
Object subclass: Hello [
greet [
'Hello, World' displayNl
]
].
greeting := Hello new.
greeting greet.
命令行中传递给
gst
的文件将按顺序进行解析和执行,因此您可以将上面的 list 分成两个单独的文件-一个用于声明/编译该类,另一个用于实际运行它。程序开发完成后,可以在加载类后使用
-S
标志gst对镜像进行快照,这样就不必每次都进行编译,而只需运行启动语句即可。gst
还具有shebang支持,因此,如果您不想将#! /usr/bin/gst -f
手动传递给gst,则可以将gst
放在文件的顶部。 (有关更多信息,请参阅invocation上的文档,包括如何在不对ojit_code的位置进行硬编码的情况下进行操作)关于compilation - 编译 'hello, world' GNU smalltalk,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17119786/