Smalltalkについて学びながら、3つの異なるVMを見ました。彼らはSqueak/Pharo/Newspeakです。それらの違いは何ですか?
3 に答える
SqueakとPharoはSmalltalkの異なる方言ですが、Newspeakは異なる言語ですが、インスピレーションを得て、多くの点でSmalltalkとSelfに似ています。
SqueakとPharoについては、PharoはSqueakのフォークであるため、どちらも同じ種類の仮想マシンで実行され、同じVM命令セットとプリミティブのセットに依存します。
SqueakおよびPharo仮想マシンにはいくつかのバージョンがありますが、最も重要な2つの種類は、従来のsqueakVMと新しいjitベースのCog仮想マシンです。しかし、どちらも一般的に同じ命令セットを実行します。
sqeakおよびpharoVMにいる間、独自のVMをハックできることは興味深いことです。ソースが利用可能であり、Smalltalkサブセットで記述されています。また、変更を加えて独自のVMを構築できるツールセットがあります。マリアーノマルティネスペックからの素晴らしい一連の投稿があり、VMで遊ぶ方法を説明しています。紹介記事は次のとおりです。
http://marianopeck.wordpress.com/2011/03/31/journey-through-the-vm/
Smalltalkの仮想マシンは非常に基本的です。Smalltalkコードから直接参照される一連のプリミティブ命令が含まれています。これにより、実際のVMを簡単にプラグインできます。そのため、Squeakは仮想マシンの実験によく使用されます。
Pharoは、Squeakのルックアンドフィールがやや古くなっているため、Squeaks基本ライブラリを置き換えるプロジェクトです。Squeak VMを使用し、ほとんどの場合互換性がありますが、インターフェイスは完全に異なります。
SqueakのVM側には、バニラVMがあります。私の知る限り、それはSqueakプロジェクトの一部として始まり、現在も使用されています。
それからしばらく前に、VMの研究者であるEliot Mirandaは、Squeak用に最適化された新しいVMを開発していると発表しました。Cogはオープンソースであり、SqueakとPharoで使用できます。それはまだ活発に開発されていますが、基本的なVMよりも高速です。
ニュースピークはまったく別の動物です。これは、言語の唯一のプリミティブとして純粋なメッセージパッシングを使用する言語を作成するための実験です。これはSqueakVMに基づいていますが、実際にはSmalltalkではありません。詳細については、http://bracha.org/Site/Newspeak.htmlを参照してください。
これまでのところ、SqueakとPharoの両方が同じVMを共有しています。Newspeakには、SqueakVMに由来する独自の機能があります。