Перейти к основному содержимому

Squeak

Разработчику Архитектору

Squeak

См. также: Pharo · Morphic · История Smalltalk · Философия · Справочник — реализации · Первая программа на Pharo


Что такое Squeak?

Squeak — свободная реализация Smalltalk, выпущенная в 1996 году командой вокруг Дэна Ингаллса (Dan Ingalls) после работы в Apple и Disney. Это прямой наследник духа Smalltalk-80: образ (image), виртуальная машина, полная рефлексия, графика через Morphic. Официальный сайт: squeak.org.

Краткие определения:

  • Smalltalk-80 — эталонная система Xerox PARC (1983): язык + IDE + MVC/Morphic в одном image; см. историю.
  • Bootstrap — Squeak переписали на самом Smalltalk: сначала маленькое ядро на C, затем остальная система "выращена" внутри образа.
  • Etoys — детская среда визуального программирования поверх Squeak; предшественник идей Scratch.

Если Pharo — платформа для разработчиков и исследователей с ежегодными релизами, то Squeakобразовательная и историческая ветка: здесь родились Etoys и линия, приведшая к Scratch.

Для практикумов энциклопедии

Новый код лучше писать в Pharo. Squeak полезен для контекста: откуда взялся Morphic, почему Scratch похож на Smalltalk, как выглядел "настоящий" ST-80 в XXI веке.


История появления

После коммерциализации Smalltalk (ParcPlace, VisualWorks) часть исследователей хотела открытую, переносимую систему — в духе идеи Dynabook Алана Кэя: персональный компьютер как инструмент обучения, а не только офисная машина.

Хронология:

ГодСобытие
1996Первый публичный релиз Squeak
1998–2002Morphic как единый UI-слой вместо классических Views
2002Etoys — визуальные скрипты для детей
2007Scratch (MIT) — блочный язык, концептуально из Etoys
2008Форк Pharo от Squeak 4.0

Squeak показал, что Smalltalk-80 можно развивать вне корпораций — с открытым кодом VM и образом, который школа может скопировать на сотни ноутбуков.


Архитектура — image, VM и Morphic

Squeak использует ту же image-модель, что и Pharo:

┌─────────────────────────────────────┐
│ Squeak VM (байт-код + GC + JIT) │
├─────────────────────────────────────┤
│ .image — классы, объекты, окна │
│ .changes — журнал принятых методов │
└─────────────────────────────────────┘

Инструменты те же по именам, что в любом Smalltalk:

  • Workspace / Playground — выполнение выражений;
  • System Browser — классы и методы;
  • Debugger — стек и live-правки;
  • Transcript — текстовый вывод.

Графика — Morphic; в Squeak Morphic исторически "родной", без лишних прослоек. Подробнее о морфах — отдельная статья; шпаргалка — §12 справочника.

Разбор Hello World

Transcript show: 'Hello from Squeak'
  • Transcript — глобальный объект-окно лога (как в Pharo).
  • show: — унарное сообщение; аргумент 'Hello from Squeak' — объект класса String.
  • Точка с запятой в конце не обязательна, если выражение одно.

Синтаксис и семантика базового языка совпадают с Pharo; расходятся имена некоторых классов Morphic, пакеты и версия VM.


Etoys и образовательный слой

Etoys — среда внутри Squeak для детей и начинающих:

  • объекты-"игрушки" на экране (машинки, черепахи, рисунки);
  • скрипты вида "when I am clicked do …";
  • рисование, простая физика, совместная работа в классе.

Ученик не открывает Class Browser — он манипулирует объектами мышью и записывает поведение визуально. Под капотом всё равно Smalltalk: скрипт компилируется в методы.

Связь с индустрией:

  • Scratch упростил Etoys до цветных блоков и стал стандартом в школах по всему миру.
  • Croquet, Bots Inc — эксперименты с 3D и мультипользовательскими мирами на базе Squeak.

Для профессиональной разработки Etoys-слой обычно отключают; для педагогики и HCI Squeak+Etoys остаётся эталоном "компьютер как динамическая книга".


Scratch и линия Smalltalk → блоки

Scratch не является "Squeak с другим синтаксисом", но наследует архитектурные решения:

Идея в Smalltalk/SqueakКак выглядит в Scratch
Спрайт — объект с координатамиКостюм на сцене
Посылка сообщенийБлок "отправить …"
Блоки кода [ ]Склеенные блоки-скрипты
Stepping / таймер"повторять всегда"
Немедленный результат на экранеЗапуск по зелёному флагу

Понимание Squeak помогает ответить на вопрос ученика: откуда в Scratch "повторять всегда" — это упрощённый аналог startStepping и метода step в Morphic.


Squeak сегодня

Squeak поддерживается сообществом, но не выпускает ежегодные релизы как Pharo. Типичные сценарии:

СценарийПочему Squeak
Курс по истории ООП и GUIАутентичная линия ST-80
Урок с EtoysГотовый образ с плитками
Исследования HCIMorphic "как задумывал Ингаллс"
Архивный .image 2000-хСовместимость со старыми проектами

Скачивание: squeak.org/downloads. Стабильная ветка на момент написания — Squeak 6.0.


Squeak и Pharo — сравнение

SqueakPharo
ПроисхождениеOpen-source ST-80, 1996Форк Squeak 4, 2008
АудиторияШкола, музей, EtoysРазработчики, Moose, GT
РелизыРежеЕжегодно (Pharo N)
Git / TonelОграниченноIceberg
MorphicКлассический+ Spec2 для форм
Практикумы разделаЧастичный переносЦелевая платформа

Код из крестиков-ноликов или SmallPong часто запускается в Squeak после мелких правок (шрифты, имена классов кнопок). Для новых проектов — Pharo.


Другие родственники

  • Croquet — 3D и совместное моделирование на Squeak.
  • Newspeak — эксперимент с модулями (Gilad Bracha).
  • Pharo — основная среда раздела.
  • VisualWorks, VA Smalltalk — коммерческие линии; образ не совместим с Squeak, язык узнаваем; см. §10 справочника.

Когда выбирать Squeak

Выбирайте Squeak, если:

  • ведёте урок с Etoys или курс по истории GUI;
  • нужен оригинальный Morphic без форка Pharo;
  • поддерживаете legacy-проект на Squeak-образе.

Выбирайте Pharo, если:

  • пишете код по материалам энциклопедии;
  • нужны Metacello, Moose, GT, Iceberg;
  • важна активная экосистема и документация на pharo.org.

Установка

  1. Скачайте VM и .image с squeak.org/downloads.
  2. Запустите Squeak.app / squeak.exe с выбранным образом.
  3. Откройте Workspace или образ Etoys (если скачали Etoys edition).

Модель установки та же, что у Pharo: не компилятор, а VM + image. Пошаговый гайд с Launcher — первая программа на Pharo; шаги аналогичны.


Что дальше

МатериалЗачем
PharoОсновная среда для практики
MorphicUI, общий для Squeak и Pharo
История SmalltalkPARC, ST-80, влияние на Java и Ruby
Крестики-ноликиПервый Morphic-практикум в Pharo