Вай­бко­динг нын­че в моде: берешь какой‑нибудь прод­винутый инс­тру­мент вро­де Cursor или Claude, и вот ты уже навай­бко­дил себе биз­нес. Одна­ко все новое, как извес­тно, хорошо почищен­ное от пыли ста­рое: пер­вую такую тех­нологию при­думал один пок­лонник пси­ходе­ликов еще сорок лет назад, а поль­зовались ей дру­гие любите­ли стран­ного no-code дол­гие годы. Разуме­ется, кру­тилось оно на «маках». Если ты никог­да не слы­шал о HyperCard, самое вре­мя ненадол­го вер­нуть­ся в прош­лое.

У меня есть хоб­би: я очень люб­лю собирать ста­рое барах­ло с помо­ек вин­тажные компь­юте­ры, сре­ди которых име­ется древ­ний, как хвост мамон­та, iBook G3 под управле­нием клас­сичес­кой Mac OS 9. Выис­кивая по пыль­ным зако­улкам интерне­та полез­ный софт для этой сис­темы, однажды я совер­шенно слу­чай­но обна­ружил прог­рамму под наз­вани­ем HyperCard. Эта уди­витель­ная наход­ка ока­залась не чем иным, как пра­роди­телем все­го, что сей­час гор­до зовет­ся no-code, — толь­ко вот без это­го душ­ного сму­зи‑пафоса и под­писок за двад­цать бак­сов в месяц.

Впе­чат­ление, буд­то я нат­кнул­ся на нас­тоящее сок­ровище, под­твер­дилось, ког­да я тор­жес­твен­но вод­рузил HyperCard на свой iBook. При­ложе­ние ока­залось магичес­ким конс­трук­тором, который поз­волял юзе­ру‑чай­нику скле­пать себе инте­рак­тивное при­ложе­ние без еди­ной строч­ки хар­дкор­ного кода, хотя и рас­полагал собс­твен­ным объ­ектно ори­енти­рован­ным язы­ком прог­рамми­рова­ния. Хочешь клик‑квест? Пожалуй­ста. Учеб­ник по кван­товой механи­ке с кно­поч­ками? Лег­ко. Гля­дя на эту прог­рамму, невоз­можно отде­лать­ся от ощу­щения, буд­то Notion и PowerPoint еще в середи­не вось­мидеся­тых заг­лянули в гос­ти к Apple и забыли вер­нуть­ся домой.

HyperCard на моем iBook
HyperCard на моем iBook

HyperCard поз­волял скрипт‑кид­ди почувс­тво­вать себя нас­тоящим гуру UI — ты прос­то «накиды­ваешь» мыш­кой поля, кноп­ки, ссыл­ки и говоришь прог­рамме, как она дол­жна реаги­ровать на дей­ствия поль­зовате­ля. Заметь, все это — задол­го до того радос­тно­го момен­та, ког­да из недр Borland выполз монстр под наз­вани­ем Delphi, не говоря уж про вся­кие там «вижу­албей­сики» и про­чие, изви­няюсь за выраже­ние, WYSIWYG. А началась эта исто­рия в далеком 1985 году…

 

Все началось с картона. Или с марки…

HyperCard при­думал парень по име­ни Билл Аткинсон, тру­див­ший­ся в Apple c 1978 по 1990 год. Если ты слы­шишь это имя впер­вые — не паникуй, ты не оди­нок: Apple прос­лавилась куль­том ста­рины Сти­ва, а такие гении, как Билл, час­то оста­вались в тени. Аткинсон — тот самый чувак, который соз­дал MacPaint, пер­вый реаль­но удоб­ный гра­фичес­кий редак­тор для обыч­ных смер­тных, счи­тающих себя дизай­нерами. А еще он спро­екти­ровал QuickDraw — гра­фичес­кий дви­жок, рисовав­ший все эти кра­сивые кно­поч­ки и менюш­ки в поль­зователь­ском интерфей­се Mac OS. Сам соз­датель HyperCard поз­же вспо­минал, что идея про­екта приш­ла в его свет­лую голову пос­ле при­ема пси­ходе­ликов в про­цес­се увле­катель­ного три­па. Так ли это, или Аткинсон поп­росту при­калы­вал­ся над жур­налис­тами, допод­линно неиз­вес­тно, но прог­рамма и впрямь получи­лась необыч­ной.

Билл Аткинсон
Билл Аткинсон

В осно­ву кон­цепции HyperCard лег прин­цип ролодек­са — доволь­но популяр­ного в Аме­рике вось­мидеся­тых нас­толь­ного девай­са, пред­став­ляюще­го собой набор вра­щающих­ся кар­тонных кар­точек с индексом. Ролодекс исполь­зовал­ся для записи кон­тактов полез­ных людей, телефо­нов и адре­сов фирм, пос­тавщи­ков, кли­ентов — в общем, всей той важ­ной фиг­ни информа­ции, которая не помеща­лась на нак­леен­ных поверх монито­ра жел­тых лис­точках. Одно вре­мя в Шта­тах даже сущес­тво­вала мода на визит­ки в фор­ме кар­точек ролодек­са.

Ролодекс
Ро­лодекс

Имен­но Бил­лу Аткинсо­ну, соз­дателю гра­фичес­кого интерфей­са для «маков», впер­вые приш­ла в голову свет­лая мысль: а что, если юзер сам смо­жет собирать интерфей­сы, как кубики, не парясь о коде? Так в 1987 году и появил­ся на свет пер­вый гов­нокод-но­укод‑конс­трук­тор для тех, кто еще не знал сло­ва «ноукод».

 

Ткни и радуйся: как работает HyperCard

В сис­теме HyperCard все кру­тит­ся вок­руг «стоп­ки» — но не той, что сто­ит у тебя на сто­ле в пят­ницу вечером. Речь идет о стоп­ке «кар­точек», каж­дая из которых пред­став­ляет собой ана­лог одной кар­тонной кар­точки ролодекс. На такую кар­точку, или вир­туаль­ный экран, мож­но добавить раз­личные ком­понен­ты интерфей­са высоко­тех­нологич­ным методом перетас­кивания мышью: тек­сто­вые поля, чек­боксы, кноп­ки, менюхи, кар­тинки — и раз­ложить их, как душе угод­но. Еще в ком­плек­те прог­раммы име­ются так называ­емые кар­точки‑про­тоти­пы, пред­став­ляющие собой шаб­лоны, которые мож­но исполь­зовать в качес­тве загото­вок. Нап­ример, если такой шаб­лон содер­жит фоновый рисунок, он авто­мати­чес­ки будет виден на всех кар­точках про­екта, ссы­лающих­ся на этот шаб­лон. Хочешь, что­бы в тво­ем при­ложе­нии была оди­нако­вая шап­ка и боковое меню с кно­поч­ками, — соз­даешь под­ходящий шаб­лон и раду­ешь­ся.

Интерфейс HyperCard
Ин­терфейс HyperCard

Кар­точки мож­но свя­зывать навига­цией — либо с помощью эле­мен­тов интерфей­са, таких как кноп­ки и гипер­ссыл­ки (в роли которых может выс­тупать и кар­тинка), либо с исполь­зовани­ем сце­нария на спе­циаль­ном язы­ке прог­рамми­рова­ния HyperTalk, о котором мы погово­рим чуть поз­же. Скрип­ты поз­воля­ют перехо­дить от одной кар­точки к дру­гой при соб­людении задан­ных раз­работ­чиком усло­вий. Еще в стоп­ке мож­но исполь­зовать встро­енную сис­тему инте­рак­тивно­го поис­ка, а готовый про­ект сох­ранить в виде при­ложе­ния Mac OS — саму прог­рамму HyperCard для прос­мотра кон­тента и запус­ка при­ложе­ния на дру­гой машине уста­нав­ливать не нуж­но.

При­меча­тель­но, что HyperCard не исполь­зует какой‑либо отдель­ной базы дан­ных: сос­тояние всех кар­точек и стоп­ки в целом счи­тает­ся активным, дос­тупным для изме­нений и сох­раня­ется в режиме реаль­ного вре­мени непос­редс­твен­но в фай­ле про­екта. Ска­жем, если поль­зователь ввел что‑то в тек­сто­вое поле или перета­щил мышью кар­тинку на экра­не, эти дей­ствия прос­то изме­няют сос­тояние целево­го объ­екта в стоп­ке. Такие изме­нения записы­вают­ся сра­зу в физичес­кий файл стоп­ки и не тре­буют нажатия кноп­ки Save или дру­гого подоб­ного дей­ствия. Это харак­терно для мно­гих сис­тем, ори­енти­рован­ных на базы дан­ных, и неп­ривыч­но для при­ложе­ний, работа­ющих с докумен­тами и пре­зен­таци­ями. Для «маков» образца 1987 года подоб­ное и вов­се было в новин­ку.

Главный экран HyperCard
Глав­ный экран HyperCard

Ана­логич­ным обра­зом это выг­лядело и с точ­ки зре­ния раз­работ­чика: ты можешь кол­довать со сво­им про­ектом бук­валь­но на лету. Никако­го «сох­рани — ском­пилируй — собери билд — переза­пус­ти — нас­лаждай­ся багами». Добавил кноп­ку — она уже живая. Перепи­сал скрипт — новый мир готов. Короче, HyperCard — это как Borland Delphi, Visual Basic и дру­гие динозав­ры, толь­ко без дол­гих ком­пиляций и про­чего скуч­ного прог­раммист­ско­го занудс­тва.

 

HyperTalk: язык, на котором мог программировать даже твой кот

Ну что ж, мы понем­ногу допол­зли до самой соч­ной фиш­ки HyperCard — язы­ка HyperTalk. Это скрип­товый объ­ектно ори­енти­рован­ный язык с упро­щен­ным син­такси­сом. На HyperTalk мож­но было опи­сывать логику при­ложе­ния HyperCard. Этот язык сла­бо типизи­рован, мно­гос­ловен, а его струк­тура стре­милась мак­сималь­но соот­ветс­тво­вать струк­туре живого англий­ско­го язы­ка, одна­ко при этом он под­держи­вал все типич­ные конс­трук­ции язы­ков прог­рамми­рова­ния высоко­го уров­ня, вро­де if — then, goto и repeat.

Продолжение доступно только участникам

Материалы из последних выпусков становятся доступны по отдельности только через два месяца после публикации. Чтобы продолжить чтение, необходимо стать участником сообщества «Xakep.ru».

Присоединяйся к сообществу «Xakep.ru»!

Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее

  • Подпишись на наc в Telegram!

    Только важные новости и лучшие статьи

    Подписаться

  • Подписаться
    Уведомить о
    0 комментариев
    Межтекстовые Отзывы
    Посмотреть все комментарии