10

thisContextANSI Smalltalk 仕様 (ドラフト) に言及がないことを発見しました。

私は ANSI Smalltalk を標準化された Smalltalk-80 として想定していたので、なぜそこにないのか理解できません。それらの違いは何ですか?

4

1 に答える 1

14

Smalltalk-80 は、1980 年に Xerox Parc で使用されていた Smalltalk のバージョンを指します。直接的な意味 (Squeak と Pharo) またはイデオロギー的な意味 (Ambrai) に基づいた Smalltalk は多数ありますが、 Smalltalk および GNU Smalltalk など)、その環境では、その本で説明されている言語と仮想マシンに実際に完全に準拠している Smalltalk は現在のところありません。おそらくイデオロギー的に最も近い Squeak でさえ、いくつかの大きな違いがあります。Squeak にはクロージャがありますが、Smalltalk-80 にはありません。Squeak には Unicode がありますが、Smalltalk-80 にはありません。Squeak の VM は名前付きプリミティブをサポートして使用しますが、Smalltalk-80 はサポートしていません。Squeak は、Smalltalk-80 がサポートしていないいくつかのバイトコードをサポートしています。等々。

ANSI Common Lisp と同様に、ANSI Smalltalk は、主要な Smalltalk 実装全体で Smalltalk 機能の共通サブセットを組み込む標準を定義しようとしました。ANSI 標準は 1998 年に作成されて以来、元の実装だけでなく、はるかに多くのことを考慮する必要がありました。特に、Smalltalk MT や VisualAge Smalltalk など、当時のいくつかの主要な Smalltalk では、継続がまったくありませんでした (thisContext結果として変数もありました)。したがって、この機能は ANSI 標準にはありません。

実際には、これらの違いはやや学術的なものです。あなたは心配していますthisContextが、GNU Smalltalk には根本的に異なる構文があり、VisualWorks には名前空間があり、Squeak には Traits があり、Pharo には MVC がありません...もっと差し迫った違いがあります。Smalltalk-80 と ANSI Smalltalk ドラフトはどちらも、Smalltalk のこの時点で何よりもガイドラインです。

于 2011-06-16T19:55:22.850 に答える