В чем разница между ANSI Smalltalk и Smalltalk-80? - PullRequest
9 голосов
/ 16 июня 2011

Я обнаружил, что нет упоминания о thisContext в спецификации ANSI Smalltalk (черновик).

Я предполагал, что ANSI Smalltalk является стандартизированным Smalltalk-80, поэтому я не могу понять, почему его там нет.В чем их разница?

1 Ответ

13 голосов
/ 16 июня 2011

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.

...