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