Classic AppleWorks: сотворение мира
AppleWorks для Apple II предоставил Apple абсолютно реальный шанс занять лидирующую позицию в офисах всего мира. Шанс из разряда единственных в жизни. Воспользоваться им было несложно: надо было всего лишь не мешать. А еще лучше помочь. Но... Apple не была бы Apple.
Подобные шансы (единственные в жизни) выпадали Apple Computer неоднократно. И почти все они были высокомерно проигнорированы. Само существование Apple, строго говоря, ненаучно и нелогично. Или жизнь сложнее и разнообразнее, чем нам кажется.
В заголовке главный герой повествования назван несколько необычно - при жизни он не был классиком, его звали просто AppleWorks. Дело в том, что AppleWorks назывались три совершенно разных программных продукта, в которых не было ни единой общей строчки кода. Пока их было только два (AppleWorks и AppleWorks GS), сложностей не возникало.
В 1998 году Стив Джобс ликвидировал Claris Inc, превратив ее в FileMaker Inc, забрал часть программных продуктов под крыло Apple - и переименовал ClarisWorks в AppleWorks. Вот так и возникла необходимость как-то их различать.
ClarisWorks/AppleWorks и AppleWorks для Apple II - длинновато и неэстетично. А вот Classic AppleWorks, просто AppleWorks, и AppleWorks GS, по-моему, вполне. Если вам не нравится, я тут ни при чем: название Classic AppleWorks придумал не я.
В этом тексте AppleWorks всегда обозначает "AppleWorks для Apple II".
AppleWorks соблазняет Apple
AppleWorks разработал Руперт Лисснер. Когда программа была готова (Руперт разработал две версии, для Apple II и Apple III), Apple Computer купила у него исходный код и все права на версию для Apple II. Исходный код и права на версию для Apple III Руперт очень выгодно продал компании Haba Systems, которая выпустила ее под названием E-Z Pieces.
Во время разработки AppleWorks Руперт консультировался с группой пользовательского интерфейса на Apple и бывал в кампусе компании. Но в те времена так поступал не только он. Руководство интересовалось только готовыми программами.
Хотя до конца 1984 года никакой AppleWorks вообще не было. В детстве ее звали ApplePie, "яблочный пирог".
В 1984 году Apple Computer боролась с собственной нескромностью. Ее обвиняли в том, что компания - производитель операционных системы и компьютеров сама конкурирует на рынке программного обеспечения для своих изделий. Это считалось неэтичным, но самое главное - программы от Apple Computer рвали конкурентов в клочья, считалось, что с ними вообще невозможно конкурировать...
Например, текстовый процессор AppleWrite убил все попытки сторонних авторов создать свой собственный текстовый процессор для Apple II. Никто не решался.
Но и устоять против AppleWorks компания не могла, соблазн был слишком велик - она мучилась угрызениями совести и совершала по отношению к соблазнителю странные поступки.
Между тем, Руперт Лисснер - тот самый независимый сторонний разработчик из тех, кто "не мог конкурировать с 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 IIe, версию для Apple IIe, которую Apple тоже взяла под свое крыло.
Похоже, в QuickFile IIe и QuickFile III это было реализовано впервые: у файлов программ были одинаковые расширения и структура. Другими словами, файл, созданный в QuickFile III, мог использоваться QuickFile IIe, как если бы он был ее файлом, и наоборот. Может, кто-то уже делал это - но очень часто обходились без подобных тонкостей.
Загадочным для меня способом Лисснер смог познакомиться с Apple Lisa за пару лет до ее выхода в свет. Хотя до параноидальной защиты секретов в Apple Computer тогда еще не дошли, а в кампус компании он был вхож.
Знакомство с Lisa Office System не прошло бесследно для Руперта, у него возникла мысль: а что, если объединить в одной программе электронные таблицы, базу данных и текстовый процессор?
Lisa Office System не была интегральной программой. Это был интерфейс для конечных пользователей, графический и дружелюбный, в котором пользователей ждали семь программ: LisaWrite, LisaCalc, LisaDraw, LisaGraph, LisaProject, LisaList и LisaTerminal. По мнению Apple, это было "все, что может понадобиться пользователю". Писать в Lisa для самой Lisa было непросто, и до самого конца платформы для нее был выпущен только один сторонний программный продукт.
К 1982 году замысел окончательно созрел и превратился в проект ApplePie ("яблочный пирог").
ApplePie
Замысел был слишком красив, чтобы убивать его медлительностью, тем более что теперь от процессора требовалась куда большее напряжение - поэтому код ApplePie, от первой строчки до последний, написан на ассемблере 6502.
Программа писалась с педантичной тщательностью (чеки от Apple Computer, на очень даже приличные суммы, поступали регулярно), с вниманием к мельчайшим деталям.
Точнее, две программы: варианты для Apple II и для Apple III слишком сильно отличались один от другого, из-за отличий в архитектуре и системе управления памятью.
Как и в случае с QuickFile, расширения и структура файлов для всех типов документов новой программы, были сделаны одинаковыми. Кроме того, предусматривался импорт данных из внешнего мира - программа нескольких чужих для ApplePie форматов (включая файлы QuickFile, ASCII-файлы, таблицы VisiCalc и DIF-файлы).
DIF-файлы (текстовые файлы специальной организации) до сих пор используются для обмена данными между электронными таблицами разных типов. Формат поддерживался в начале 80-х электронными таблицами Excel, Lotus 1-2-3, dBase и многими другими).
У файлов "яблочного пирога" расширения (на Apple II и Apple III, и даже на Mac’е на ранней стадии его разработки, тип файла обозначался расширениями) были:
- .AWP - документы текстового процессора;
- .ADB - документы базы данных;
- .ASP - документы электронных таблиц, вообще должно было быть.ASS, но это было бы слишком вызывающе.
Еще одна интересная особенность - общий буфер обмена данными между всеми частями программы...