Classic AppleWorks: створення світу
^ Works для Apple II надав Apple абсолютно реальний шанс зайняти лідируючу позицію в офісах усього світу. Шанс з розряду єдиних у житті. Скористатися ним було нескладно: треба було всього лише не заважати. А ще краще допомогти. Але... Apple не була б Apple.
Подібні шанси (єдині в житті) випадали Apple Computer неодноразово. І майже всі вони були зарозуміло проігноровані. Саме існування Apple, строго кажучи, ненауково і нелогічно. Або життя складніше і різноманітніше, ніж нам здається.
У заголовку головний герой оповіді названий дещо незвично - за життя він не був класиком, його звали просто ^ Works. Справа в тому, що ^ Works називалися три абсолютно різних програмних продукти, в яких не було жодної загальної сходинки коду. Поки їх було тільки два (″ Works ″ і ″ Works GS ″), складнощів не виникало.
У 1998 році Стів Джобс ліквідував Claris Inc, перетворивши її на FileMaker Inc, забрав частину програмних продуктів під крило Apple - і перейменував ClarisWorks у ^ Works. Ось так і виникла необхідність якось їх розрізняти.
ClarisWorks/″ Works ″ і ″ Works для Apple II ″ довготривало ″ і неестетично. А ось Classic Works, просто Works, і Works GS, по-моєму, цілком. Якщо вам не подобається, я тут ні до чого: назву Classic ^ Works придумав не я.
У цьому тексті ^ Works завжди позначає «^ Works для Apple II».
Works спокушає Apple
^ Works розробив Руперт Лісснер. Коли програма була готова (Руперт розробив дві версії, для Apple II і Apple III), Apple Computer купила у нього вихідний код і всі права на версію для Apple II. Вихідний код і права на версію для Apple III Руперт дуже вигідно продав компанії Haba Systems, яка випустила її під назвою E-Z Pieces.
Під час розробки ^ Works Руперт консультувався з групою користувацького інтерфейсу на Apple і бував у кампусі компанії. Але в ті часи так чинив не тільки він. Керівництво цікавилося тільки готовими програмами.
Хоча до кінця 1984 року ніякої ^ Works взагалі не було. У дитинстві її звали ^ Pie, «яблучний пиріг».
У 1984 році Apple Computer боролася з власною нескромністю. Її звинувачували в тому, що компанія - виробник операційних системи і комп'ютерів сама конкурує на ринку програмного забезпечення для своїх виробів. Це вважалося неетичним, але найголовніше - програми від Apple Computer рвали конкурентів на шматки, вважалося, що з ними взагалі неможливо конкурувати...
Наприклад, текстовий процесор ^ Write вбив всі спроби сторонніх авторів створити свій власний текстовий процесор для Apple II. Ніхто не наважувався.
Але і встояти проти ^ Works компанія не могла, спокуса була занадто велика - вона мучилася докорами совісті і здійснювала по відношенню до спокусника дивні вчинки.
Між тим, Руперт Лісснер - той самий незалежний сторонній розробник з тих, хто «не міг конкурувати з Apple» і за чиї права так наполегливо боролася комп'ютерна спільнота. Просто дуже талановитий.
Абсолютно необхідно сказати пару слів про автора.
Руперт Ліснер, UCSD-Паскаль і p-Code
Apple Computer невипадково придивлялася до розробок Ліснера. Руперта там вже знали.
У 1980 році Руперт Ліснер спробував сам продавати систему управління базами даних (СУБД) для Apple III, QuickFile III. Продавав він настільки ж бездарно, наскільки геніально проектував і програмував.
Програма була написана на UCSD-Паскалі, спеціально для якого Apple створила в 1979 році операційну систему Apple Pascal. UCSD-Паскаль був непоганим розширенням стандартного Паскаля, що перетворював цю іграшкову мову на реальний інструмент для написання складних програм, Правда, програми, написані на UCSD-Паскалі, відрізняла від інших «фірмова» повільність.
У комп'ютерних колах навіть ходила чутка про те, що нібито Apple Pascal (люди не знали, що це не мова, а операційна система!) не компільована мова, а інтерпретована.
Іншими словами, замість того щоб заздалегідь перетворювати вихідний код на код, зрозумілий процесору, та ще й зрізаючи кути, де можливо, інтерпретовані мови перекладають вихідний код фразу за фразою, витрачаючи на це купу часу вже в процесі виконання програми. Витрачаючи дорогоцінний час користувача на себе.
Інтерпретований Паскаль - екзотика. Але, як не дивно, в деякій мірі так воно і було, правда менш нерозумно. UCSD-Паскаль компілював вихідний код, але не в машинну мову процесора, а в p-Code, універсальний асемблер для неіснуючого процесора, який виконувався у віртуальній машині (як у Java), яка перекладала p-Code, фразу за фразою. Це набагато швидше, ніж синхронно переводити з Паскаля, але повільніше, ніж просто виконувати машинний код.
Не поспішайте обливати брудом Університет Каліфорнії в Сан Дієго (і всіх, хто придумав і реалізовував цю концепцію з 1966 року), у такого підходу багато достоїнств, а швидкість виконання - всього лише плата за них.
QuickFile III для Apple III потрапила в поле зору Apple, програма була приголомшливо гнучкою і легкою у використанні - і Apple взяла на себе її просування і реалізацію. Наприкінці 1980-го або на початку 1981-го Руперт розробив QuickFile e, версію для Apple e, яку Apple теж взяла під своє крило.
Схоже, в QuickFile ^ e і QuickFile III це було реалізовано вперше: у файлів програм були однакові розширення і структура. Іншими словами, файл, створений в QuickFile III, міг використовуватися QuickFile ^ e, як якщо б він був її файлом, і навпаки. Може, хтось вже робив це - але дуже часто обходилися без подібних тонкощів.
Загадковим для мене способом Лісснер зміг познайомитися з Apple Lisa за пару років до її виходу в світ. Хоча до параноїдального захисту секретів в Apple Computer тоді ще не дійшли, а в кампус компанії він був вхож.
Знайомство з Lisa Office System не пройшло безслідно для Руперта, у нього виникла думка: а що, якщо об'єднати в одній програмі електронні таблиці, базу даних і текстовий процесор?
Lisa Office System не була інтегральною програмою. Це був інтерфейс для кінцевих користувачів, графічний і доброзичливий, в якому користувачів чекали сім програм: LisaWrite, LisaCalc, LisaDraw, LisaGraph, LisaProject, LisaList и LisaTerminal. На думку Apple, це було «все, що може знадобитися користувачеві». Писати в Lisa для самої Lisa було непросто, і до самого кінця платформи для неї був випущений тільки один сторонній програмний продукт.
До 1982 року задум остаточно дозрів і перетворився на проект ^ Pie («яблучний пиріг»).
ApplePie
Задум був занадто красивий, щоб вбивати його повільністю, тим більше що тепер від процесора вимагалася куди більша напруга - тому код ^ Pie, від першого рядка до останній, написаний на асемблері 6502.
Програма писалася з педантичною ретельністю (чеки від Apple Computer, на дуже навіть пристойні суми, надходили регулярно), з увагою до найдрібніших деталей.
Точніше, дві програми: варіанти для Apple II і для Apple III занадто сильно відрізнялися один від іншого, через відмінності в архітектурі та системі управління пам'яттю.
Як і у випадку з QuickFile, розширення і структура файлів для всіх типів документів нової програми, були зроблені однаковими. Крім того, передбачався імпорт даних із зовнішнього світу - програма декількох чужих для ^ Pie форматів (включаючи файли QuickFile, ASCII-файли, таблиці VisiCalc і DIF-файли).
DIF-файли (текстові файли спеціальної організації) досі використовуються для обміну даними між електронними таблицями різних типів. Формат підтримувався на початку 80-х електронними таблицями Excel, Lotus 1-2-3, dBase і багатьма іншими).
У файлів «яблучного пирога» розширення (на Apple II і Apple III, і навіть на Mac'e на ранній стадії його розробки, тип файлу позначався розширеннями) були:
- .AWP - документи текстового процесора;
- .ADB - документи бази даних;
- .ASP - документи електронних таблиць, взагалі повинно було бути .ASS, але це було б занадто зухвало.
Ще одна цікава особливість - загальний буфер обміну даними між усіма частинами програми...