9

私が言語の学習に着手するときはいつでも、最初にその言語で書かれた実行可能ファイル (コンパイルされたプログラムまたはスクリプトである可能性があります) を作成し、実行すると「hello, world」と改行が stdout に出力されます。

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

GNU Smalltalk を 1 時間ほどいじり回しましたが、これを行う方法がわかりませんでした。

(hello world プログラムは、セッション内から次のように表現できることを知っています。

'hello, world' printNl

これは私の stdout 要件を満たしていません)

Smalltalk にはメインラインがないことは理解しています。ですから、それを実現するためには、どのようなボイラープレートが必要になるのか、非常に興味があります。繰り返しますが、ファイルは必ずしもコンパイルする必要はありませんが、演習の最終結果は、上記のセッションの抜粋になる smalltalk コードでなければなりません。

PS。はいはいはい、「イメージベースのプログラミング」の哲学を受け入れないことで、私が間違っていることを知っています。私は気にしない。イメージや IDE などを操作する方法を学ぶことに反対しているわけではありませんが、今はほとんど興味がありません。私が気にかけているのは、Smalltalk 言語そのものです。構文的にも、哲学的にも、タイポグラフィ的にも、かなり美しい。コマンドライン インタープリターとテキスト エディターからプログラミング言語を快適に学習できます。:)

4

1 に答える 1

12

GNU Smalltalk には定型文はほとんどありません。単一行を .st ファイルに入れて、それを実行することができますgst hello.st

直接実行されるステートメントの代わりにクラスを使用して調べたい場合は、それも簡単です。渡されたファイルの次のようにするgstとうまくいきます。

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

コマンドラインで渡されたファイルgstは解析され、順番に実行されるため、上記のリストを 2 つの個別のファイルに分割できます。1 つはクラスを宣言/コンパイルし、もう 1 つは実際に実行します。

プログラムを開発したら、-Sgst フラグを使用して、クラスをロードした後にイメージのスナップショットを作成できます。これにより、毎回コンパイルのオーバーヘッドが発生せず、代わりに起動ステートメントを実行できます。

gstシバンもサポートしているため、#! /usr/bin/gst -f手動で gst に渡したくない場合は、ファイルの先頭に置くことができます。(の場所をハードコーディングせずに実行する方法など、詳細については、呼び出しに関するドキュメントを参照してくださいgst)

于 2013-06-15T05:57:33.047 に答える