私はあなたの質問に答えようとします (ここにいる他の Smalltalker が詳細を提供してくれるはずです):
- これは、任意の Smalltalk VM でイメージを実行できるようです。これは可能ですか?たとえば、任意の Smalltalk VM から Seaside を実行できますか?
Smalltalk には方言がたくさんあります。つまり、Image+Vm の組み合わせはたくさんあります。それらのいくつかは、 Pharo、Squeak、VisualWorks、Dolphin、GNU Smalltalk、Amber、Gemstoneです (そして、私は確かにいくつか欠けています)。ただし、プリミティブやメモリ管理などは各 VM によって定義されるため、各イメージは特定の VM で実行されます。実際のところ、Smalltalk のフレーバーによっては、メジャー リリース間でもイメージに互換性がない場合があります。
そうは言っても、Seaside は特定の Web フレームワークであり、さまざまな Smalltalk フレーバーに移植されています。そのため、ある St (Pharo など) で Seaside ベースのアプリケーションを作成し、コードをエクスポートして別の St (Gemstone など) にインポートすることができます。
これは、すべての Smalltalk VM に完全な互換性があるようです。少なくとも一連の機能と実行中のソースコードで。これは本当ですか?
はい、ほとんどの Smalltalk で基本的な概念は同じです。フレーバーの互換性を維持したい場合は、ANSI Smalltalk 仕様に固執するようにしてください。そうすれば、方言を越えてコードを移動することができます (多少の頭痛はありますが :))。ただし、ほとんどの場合、特定のものを使用するため、これは通常のことではないことに注意してください (おそらく、Squeak/Pharo <=> Gemstone の組み合わせが最も一般的であり、私の知る限り、非常にうまく機能します)。
ベアボーン VM で独自のイメージを構築することはできますか? 実用的ではありませんが、学習には適しているはずです。
前に言ったように、そのために気をつけなければならないことが画像の中にたくさんあります。したがって、技術的には可能ですが、実際には難しいです。Mariano による「Journey through the Virtual Machine」というタイトルの一連のブログ投稿があり、興味深いと思います。また、私の知る限り、Tim Buddは学習ソースとしてLittle Smalltalkを作成しました (引用を見つける必要があります :( )。独自の Smalltalk VM を構築して、その動作を学習する例は無数にあります。これは大変な作業ですが、間違いなく多くのことを学ぶことができます (イメージの構築を依頼されたことは承知していますが、 VM を構築することもできます) ああ、このリンクにも興味があるかもしれません。
HTH