AppleInsider.ru
X
О проекте Реклама
Чат
с читателями
Присоединяйтесь
в Телеграме

Анатомия и физиология HyperCard

Не уверен, что кого-то интересует, как был устроен HyperCard. Но не написать об этом не могу. Что-то из серии “Вы хотите поговорить об этом?”.

Продолжение, предыдущая часть здесь, начало тут.

Концептуальная основа HyperCard – стопка карточек, с графикой и текстом, с элементами управления и… связь между мирами, разделенными сотнями световых лет.

На самом деле HyperCard намного интереснее, чем звезды и межзвездные пространства. О чем Сириусу говорить с Бетельгейзе?

Элементы “машинки” HyperCard

В чем все-таки секрет притягательной силы HyperCard, ведь им “заболело” множество людей. Что-то в нем было такое, психоделическое и трансцендентное?

Попробуем разобраться. Поверим алгеброй гармонию, так сказать.

HyperCard – это “конструктор для создания приложений”. Такое виртуальное лего. Состоит он из очень небольшого набора тиражируемых пользователем элементов (это стэки, фоны, карточки, поля и кнопки) и небольшого же набора инструментов (несколько специальных стэков, экран Recent и Message Box).

Тиражируемые элементы

У каждого тиражируемого элемента – немаленький набор свойств, настраивая которые его можно было превратить если и не во что угодно, то близко к этому. Каждый тип базовых элементов играл свою, строго определенную для него роль – но в рамках его роли с ним можно было творить все, что душе угодно.

Стэк (stack) – это одновременно единица файловой системы, документ HyperCard, файл с типом ‘STAK’ и кодом создателя ‘WILD’, и область обитания всех остальных тиражируемых элементов. Вне стэка они не существовали. У HyperCard тип был, естественно, ‘APPL’, а код создателя, которым он и был – такой же, как у повелеваемых им документов, ‘WILD’.

Возникает вопрос: а почему не ‘HYPE’? Что за дикость (“wild” по английски “дикий”)? Ответ на этот вопрос — в конце статьи.

Стэки бывали очень разными по размеру и полезности. Все приложения, создаваемые в HyperCard (стэквер), были именно стэками. В их числе — такие как Myst компании Broderbønd, Focal Point и Business Class Дэнни Гудмана, прообраз wiki от Говарда Каннингема – к 2004 году существовали сотни тысяч более чем приличных программ, которые были всего лишь стэками.

В HyperCard 2.2 появилась возможность превращения стэка в автономное приложение, что еще больше приблизило разработку стэков к промышленному программированию, правда, лишив всех остальных возможности разобрать чужую программу и посмотреть, в деталях, как она устроена. Чем-то всегда приходится жертвовать.

Фон (background) – это объединение нескольких карточек (любого их числа) и, кроме того, комбинация графики, полей и кнопок, повторяющихся на всех карточках входящих в этот фон. Для редактирования фона в HyperCard был предусмотрен специальный режим, а для ясности он еще и выделялся прерывистой рамкой вокруг планки меню, похожей на кант погон вольноопределяющихся в российской императорской армии.

В стэке обязательно был определен хотя бы один фон, он мог быть пустым (без графики и без принадлежащих ему кнопок и полей). Фонов могло быть сколько угодно.

Карточка (card) – последний из тиражируемых элементов, состоящий из других элементов. Что-то похожее по смыслу на экраны в мобильных операционных системах. В карточке объединялись элементы фона, к которому она принадлежит, и её собственные. И, кроме того, то, что видел на экране своего компьютера пользователь HyperCard, за очень редким исключением (экран Recent, например), было одной из карточек.

Другие элементы в карточке – это поля и кнопки.

Поле (field) – единственный способ существования редактируемого текста в HyperCard. Все остальные тексты (графика) в лучшем случае могли редактироваться только в процессе их создания. Поля состояли из теоретически неограниченного числа строк. На практике в классической системе Mac’ов стандартная (и очень качественная) структура для хранения и обработки текста ограничивала его размер 32-мя килобайтами.

В программах, которые должны были иметь дело с бóльшими текстами, это было одной из существенных проблем, которая успешно решалась (но способы её решения держались в секрете). В HyperCard до преодоления 32-килобайтного барьера дело не дошло. Не было необходимости.

Если поле принадлежало фону, введенный в него текст хранился в памяти карточки.

Кнопка (button) – интерфейсный элемент запуска какого-то действия. В первоначальном замысле предполагалось, что их единственной функцией будет навигация, переход с одной карточки на другую, из стэка в стэк – но очень быстро выяснилось, что гораздо интереснее сделать их универсальными. Кнопки, так же как и поля, могли принадлежать как фону, так и непосредственно карточке.

Инструменты

К инструментам можно было бы отнести все команды, предлагаемые в меню приложения HyperCard, вплоть до Copy/Paste и создания/удаления/копирования карточек, но не будем впадать в крайности. Хотя, если бы я писал книгу, про некоторые из них я бы обязательно написал.

Одним из самых важных принципов чудо-приложения, вдохновленного трансцендентным духом вселенского разума, была навигация между карточками. Те самые связи между тем, что на первый взгляд может казаться никак не связанным одно с другим. Вот не смог я удержаться без намеков на звездную ночь в Лос Гатосе, в паре кварталов от того самого гаража родителей Стива Джобса…

Экран Recent показывал уменьшенные изображения 42 карточек, на которых пользователь побывал последними. Если какая-то карточка посещалась более чем один раз, Recent её показывал только один раз. Это был модальный экран – выйти из него можно было только выбрав какую-нибудь из карточек. По-моему, это не изменилось и в HyperCard 3.0, навечно оставшемся публичной альфа-версией.

На самом деле, никакой эзотерики в этом навигационном инструменте не было. Это одна из любимых идей Джефа Раскина, а Билл Аткинсон, будучи еще студентом, прослушал курс графического пользовательского интерфейса у профессора Раскина.

К специальным стэкам классическое HyperCard’оведение (все издания гудмановского “Полного руководства HyperCard”, рассыпанные в бессмысленные биты многочисленные гайды Apple Computer и мои собственные труды из начала 90-х последнего века прошлого тысячелетия), относит Home и почему-то Help.

Последний был замечательным, я его даже переводил на русский, и больше всего сегодня я рад тому, что он, по-видимому, не сохранился. Если у кого-то есть русский перевод Help, по-тихому пришлите его мне… И тс-с-с! Вдруг это мой!!!

А вот Home действительно играл почти мистическую роль в HyperCard. Настолько важную, что мое первое впечатление от www было омрачено отсутствием в Паутине самой главной страницы. Home был первой карточкой, открываемой HyperCard. В ней были собраны все (по мнению коммерсантов Apple) важные “линки” к самым важным стэкам. К счастью, эту карточку можно было редактировать, в её фон можно было добавлять любое количество дополнительных страниц, прогибая изменчивый мир под себя.

Это был центр навигации, и это было здорово.

Message Box – это однострочный windoid (окно, которое не окно, в Mac’овской системе до сих пор есть их аналог, “плавающие окна”, парящие над пользовательским интерфейсом и всеми другими окнами… По правилам Human Interface Guide, такие окна не должны быть большими и закрывать слишком большое пространство под собой. Узнаю, кто придумал в таких вот плавающих окнах выводить Mac’овский Help, размером в 3/4 экрана…, в который можно было вводить команды на языке HyperScript.

И не только. Это был еще и калькулятор. Калькулятор с доступам к тригонометрическим и логарифмическим функциям. Использовался он и для борьбы с блокировкой ресурсов… И много для чего еще.

HyperScript, чуть не ставший WildScript, я опишу в отдельной статье.

Объектно-ориентированное пространство

HyperCard была объектно-ориентированной, без возможности создания новых классов.

Классов официально было пять:

Объекты этих классов обменивались сообщениями, между собой и с “системой”, в её роли выступал объект скрытого, приватного класса – само приложение HyperCard.

У каждого из объектов этих классов был набор свойств, и (за исключением кнопки) еще и контент, содержимое. В стэке – один или несколько фонов, в фоне – карточки, кнопки и поля, в карточках – поля и кнопки, в полях их текст. У кнопок были только свойства, среди них стиль, определяющий, как она должна выглядеть и вести себя.

Расширения

В Mac’е процедуры отрисовки и управления многими элементами интерфейса системы были… заменяемы и переопределяемы. Код стандартных окон, контролов, меню и даже планок меню располагался в кодовых ресурсах, типов WDEF, CDEF, MDEF и им подобных.

Я не уверен, что это началось именно с HyperCard, просто более ранних примеров я не помню – по тому же пути пошел и HyperCard. Для расширения стандартных возможностей приложения в конкретных стэках, в их “ответвление ресурсов” можно было добавить свой (или свои) ресурсы типа XCMD и XFCN.

Правда, сначала их надо было или найти где-нибудь, или написать. В конце 80-х этот код должен был умещаться в 32 K, но для машинного кода это довольно много.

Разница между XCMD и XFCN только в том, что последний – функция, возвращающая значение. Назывались подобные ресурсы “кодовыми”. Теоретически такой ресурс можно было набрать в ResEdit, но… о сверхспособностях поговорим на другом ресурсе.

В начале 90-х многие приложения обзавелись кодовыми ресурсами, это стало модно, а на рынке и в бесплатных коллекциях появились наборы таких ресурсов на все случаи жизни, кроме только тех, которые случались в реальности конкретной вашей жизни.

WildCard vs Apple HyperCard

Все просто: Билл Аткинсон назвал придуманное им приложение WildCard, поскольку идея пришла к нему сама и неожиданно, как приходят дикие звери – но когда дело уже шло к релизу и за легализацию нового продукта взялись профессионалы, выяснилось, что эта торговая марка уже занята.

Казалось бы, какие пустяки – сама Apple использует чужую торговую марку (Apple Corps, звукозаписывающей компании Beatles, фактически собственности Пола Маккартни), а в наши дни в мире существуют две трехбуквенные системы, которые называются iOS и IOS.

Объяснять, что такое iOS, на AppleInsider’е вроде бы неуместно. IOS (все буквы заглавные) — это “межсетевая операционная система” компании Cisco, для маршрутизаторов и сетевых коммутаторов этой компании. Для признания юристами достаточно и куда более дальних совпадений.

Но, как говорится, quod licet iovi… Apple и iOS были нужны Стиву Джобсу, а с ним мало кто решался спорить, даже в конце 70-х. Поэтому конфликты торговых знаков уладили в суде, за приличные суммы денег и на каких-то условиях. Причем дело Apple vs Apple несколько раз возвращалось в суд – Apple, которая раньше была Apple Computer, просто рецидивист какой-то. Именно она раз за разом нарушала достигнутые ранее договоренности с Apple Corps, которая немедленно и с огромным удовольствием обращалась с жалобами в суд.

Но, как говорится, что дозволено Юпитеру… Судиться с владельцами торговой марки WildCard из-за незаконнорожденной (пусть и обласканной главой компании) программы и программиста, пусть очень ценного для компании, никто не собирался. Совет директоров этого бы не понял.

Новости по теме
4 новых функций приложения Фото, которые появились в iOS 26
Наконец-то! Алиса научилась понимать, когда ее перебивают во время разговора
Самый удобный способ написать пользователю в WhatsApp, не добавляя его в контакты
Новости партнеров
Когда выйдет и каким будет новый Galaxy S25 FE от Samsung
Когда выйдет и каким будет новый Galaxy S25 FE от Samsung
Почему весь мир измеряет время по Гринвичу, если это крошечный район Лондона?
Почему весь мир измеряет время по Гринвичу, если это крошечный район Лондона?
КРИПТОЖМЫХ / Восстановление Биткоина, популярность крипты среди инвесторов и амбиции Tether
КРИПТОЖМЫХ / Восстановление Биткоина, популярность крипты среди инвесторов и амбиции Tether