Smalltalk-80 относится к очень специфической вещи: версии Smalltalk, которая использовалась в Xerox Parc в 1980 году. Хотя существует множество Smalltalks, которые основаны либо в прямом смысле (Squeak и Pharo), либо идеологическиSense (Ambrai Smalltalk и GNU Smalltalk), в этой среде сегодня не существует Smalltalks, которые бы полностью соответствовали языку и виртуальной машине, описанным в этой книге.Даже Squeak, который, вероятно, является идеологически наиболее близким, имеет некоторые основные отклонения: Squeak имеет замыкания, Smalltalk-80 - нет;У Squeak есть Unicode, у Smalltalk-80 нет;Виртуальная машина Squeak поддерживает и использует именованные примитивы, Smalltalk-80 - нет;Squeak поддерживает некоторые байт-коды, которые не поддерживает Smalltalk-80;и т. д.
ANSI Smalltalk, как и ANSI Common Lisp, попытался определить стандарт, включающий общее подмножество функций Smalltalk в основных реализациях Smalltalk.Поскольку стандарт ANSI был написан в 1998 году, он должен был учитывать гораздо больше, чем просто первоначальная реализация.В частности, некоторым существующим в настоящее время крупным компаниям Smalltalks, таким как Smalltalk MT и VisualAge Smalltalk, не хватало полностью продолжения (и, как следствие, переменной thisContext
).Следовательно, эта особенность отсутствует в стандарте ANSI.
На практике эти различия носят академический характер.Вы беспокоитесь о thisContext
, но GNU Smalltalk имеет совершенно другой синтаксис, VisualWorks имеет пространства имен, Squeak имеет черты, Pharo не хватает MVC ... есть просто более насущные различия.Smalltalk-80 и проект ANSI Smalltalk - это больше, чем что-либо еще, на данный момент в жизни Smalltalk.