Кратко
- Книга Adele Goldberg и David Robson 1983 года определила интерфейс между Virtual Image Smalltalk-80 и Virtual Machine для конкретного компьютера: объектную память, байткоды, контексты исполнения, поиск методов и примитивы.
- Goldberg заставила спецификацию отвечать перед реальными реализациями. Apple, DEC, Hewlett-Packard и Tektronix создавали переносы, сообщали Xerox PARC о расхождениях и сверяли поведение с эталонными трассами.
- Так была доказана переносимость в заданной границе. Равенство пропускной способности, пауз, метрик шрифтов, окон, ввода, файлов и интерактивного качества из этого не следовало.
Спецификация, которая должна была загрузиться
Smalltalk-80 был не просто языком, который можно перенести вместе с грамматикой. Это была постоянная рабочая среда: классы, компилятор, браузер, отладчик, графика и интерфейс существовали совместно как объекты в сохранённом образе. Перенести систему означало оживить весь этот мир на другом компьютере.
В Smalltalk-80: The Language and Its Implementation Adele Goldberg и David Robson зафиксировали разделение. Virtual Image содержал системные объекты и инструменты. Под ним специализированная для хоста Virtual Machine предоставляла интерпретатор, объектную память и примитивы, связывавшие образ с вычислениями, хранилищем, экраном, указателем и файлами. Исходные методы компилировались в восьмибитные байткоды, стековый интерпретатор исполнял их, а контексты представляли активные вычисления.
Условие переносимости было узким и сильным: правильно построить небольшой зависящий от оборудования слой и загрузить общий образ. Blue Book не заменял программу текстом. Он описывал достаточно наблюдаемого поведения, чтобы внешняя команда могла восстановить нижний слой без неявных знаний PARC.
Goldberg добавила важную дисциплину: достаточность документа должны были проверять люди, которым требовалось запустить его на иных машинах.
Внешние команды стали измерительным прибором
В устной истории 2010 года для Computer History Museum Goldberg рассказала, как сначала получила у Xerox разрешение на публикацию. При поддержке Bert Sutherland она привлекла Tektronix, Hewlett-Packard, DEC и Apple. Участник должен был соединить внутреннюю программную команду с командой аппаратуры. Вопрос состоял не в симпатии к языку, а в том, какие свойства оборудования меняют производительность Smalltalk.
Глава в Smalltalk-80: Bits of History, Words of Advice описывает процедуру подробнее. Приглашение получили шесть компаний, четыре дошли до реализации. Они согласились делиться найденными ошибками и советами. Xerox передавала новые образы, материалы об объектных указателях, пространстве объектов, контекстах, скомпилированных методах и классах, а также консультировала, когда документ расходился с работающей системой.
Каждый перенос проверял текст. Допущение, незаметное на Alto или Dorado, проявлялось, когда инженеры DEC, HP, Tektronix или Apple не могли его воспроизвести. Различие оборудования было не шумом, а способом отделить переносимое обязательство от местной случайности.
Компании не утверждали готовый текст. Распределение примитивов менялось, образ рос, а первая конференция реализаторов обсуждала подсчёт ссылок, сборку мусора и кэши методов. Goldberg пишет, что почти весь ранний вариант книги был отброшен и переписан. Сохранилась формальная спецификация VM, уже отлаженная внешними реализациями.
Трассы определяли смысл соответствия
Похожего экрана было недостаточно. Xerox раздавала трассы с разной детализацией. Самая подробная показывала обращения к памяти, выделение, байткоды, отправку сообщений, возвраты и вызовы примитивов. Более длинные трассы опускали часть событий. Новая VM могла сравнить фактическую последовательность с ожидаемой.
Blue Book различал в объектной памяти доступ к указателям, словам и байтам. Он определял, как интерпретатор находит класс и метод, создаёт контекст, ведёт стек, обрабатывает неудачный поиск и отправляет doesNotUnderstand:. Байткоды делились на загрузку, запись, отправку, возврат и переход. Примитивы охватывали арифметику, коллекции, память, управление, ввод-вывод и системные функции.
Графика особенно ясно показывала шов. Значительная часть BitBlt, текста и композиции находилась в объектах образа. Но курсор, клавиатура, растровый дисплей и файл встречались с физической машиной. Примитивы пересекали эту границу. Разные хосты могли выполнить один запрос образа другими контроллерами, организацией памяти или инструкциями.
Критерий успеха был операционным: суметь «прочитать и принять» Virtual Image и воспроизвести ожидаемое поведение. Когда успешные реализации загрузили четвёртый образ без изменения своих VM, это доказало стабильность интерфейса. Оно не доказало одинаковость компьютеров.
Совместимость заканчивалась раньше одинакового опыта
Goldberg отделяет принятие образа от более субъективной оценки — реальной производительности на оборудовании каждой компании. Общий образ создаёт знакомство: существуют те же классы, компилируются те же методы, открываются похожие браузеры. Однако впечатление зависит от всего под границей и вокруг неё.
Поиск методов может использовать другой кэш. Память можно освобождать подсчётом ссылок, трассировкой или гибридом. Примитив может быть микрокодом, ассемблером или медленной функцией хоста. Планирование и опрос ввода меняют задержку. Геометрия экрана, расположение bitmap, шрифты, курсор и файловые службы меняют представление. Две корректные VM способны сохранить смысл объектов и давать разные паузы и скорость перерисовки.
Даже набор символов показал компромисс. Goldberg вспоминала, что участникам пришлось выбрать стандартный ASCII, потому что не все контролировали шрифты. Переносимость расширила число машин и одновременно сузила этот слой выражения до надёжного общего минимума.
Blue Book прямо признавал, что оборудование того времени не поддерживало все интерактивные цели. Договор мог определить смысл отправки сообщения или чтения объекта. Он не мог заставить слабый процессор ощущаться как Dorado, увеличить экран или убрать каждую паузу сборщика.
Поэтому свидетельство совместимости действует на измеренном уровне. Успех образа и байткодовой трассы подтверждает договор Image/VM. Он не подтверждает одинаковость времени, шрифтов, окон, периферии или полного пользовательского опыта.
Публикация состояла из нескольких частей
Специальный номер BYTE в августе 1981 года дал публичное введение. Книга Goldberg и Robson 1983 года связала язык и VM. Smalltalk-80: The Interactive Programming Environment 1984 года описала работу внутри среды. Glenn Krasner редактировал том об опыте реализации.
Goldberg и Robson вместе организовали книгу о языке. Goldberg вспоминала, как она и Dan Ingalls выносили спорные вопросы на обсуждение и принимали решения, а Robson выслушивал возражения как посредник. Ingalls позднее указал, что большую часть эталонного интерпретатора сделал Robson. Текст, исполнимая модель и коллективное управление должны были сходиться.
Линия не принадлежит одному изобретателю. Simula и Sketchpad повлияли на Alan Kay; Kay сформулировал ориентированное на сообщения персональное вычисление. Dan Ingalls создавал и развивал интерпретаторы и VM. Diana Merry работала над текстовым отображением и редактором смешанных страниц. Ted Kaehler внёс вклад в графику и позднее в память. Larry Tesler работал над Notetaker и средой. David Robson придал точность книге и эталонному интерпретатору. Большая команда PARC и внешние переносчики сделали договор исполнимым.
Роль Goldberg в этой сети становится точнее: получить разрешение, соединить лабораторию с сообществом реализаций, вернуть аппаратные наблюдения в документ, участвовать в решениях и авторстве, довести материал до открытой проверяемой формы.
Договор сохранился, потому что механизм мог меняться
Одни Smalltalk-системы происходили от лицензированных образов, другие были написаны по документации. В Apple Ingalls приспособил интерфейс к другой мыши и дисплеям; более быстрый CPU и большой экран резко изменили ощущения, не разорвав концептуальную связь.
Squeak начал с опубликованного эталонного интерпретатора и APDA-образа. Затем команда заменила таблицу объектов прямыми указателями, ввела поколенческую сборку мусора и стала генерировать C из ограниченного Smalltalk. Ted Kaehler и Ingalls переделали память, John Maloney написал транслятор, Scott Wallace изменил файловый доступ. Механика существенно изменилась, полезная преемственность осталась.
Хороший переносимый договор защищает шов, а не каждый исторический механизм. Он позволяет менять нижний слой и даёт тест, если изменение ломает верхний. Smalltalk Zoo Computer History Museum сегодня показывает это разнообразие. Blue Book позволил Smalltalk путешествовать, потому что отделил поведение, обязанное пересечь границу, от решений, которым разрешено остаться местными.
Источники
- Устная история Adele Goldberg, Computer History Museum, 2010.
- Adele Goldberg и David Robson, Smalltalk-80: The Language and Its Implementation, 1983.
- Adele Goldberg и David Robson (ред.), Smalltalk-80: Bits of History, Words of Advice, 1983.
- Adele Goldberg, Smalltalk-80: The Interactive Programming Environment, 1984.
- Daniel H. H. Ingalls, «The Evolution of Smalltalk: From Smalltalk-72 through Squeak», 2020.
- Alan C. Kay, «The Early History of Smalltalk», 1993.
- Специальный выпуск BYTE о Smalltalk, август 1981 года.
- Smalltalk Zoo Computer History Museum.
Обзор для участников
Подробный контекст профиля
Войдите с подходящим уровнем подписки, чтобы открыть полный обзор и примечания к источникам.
Только для Стратегического сообщества
Стратегическое сообщество
Открыто всем читателям. Вступите и войдите, чтобы открыть обзоры профилей.
Вступить в Стратегическое сообществоТолько для Альянса лидеров
Альянс лидеров
Для проверенных владельцев IP-активов и руководителей. Войдите, чтобы открыть обзоры Альянса.
Вступить в Альянс лидеров
