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, но это было бы слишком вызывающе.

Еще одна интересная особенность – общий буфер обмена данными между всеми частями программы…

Оставить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *