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–2002 | Morphic как единый UI-слой вместо классических Views |
| 2002 | Etoys — визуальные скрипты для детей |
| 2007 | Scratch (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 | Готовый образ с плитками |
| Исследования HCI | Morphic "как задумывал Ингаллс" |
Архивный .image 2000-х | Совместимость со старыми проектами |
Скачивание: squeak.org/downloads. Стабильная ветка на момент написания — Squeak 6.0.
Squeak и Pharo — сравнение
| Squeak | Pharo | |
|---|---|---|
| Происхождение | 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.
Установка
- Скачайте VM и
.imageс squeak.org/downloads. - Запустите
Squeak.app/squeak.exeс выбранным образом. - Откройте Workspace или образ Etoys (если скачали Etoys edition).
Модель установки та же, что у Pharo: не компилятор, а VM + image. Пошаговый гайд с Launcher — первая программа на Pharo; шаги аналогичны.
Что дальше
| Материал | Зачем |
|---|---|
| Pharo | Основная среда для практики |
| Morphic | UI, общий для Squeak и Pharo |
| История Smalltalk | PARC, ST-80, влияние на Java и Ruby |
| Крестики-нолики | Первый Morphic-практикум в Pharo |