SK8 (язык программирования)


SK8 (произносится как «скейт») была средой разработки мультимедиа , разработанной в группе передовых технологий Apple с 1988 по 1997 год. Она была описана как «HyperCard на стероидах», [1] сочетая версию языка программирования HyperTalk от HyperCard с современным объектом . ориентированная прикладная платформа. Цель проекта состояла в том, чтобы позволить творческим дизайнерам создавать сложные автономные приложения. Основные компоненты SK8 включали систему объектов, язык программирования , графические библиотеки и библиотеки компонентов, а также Project Builder , интегрированную среду разработки .

На протяжении большей части своей истории SK8 оставался исследовательским проектом и вдохновлял ряд других проектов Apple, таких как AppleScript , а также использовался в качестве платформы для прототипирования. Хотя примерно в 1993 году подразделение продуктов Apple поручило команде выпустить среду выполнения SK8, ограничение возможностей Mac, а также переход на чип PowerPC сделали такой крупный проект невыполнимым. Поскольку основная часть первоначального видения была завершена, а легкий путь к выпуску в составе MacOS был непростым, активная разработка закончилась в 1996–1997 годах, а исходный код Macintosh Common Lisp для всего проекта был опубликован для публики в 1997 году.

Проект SK8 был создан Рубеном Клейманом, когда он присоединился к Apple в 1987 году. Он пришел в Apple, чтобы разработать гибкий объектно-ориентированный пользовательский интерфейс и среду разработки мультимедиа. [2] Название проекта произошло от его интереса к скейтбордингу . [3] По совпадению, в это время готовилась к выпуску HyperCard с ее интерфейсом прямого управления и языком сценариев. Хотя HyperCard отлично подходила для простых приложений, в ней использовалась модель ограниченного взаимодействия — «стеки» карт, — что ограничивало ее потенциальную применимость. SK8 попыталась распространить эти преимущества на более широкую роль программирования. [2]

Ранняя работа над тем, что впоследствии станет SK8, была сосредоточена на инфраструктуре, а не на визуальном программировании. Первой попыткой Клеймана была динамическая объектная система на основе прототипов , MacFrames, система фреймов /объектов с подключаемыми модулями для механизмов логического вывода. Через настройки предпочтений MacFrames использовался для эмуляции большого количества объектных систем, включая KEE от IntelliCorp . Это исследование, совместно с пользователями, разрабатывающими реальные приложения и прототипы в Apple, привело к созданию объектной модели, используемой в SK8. [2] MacFrames был разработан в Coral Lisp, который был приобретен Apple и стал Macintosh Common Lisp .

В Macintosh в то время не было универсальной системы межпроцессного взаимодействия (IPC). Клейман создал инициализацию IPC для Mac, чтобы позволить MacFrames взаимодействовать с другими процессами, в частности, с HyperCard. Это позволило использовать HyperCard в качестве интерфейса визуального программирования для MacFrames. Другой целью MacFrames было встроить распределенную обработку прямо в объектную систему. Вместо использования RPC API можно просто установить свойство объекта с желаемым значением и выполнить обратный вызов для результатов. Группа контроля качества Apple использовала MacFrames для создания автоматизированной системы тестирования методом «черного ящика».

SK8 Project Builder был создан, чтобы предоставить богатый набор инструментов прямого манипулирования, включая инструменты для создания интерактивных элементов управления и общего, но неинвазивного склеивания. [2] Цель конструктора состояла в том, чтобы предоставить интерфейс визуального/прямого манипулирования для создания визуальных сред разработки. То есть система могла использоваться для разработки совершенно разных сред разработки, заточенных под разные задачи. Первая версия графической системы SK8 была разработана для расширения HyperCard, позволяя картам иметь несколько слоев, а не один «фоновый» шаблон.


В Project Builder SK8 использовались настраиваемые окна и виджеты, и он не был похож ни на одну другую IDE.