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

Glamorous Toolkit

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

Glamorous Toolkit

См. также: Pharo · Morphic · История — Moose и GT · ООП в Smalltalk · Справочник §20 · gtoolkit.com


Что такое Glamorous Toolkit?

Glamorous Toolkit (GT) — среда moldable development ("формуемой разработки") для Pharo. Это не замена языка, а надстройка над образом: набор инструментов, которые можно перестраивать под предметную область, а не только смотреть универсальный список методов в Browser.

Определения:

  • Moldable development — подход, при котором инструмент подстраивают под данные, а не данные под инструмент. JSON, git-log, AST, профилировка — у каждого типа могут быть свои представления (таблица, граф, timeline).
  • View (представление) — Smalltalk-метод, строящий UI для конкретного класса объектов; вкладка в инспекторе.
  • Lepiter — движок живых документов: текст + исполняемые snippets + встроенные views.
  • feenk — компания и сообщество вокруг GT (feenk.com); открытый код, лицензия MIT.

GT не заменяет Pharo: обычно это отдельный дистрибутив "Glamorous Toolkit" или загрузка большого пакета в существующий Pharo-образ.

Не путать с Morphic-практикумами

Крестики-нолики, SmallPong и SmallDesktop используют классический Morphic в обычном Pharo. GT для них не обязателен.


Moldable development — суть подхода

Классическая IDE показывает один и тот же System Browser для любого кода: дерево классов, список методов, текст. Moldable подход (Андрей Реге, Оскар Ниерстраз, команда feenk) добавляет правило:

Удобное представление данных — часть задачи разработки, а не "отдельный скрипт в Excel".

Четыре опоры:

  1. Domain (предмет) — что вы изучаете (логи, API, Pharo-пакет, CSV).
  2. View — как это показать (таблица ошибок, граф вызовов, карта классов).
  3. Snippet — исполняемый фрагмент в документе; результат сразу inspect.
  4. Document (Lepiter) — narrative + snippets + views; замена статичному Confluence для исследования.

Пример мышления: вместо "открой .log в Notepad" — "создай view, который парсит строки уровня ERROR и рисует timeline за последний час" — за минуты, в той же image, с сохранением в Git.

Сравнение с философией Smalltalk: GT доводит идею "IDE = программа" до настраиваемых инструментов под каждый тип данных.


Основные элементы GT

ЭлементНазначение
GtInspectorИнспектор с несколькими views на один объект
GtCoderРедактор кода, связанный с документами и контекстом
LepiterЖивые документы (разметка + snippets + embed)
GtPagerНавигация "стопкой" карточек; контекст не теряется
SpotterБыстный поиск классов, методов, файлов, Lepiter-страниц
RemoteПодключение к другим образам / headless Pharo

View объявляют методом с pragma <gtView>. GT находит все такие методы для класса объекта и показывает вкладки:

gtViewProcessesFor: aView
<gtView>
^ aView list
title: 'Processes';
items: [ Processor activeProcess class allInstances ];
itemText: [ :each | each printString ]

Разбор:

ЧастьСмысл
gtViewProcessesFor: aViewИмя по соглашению gtView…For:; аргумент — строитель представления
<gtView>Pragma — метаданные метода; GT сканирует их при inspect
aView listFluent API GT: построить список
title:Заголовок вкладки
items: [ … ]Блок, возвращающий коллекцию объектов
`itemText: [ :each… ]`

Имена API уточняйте по версии GT — концепция стабильна: один объект → много вкладок-представлений.


GT и классические инструменты Pharo

Classic PharoGlamorous Toolkit
BrowserNautilus / OmniBrowserGtCoder + контекст документа
InspectorИерархия полейМного custom views
ДокументацияКомментарии к классам, внешний wikiLepiter внутри image
ФокусНаписание приложенийПонимание систем и данных
Старт обученияПервая программаПосле базы Pharo и ООП

Когда GT оправдан:

  • ревью чужого Pharo-кода или большого legacy-модуля;
  • разбор JSON, логов, профилей;
  • техническое письмо с живыми примерами (Lepiter-учебник);
  • работа с Moose (метрики, dependency graphs).

Когда GT не нужен:

  • первый месяц Smalltalk;
  • Morphic-практикумы (TTT, SmallPong, SmallDesktop);
  • простая учебная игра без анализа code base.

Связь с Moose

Moose — платформа анализа программ: метamodels, метрики, графы зависимостей, визуализация legacy. GT и Moose родственны по духу — оба из экосистемы Software Composition Group (Университет Берн).

MooseGT
Метamodels, метрики, queryУниверсальная оболочка просмотра
Фокус на software analysisЛюбые данные + custom views
Часто используют вместеMoose даёт модель, GT — инспектор и документы

В истории Smalltalk оба названы примером "инструментов для создания инструментов" в Pharo.


Установка

Вариант A — дистрибутив GT (рекомендуется для знакомства)

  1. gtoolkit.com/download
  2. Скачайте образ Glamorous Toolkit для вашей ОС.
  3. Запустите — внутри Pharo + GT-пакеты.

Вариант B — загрузка в существующий Pharo

Скрипт Metacello на сайте feenk; версия GT должна совпадать с версией Pharo:

Metacello new
baseline: 'GToolkit';
repository: 'github://feenkcom/gtoolkit:main';
load

Перед загрузкой — резервная копия .image; GT — крупный стек, откат без копии долгий.


Lepiter — живые документы

Lepiter — формат страниц в GT. Отличие от Markdown в репозитории:

  • страница живая — snippets выполняются в image;
  • embedded views — граф, таблица, карта классов в теле текста;
  • страницы версионируются с кодом (Git + Tonel), как и обычные классы Pharo.

Типичный workflow исследователя:

  1. Создать Lepiter-страницу "Разбор пакета MyApp".
  2. Snippet: PackageOrganizer default packageNamed: 'MyApp'.
  3. Inspect результат → добавить view "Зависимости", "Длинные методы".
  4. Поделиться страницей — коллега открывает тот же интерактив в GT.

Это ближе к live coding, чем к статичной wiki: документ не отстаёт от кода, если snippets обновляют.


Примеры применения

ЗадачаКак помогает GT
Ревью Pharo-кодаViews по классам, senders, implementors, тестам
JSON / API-ответCustom table/tree view
Обучение командыLepiter-учебник со snippets
DevOps / логиПарсинг + timeline view
Доменное моделированиеДокумент + объекты + inspect

Для рефакторинга и шаблонов в классическом смысле по-прежнему полезны Browser и рекомендации по стилю; GT дополняет их исследованием и визуализацией.


GT и Morphic

GT рисует UI инструментов через собственный стек (Bloc / Skia в новых версиях). Это не учебный Morphic из практикумов раздела.

Classic Pharo WorldGT
World, Morph, halosGtInspector, GtPager, Lepiter
SmallDesktopНе требует GT
Отладка Morphic-игрОтдельный Pharo-образ без GT

Если вы проходите SmallPong и не видите World — возможно, открыт GT-дистрибутив; для Morphic-уроков используйте чистый Pharo с pharo.org.


Ограничения

  • Размер — полный GT заметно тяжелее минимального Pharo.
  • Версии — таблица совместимости GT ↔ Pharo на сайте feenk.
  • Рынок — ниша; сильнее в consulting и R&D, чем в mass hiring.
  • Порог — moldable thinking нужно привыкнуть после классического Browser.
  • Игры и GUI-курсы — GT не заменяет Morphic и не связан с Raylib.

Когда изучать GT

СитуацияРекомендация
Первый месяц SmalltalkPharo, 11.md, Morphic
Анализ большой code baseGT + Moose
Техписательство / R&DLepiter
Учебная игра на MorphicGT не нужен
Анализ логов productionGT после базы Pharo

Ресурсы


Что дальше

ШагДействие
1Закрыть базовый маршрут: программаООП → один Morphic-практикум
2Установить GT, пройти встроенный GT Tour
3Lepiter-страница: inspect TTTGame из крестиков-ноликов, view "Состояние поля"
4При интересе к анализу кода — связка GT + Moose