【问题标题】:Compiling 'hello, world' GNU smalltalk编译 'hello, world' GNU smalltalk
【发布时间】:2013-06-15 02:56:56
【问题描述】:

每当我开始学习一门语言时,我做的第一件事就是生成一个用该语言编写的可执行文件(它可以是编译程序或脚本),运行时会打印“你好,世界”和 stdout 的换行符:

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

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

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

'hello, world' printNl

这不符合我的标准输出要求)

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

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

【问题讨论】:

    标签: compilation stdout smalltalk gnu-smalltalk


    【解决方案1】:

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

    如果您想探索使用类而不是直接执行语句,那也很容易,传递给gst 的文件中的以下内容就可以解决问题:

    Object subclass: Hello [
        greet [
                'Hello, World' displayNl
        ]
    ].
    greeting := Hello new.
    greeting greet.
    

    在命令行上传递给gst 的文件会按顺序解析和执行,因此您可以将上面的清单拆分为两个单独的文件 - 一个用于声明/编译类,第二个用于实际运行它。

    一旦你开发了你的程序,你可以使用-S标志来gst在加载你的类之后对图像进行快照,这样你就没有每次编译开销,并且可以只运行你的启动语句而是。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-01-20
      • 1970-01-01
      • 2014-07-19
      • 2013-04-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多