Добавить новость
ru24.net
Досуг
Февраль
2025

Удивительный и забытый Palm: операционная система, которая изменила всё

0

Как бы вы описали операционную систему, идеи, концепции и подходы которой в значительной степени определили всю индустрию мобильных компьютеров? Этот вопрос не выходил у меня из головы с тех пор, как я решил написать эту статью. Операционная система устройства и пользовательский интерфейс, который она использует, — это то, с чем вы взаимодействуете ежедневно; если операционная система и вы, как пользователь, взаимодействуете друг с другом, у вас с годами формируется своего рода эмоциональная связь.

Со мной такое случалось нечасто. Постоянные читатели знают, что я тесно связан с BeOS, которую считаю лучшей операционной системой из когда-либо созданных. QNX, в те времена, когда ее можно было запускать как настольную операционную систему с ее необычным PhotonUI, также занимала особое место в моем сердце. И это все.

Итак, что насчет Palm OS? После таких объёмных статей вы можете подумать, что у меня с ней какая-то особая связь. На самом деле, это не совсем так. Я уважаю ее за то, что она представляет собой, и за то, как она определяет индустрию по сей день, но мои воспоминания о ней, как у бывшего пользователя, не всегда приятные, особенно когда я снимаю розовые очки ностальгии. Чтобы еще больше усложнить ситуацию, во времена расцвета КПК я в некотором роде предпочитал темную сторону.

Но прежде чем мы перейдем к этому вопросу, я советую вам сначала прочитать предыдущую главу истории, если вы ещё не сделали этого.

Это не будет полным, обстоятельным описанием Palm OS и ее архитектуры, я лишь собираюсь осветить ряд аспектов «низкого уровня» системы, которые я нахожу интересными, после чего перейду к более заметным для пользователя частям. Давайте начнем с используемого ядра Palm OS.

Ядро

Я всегда предполагал, что Palm OS использует доморощенное ядро, но, как оказалось, это верно лишь отчасти. Начиная с версии 1.x и заканчивая версией 4.x, Palm OS использовала ядро AMX 68000, одно из многих ядер, доступных для операционной системы «реального времени» AMX от Kadak. AMX может использовать различные ядра в зависимости от целевой платформы, поэтому у неё есть поддержка Intel 8086, PowerPC, MIPS, ColdFire и так далее. Поскольку в устройствах Palm использовались процессоры Motorola Dragonball на базе Motorola 68k, они выбрали ядро AMX 68000.

Однако Palm не использовала это ядро как есть. Они использовали только те части, которые им действительно были нужны, и отказались от всего остального. AMX 68000 — это ядро с преимущественной многозадачностью, но поскольку в Palm OS нет многозадачности, ориентированной на пользователя, то нет необходимости знакомить разработчиков с более сложными функциями ядра, которые делают это возможным. Кроме того, Palm хотела предотвратить чрезмерную сложность ядра, поскольку они хотели сохранить переносимость всего, что работает поверх ядра (и это оказалось очень важным решением).

«Palm OS от palmOne, Inc. не предоставляет доступ к базовому многозадачному ядру AMX 68000, — поясняет Kadak на своем веб-сайте, — вместо этого она предоставляет предварительно настроенный набор задач AMX и совместимых с AMX драйверов устройств, которые управляют устройством Palm. Затем Palm OS предоставляет API-интерфейс приложения, который предлагает набор сервисов, необходимых большинству разработчиков для расширения функциональности устройства Palm в определенной области применения.»

Джим Шрам (Jim Schram), работавший в PalmSource в 2002 году, предоставил более подробную информацию в рассылке электронного письма для разработчиков Palm.

«В Palm OS используются таймеры, семафоры, и прочие простые группы сигналов для обеспечения асинхронности. Ничего сложного, — заявил он. — Мы хотели сохранить простоту, чтобы упростить перенос на другие ядра (что мы и сделали в Palm OS 5), а также потому, что на момент выбора AMX не было необходимости в более сложных функциях».

Вплоть до Palm OS 4.x компания Palm продолжала полагаться на ядро AMX 68000. Однако в начале нового тысячелетия стало ясно, что архитектура Dragonball больше не конкурентоспособна. Таким образом, Palm перешла на архитектуру ARM с выпуском Palm Tungsten T в ноябре 2002 года, что открыло платформе целый ряд новых возможностей, таких как улучшенная поддержка мультимедиа, более высокое разрешение экрана и так далее.

«Раздвижной» Tungsten T1 | Инструкция пользователя

Переход на новую архитектуру означал выбор нового ядра. В то время как Palm могла бы выбрать ядро AMX 4-ARM, компания решила «пойти по знакомой дороге» и создать свое собственное ядро. Таким образом, Palm OS 5 включает в себя совершенно новое пользовательское ядро, написанное компанией Palm и ласково названное «MCK» в честь своего автора. К сожалению, мне не удалось выяснить, к кому относятся эти инициалы.

Palm снова решила упростить задачу и реализовать для MCK более или менее ту же функциональность, что и в старом ядре AMX 68000, что означало те же самые ограничения для сторонних разработчиков. Тем не менее, у Palm были планы по расширению функциональности, но не для первого выпуска новой системы.

«Поддержка дополнительных фоновых потоков, таймеров и так далее будет добавлена в будущей версии Palm OS. Однако в версии 5 мы решили, что лучше не откусывать больше, чем мы можем прожевать», — говорил Шрам.

Очевидно, что у Palm действительно были по крайней мере некоторые идеи и планы по структурным улучшениям нижних уровней операционной системы — насколько серьезны эти идеи и насколько далеко продвинулись планы, скорее всего, навсегда останется тайной. Злополучная Palm OS 6 Cobalt (к которой я вернусь позже в этой статье) может дать некоторые ответы на этот конкретный вопрос.

Переход с Dragonball на ARM потребовал не только использования другого или нового ядра; Palm OS также требовался метод, гарантирующий, что огромная коллекция приложений, написанных для Palm OS 4 и более ранних версий, по-прежнему будет работать на Palm OS 5 с ее другой архитектурой. Решением Palm этой проблемы стала среда совместимости приложений PACE (Palm Application Compatibility Environment) — окружение совместимости для приложений Palm. О ней подробнее можно почитать в отличной книге «Профессиональное программирование на Palm OS».

Для любого вызова функции Palm OS, выполняемого приложением, скомпилированным для Motorola, PACE выполняет ARM-эквивалент указанной функции. Обычно это приводит к большим накладным расходам, но процессоры ARM были настолько быстрее процессоров Dragonball, что старые приложения на самом деле запускались быстрее, используя PACE, чем изначально на КПК прошлых моделей. Также стало возможным создать собственный модуль ARM–кода, который можно было бы подключить к приложению для 68k, — это было особенно важно для приложений, которые выполняли работу с большими числами.

PACE также позаботился о более экзотической проблеме, возникающей при переключении между двумя архитектурами — порядке байтов. Поскольку я не хочу вдаваться в подробности, я просто сошлюсь на описание, найденное в книге «Профессиональное программирование на Palm OS».

В дополнение к передаче старых вызовов их ARM-аналогам, PACE преобразует и структуры данных. В отличие от архитектуры 68k с большим порядком байт, ARM хранит многобайтовые целые числа в формате с малым порядком. ARM-процессор также требует, чтобы 4-байтовые целые числа были выровнены по 4-байтовым границам; такие целые числа должны быть выровнены только по четной границе на Motorola. Эти различия в хранении данных означают, что структуры Palm OS, например те, которые используются для хранения информации о форме, существенно различаются между 68000 и ARM. 

Конечным результатом существования PACE стало то, что переход с 68k на ARM был относительно прозрачным для пользователей. Я не могу припомнить, чтобы когда-либо сталкивался с какими-либо проблемами при запуске старых приложений на устройствах Tungsten, но, опять же, это не значит, что их не было. Единственная сложность, которую я могу вспомнить, заключается в том, что Palm OS не поддерживала «универсальные» бинарные пакеты, и поэтому при загрузке приложения вам приходилось выбирать между версиями для Motorola и ARM.

Здесь нет файлов

У Palm OS весьма своеобразный способ хранения данных, поскольку, в отличие от большинства других операционных систем, она фактически не использует файловую систему. Я собираюсь углубиться в технические подробности в этом моменте и, честно говоря, они немного выходят за грани моего понимания, но я уверен, что уловил общую суть происходящего.

Грубо говоря, обычная файловая система не редактирует информацию, хранящуюся в файле, напрямую на накопителе. Вместо этого файл (или его часть) загружается в буфер оперативной памяти, где он находится во время просмотра или редактирования, а затем записывается обратно на диск, если это необходимо. Однако Palm OS использует оперативную память непосредственно для хранения данных и программ, поэтому её количество было весьма ограничено, особенно в начале жизненного цикла. Разработчики Palm решили использовали другой подход.

Вместо того чтобы полагаться на концепцию файлов, Palm OS использует «записи» и «базы данных». Записи — это фрагменты памяти, которые хранятся в базах данных. Таким образом, база данных — это список фрагментов памяти и набор метаданных о базе в целом. Заголовок БД содержит ряд полей, таких как имя и версия, но наиболее важными из них являются тип и создатель. Тип указывает системе, является ли эта база приложением или данными пользователя, в то время как поле создателя позволяет системе связывать различные базы друг с другом.

Записи, которые необходимо отредактировать, просто изменяются внутри базы с помощью функций системы «Memory manager» и «Data manager». Другими словами, блоки данных не нужно загружать в динамическую оперативную память, что означает, что вам требуется меньше памяти, а также это устраняет накладные расходы, связанные с перемещением данных между оперативной памятью и хранилищем. Из-за этой особенности разработчикам приложений запрещено редактировать записи напрямую, ведь любая ошибка может безвозвратно повредить данные. Они должны использовать встроенные функции системы.

Помимо уменьшения требований к объему оперативной памяти и увеличения производительности, этот подход также имеет ряд других преимуществ, наиболее важным из которых является то, что записи в базах данных могут быть перемешаны друг с другом. Это означает, что их добавление, удаление или стирание не требует перемещения других записей, что еще больше сокращает накладные расходы.

Когда вы переносите базы данных Palm OS в обычную файловую систему, они получают расширение .prc или .pdb, где PRC-файл является приложением, а PDB — данными. «Таким образом, эти файлы являются простыми представлениями базы данных Palm, — объясняет Теодор Цо (Theodore Ts'o). — Когда файл загружается в карманный компьютер, они преобразуется в базу данных с помощью соответствующей функции Palm OS dmCreateDatabaseFromImage».

Однозадачность (но не совсем)

Существует мнение, что Palm OS не может работать в многозадачном режиме. Вы можете запускать только одно приложение в единицу времени, у вас не может быть приложений или служб, работающих в фоновом режиме, а открытие нового приложения приведет к выгрузке текущего. Тем более, я сам отмечал это в разделе, посвященном ядру. Но давайте сейчас поговорим об этом более подробно, потому что на самом всё не так просто. Есть несколько интересных подробностей о том, как Palm OS обрабатывает запущенные приложения, которые напоминают мне действия ОС Android.

Теоретически, ситуация в Palm OS довольно проста. В любой момент времени может быть запущено только одно приложение. Открытое приложение завершается при запуске другого. Интересно, что это верно и для самого «рабочего стола», в отличии от iOS и Android, где Springboard или выбранный вами Лаунчер продолжает работать. Это интересно, потому что для Palm OS существовали альтернативные панели запуска.

На более техническом уровне:

Palm OS 5 Garnet и более ранние версии имеют ядро с преимущественной многозадачностью. Однако оболочка пользовательского интерфейса (UIAS), часть операционной системы, отвечающая за управление приложениями и отображающая пользовательский интерфейс, одновременно запускает только одно приложение. В начале единственной запущенной задачей является сама UIAS, которая вызывает код приложения в качестве подпрограммы. UIAS не получит управление снова, пока текущее запущенное приложение не завершит работу, после чего UIAS немедленно вызывает панель запуска или другое приложение.

Первым из дополнительных механизмов, позволяющих создавать подобие многозадачности, в Palm OS является концепция кодов запуска. Как следует из названия, они запускают приложения. Самый простой код запуска — «sysAppLaunchCmdNormalLaunch», который предписывает приложению выполнить полный обычный запуск и отобразить свой пользовательский интерфейс. Нажатие на значок приложения в панели запуска (или на одну из аппаратных кнопок) генерирует этот код запуска.

Коды запуска также могут использоваться для указания приложению, как себя вести. Существует довольно много стандартных кодов запуска, предоставляемых операционной системой, и, при необходимости, разработчики приложений могут также определять свои собственные коды запуска. Например, sysAppLaunchCmdGoToURL запускает приложение и запрашивает у него URL-адрес, в то время как sysAppLaunchCmdFind находит текстовую строку.

Кроме того, коды запуска могут сопровождаться двумя типами параметров:

  • Блок параметров — указатель на структуру, содержащую операнды. Эти операнды содержат информацию, необходимую для обработки связанного кода запуска.
  • Флаги запуска указывают, как должно вести себя приложение. Например, флаг может использоваться для указания того, должно ли приложение отображать пользовательский интерфейс или нет.

Самое интересное в кодах запуска то, что они также могут генерироваться приложениями для запуска друг друга без фактического переключения приложений с точки зрения пользователя. Т.е. если приложение A использует код запуска для запуска приложения B, интерфейс приложения A остается видимым для пользователя. С технической точки зрения, приложение B теперь является текущим, но с точки зрения пользователя, по прежнему работает программа A.

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

Второй механизм, который я хочу обсудить в разговоре про псевдо-многозадачность, — это уведомления. Это не совсем то, о чём вы могли бы подумать. Уведомления, выражаясь языком Palm OS, отправляются приложением или самой системой в другое приложение, предписывая ему что-то сделать (или не делать).

Уведомления, которые мы не заслуживаем | Droid Life

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

Кроме того, получатели уведомлений могут изменять их после получения. В книге «Palm OS Programmer’s Companion» описан пример: когда антенна Palm VII разложена, получатель может установить флаг «handled» для уведомления sysNotifyAntennaRaisedEvent, чтобы информировать другие приложения.

Palm VII — интересное устройство со встроенным модемом Mobitex | Ebay

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

Кстати, в Palm OS действительно есть привычные «уведомления», о которых вы думаете, когда видите это слово. Используются три взаимосвязанных менеджера: внимания, тревоги и уведомлений, — через которых Palm OS обеспечивает поддержку диалоговых окон, звуковых сигналов, мигания светодиодами и вибрации.

Третьим и последним механизмом, связанным с псевдо-мультизадачностью, являются вспомогательные уведомления. Они используются, когда одно приложение хочет запросить услугу у другого. Уже упомянутый Palm OS Programmer’s Companion приводит пример приложения адресной книги, запрашивающего набор номера, выбранного пользователем, у приложения звонка. В те времена, когда у КПК ещё не было мобильной сети и Wi-Fi, для передачи почты и факсов требовалось подключить внешний телефон по Bluetooth или инфра-красному соединению. И описанный механизм позволял разработчикам создавать подобные сервисы почты.

Преимущество этой системы перед, скажем, кодами запуска заключается в том, что они требуют, чтобы разработчик приложения знал фактический код и идентификатор приложения, которое он хочет запустить, в то время как при использовании вспомогательных уведомлений вы используете общий менеджер, который не требует каких-либо знаний о конкретном приложении.

Ни один из этих механизмов не позволяет добиться полноценной многозадачности. По сути, все они являются частными случаями взаимодействий между приложениями, которые запущены в традиционной многозадачной ОС. И хоть это накладывает некоторые ограничения на пользователя, фактически не является проблемой. На уровне интерфейса возможно, например, удерживая кнопку «Домой», попасть в упорядоченный список недавно использованных приложений. Вы можете быстро переключаться между приложениями благодаря тому, что они уже находятся в оперативной памяти и запускаются без задержек. Чтобы еще больше усилить иллюзию многозадачности, приложения Palm OS могут сохранять состояние.

Объединив все это, Palm OS предлагает разработчикам удивительное количество опций, с помощью которых они могут создать довольно убедительную иллюзию настоящей многозадачности. Добавьте к этому тот факт, что разработчики могут сами определять коды запуска, уведомления и вспомогательные оповещения, и вы сможете представить себе довольно продвинутые возможности.

Граффити

Невозможно говорить о Palm OS, не затронув, пожалуй, ее самую узнаваемую особенность, «Граффити» — систему распознавания рукописного текста.

Zoomer уже был оснащен функцией распознавания рукописного ввода, получившей название PalmPr, которая распознавала естественный почерк пользователя, к тому же вы могли писать в любом месте экрана. Однако работа с естественный почерком часто приводила к появлению ошибок и сильно нагружала устройство, вызывая уже описанные «зависания». Работая над Palm Pilot, Хокинс пошел по совершенно другому пути; вместо того, чтобы пытаться заставить компьютер распознавать индивидуальный почерк, почему бы нам не создать простой рукописный алфавит? Примерно так работал «стилятор», который я рассматривал в первой главе. Конечно, пользователям приходилось осваивать его осваивать, но ведь им в любом случае бы пришлось привыкать к пользованию сенсорным дисплеем.

Итак, Хокинс разработал алфавит для «Граффити». «Граффити» было простым и довольно оригинальным в том смысле, что состояло исключительно из отдельных штрихов, что значительно облегчало написание стилусом. Не могу не пошутить, что это был гениальный штрих

Пример основных символов «Граффити» | Habr

В тот вечер, когда Хокинс мастерил деревянную модель Palm Pilot, ему также пришла в голову идея создать специальную зону для письма. До этого в устройствах, выполнявших роль цифрового ассистента, писать можно было в любом месте экрана, целыми словами, слева направо. Это создавало очевидные проблемы, которые я могу лично подтвердить, а именно: не хватает места. Дисплеи обычно довольно маленькие, а сенсорные панели недостаточно чувствительны к мелкому почерку, поэтому для обеспечения надлежащего распознавания вы, как правило, пишете крупнее. Следствием этого является то, что чаще всего вам приходится обрывать запись на полуслове, потому что вы упёрлись в край экрана.

Хокинс разработал концепцию записи всего текста по буквам, одну за одной. Запись каждой буквы одним штрихом позволяла системе «понимать», что всякий раз, когда стилус отрывается от экрана, символ завершен. Область ввода была дополнительно усовершенствована за счет разделения ее на две области: одну для букв, другую для цифр. Проведение стилусом по разделительной линии между этими двумя областями означало переключение в верхний регистр.

Панель ввода Palm Pilot | Wikimedia

Система «Граффити» пользовалась успехом еще до выхода первой версии Palm Pilot. Palm выпустила Graffiti для Apple Newton, чья встроенная система распознавания штрихов оставляла желать лучшего. Также она стала основной для устройств под управлением GEOS, например от HP; устройств на основе оболочки Magic Cap. В сочетании с лицензированием HP своего программного обеспечения для синхронизации, это позволило Palm получать некоторый доход в период между отказом Zoomer и появлением Palm Pilot.

К сожалению, патентные иски существовали в компьютерной индустрии и в середине 90-х. Xerox заявила, что у нее есть патент на алфавиты с символами, рисующимися одним штрихом, и успешно подала на Palm в суд из-за «Граффити», хотя алфавит в патенте мало похож на граффити. Тяжба длилась долго, но в 2004 году Palm в конечном итоге была вынуждена выплатить Xerox 22,5 миллиона долларов издержек.

Чтобы обойти претензии Xerox и не потерять больше денег, в 2003 году Palm изменила «Граффити», представив вторую версию. По большей части они разрабатывали новый алфавит не сами. Они лицензировали систему распознавания рукописного текста Jot от Communication Intelligence Corporation, улучшили ее и назвали «Граффити 2». Новая система появилась в Palm OS 5.2 для устройств ARM и Palm OS 4.1.2 для устройств с процессорами Motorola.

Сравнение версий Граффити | Wikipedia

Самым большим изменением стало появление некоторых символов, которых теперь приходилось «набирать» двумя штрихами. Это сделало символы более похожими на их обычные письменные аналоги, но в то же время увеличило количество потенциальных ошибок при написании. По сей день у меня часто не получаются символы состоящие из двух штрихов

ACCESS, последний владелец Palm OS, предлагал систему «Граффити» и для операционной системы Android. Как ни странно, первую версию. Я предполагаю, что либо лицензионные сборы не относились к реализациям, отличным от Palm OS, либо срок действия патента уже истёк на тот момент.

Пользовательский опыт

Теперь, когда я рассмотрел некоторые низкоуровневые аспекты Palm OS, которые показались мне интересными, я хочу подробнее рассказать про пользовательский опыт этой системы. В отличие от технических деталей, которые я рассматривал до сих пор, это скорее субъективная тема, которая в большей степени основана на личном опыте, интерпретациях и ожиданиях. И, возможно, несколько приукрашена ностальгией. Как и в случае с техническими подробностями, я не собираюсь описывать все, сосредоточившись вместо этого на нескольких вещах, которые бросаются мне в глаза.

Прежде всего, самой важной характеристикой Palm OS (по крайней мере, на мой взгляд) является скорость взаимодействия с пользователем. Я уже рассказывал о том, как далеко инженеры Palm OS были готовы зайти в стремлении к быстродействию, и о том, насколько этот вопрос был важен для самого Джефа Хокинса. Он хотел, чтобы Palm конкурировал с бумагой и ему это безусловно удалось.

Несмотря на архаичность аппаратного обеспечения, на котором работала Palm OS, по сравнению с современными смартфонами, почти все, что вы хотели сделать, происходило мгновенно. Иногда кажется, что Palm OS реагирует еще до того, как вы нажмете на кнопку. Конечно, это не так, но ощущения именно такие. Я знаю только одну операционную систему, которая так же отзывчива, как Palm OS, и эта операционная система, по иронии судьбы, тоже сгинула.

Моим основным устройством для тестирования и работы с Palm OS является Palm Tungsten E2 – последний КПК Palm в «классическом», не раздвижном корпусе, который имеет SDIO, Bluetooth, ИК-порт и работает под управлением последней версии Palm OS 5.4 Garnet. Он использует процессор Intel XScale PXA 255 с частотой 200 МГц (да, ARM-процессор от Intel) с 32 МБ оперативной памяти, и все, что вы делаете в Palm OS, выполняется мгновенно.

Несмотря на то, что технически это новейший и практически самый совершенный из когда-либо созданных КПК Palm (в T | X того же 2005 года используется PXA 270), его вычислительная мощность ничтожно мала по сравнению с многоядерными процессорами, которые мы используем сегодня. Тот факт, что наши современные операционные системы для смартфонов действительно нуждаются во всей этой мощности и все еще не так отзывчивы, как Palm OS, говорит сам за себя.

Tungsten E2, по форме напоминающий Palm V | Trashbox

Все это прекрасно, но что произойдет, если мы сделаем шаг назад во времени и технических характеристиках и посмотрим на Motorola 68000? У меня есть Sony CLIÉ SL10 под управлением Palm OS 4.1, которая использует DragonBall VZ с частотой 33 МГц и всего лишь 8 МБ оперативной памяти и памяти для хранения данных. На этом устройстве Palm OS также работает мгновенно. На самом деле операционная система реагирует настолько хорошо, что дисплей становится узким местом; PEG-SL10 оснащен монохромным дисплеем 320×320, изготовленным по дешевой технологии STN и его время отклика отстаёт от дисплеев TFT. Он просто не может угнаться за Palm OS.

Как пользователь Palm OS, вы ожидали, что все будет происходить быстро. Вы могли распознать «инородное» приложение за милю, и не только потому, что оно выглядело по-другому и не умело общаться через уведомления и коды вызовов с другими программами, но и потому что такие «инородные» приложения не соответствовали принципу «быстрее бумаги» и, следовательно, были гораздо менее отзывчивыми. Я искренне верю, что мое почти воинственное стремление к согласованности между приложениями в операционной системе отчасти связано с моими днями жизни в качестве пользователя Palm OS, потому что то, что выглядит неуместно, вероятно, будет медленным и громоздким.

Palm OS была быстрой не только по современным стандартам, но и по сравнению со своими конкурентами. Windows PocketPC (Windows Mobile) была основным конкурентом Palm OS на протяжении большей части ее существования, но когда дело доходит до скорости и отзывчивости, Pocket PC по сравнению с Palm OS просто смехотворен. Как я уже упоминал, я был активным пользователем Pocket PC, и у меня действительно был iPAQ с таким же процессором, как у Tungsten E2, но он часто меня разочаровывал из-за регулярных крутящихся курсоров ожидания.

Однако, позже Palm начала испытывать все больше и больше проблем при попытках расширить функциональность операционной системы. Wi-Fi, например, казался отдельным устройством, худо-бедно прилаженным к КПК; подключение к сети было невероятно медленным, и, чтобы сэкономить заряд батареи, он отключался каждый раз, когда устройство переходило в спящий режим. Подключение к сети через Bluetooth вообще требовало от компьютера установки специального программного обеспечения, эмулировавшего модем!

Ситуация с браузерами в Palm OS также была полной катастрофой. Доступные браузеры, как правило, плохо отображали веб-сайты, а появившаяся позднее Opera mini, работавшая через прослойку Java, требовала самой последней версии ОС и была нестабильной. В целом все, что требовало прямого подключения к Интернету, работало медленно — будь то загрузка веб-страницы или проверка и скачивание новых электронных писем.

Это легко объяснимо: когда создавалась Palm OS, интернет и Wi-Fi находились в зачаточном состоянии, поэтому на них не обращали внимания на протяжении большей части разработки операционной системы. Соединение с интернетом происходило через основной модем компьютера, при подключении через док-станцию. Когда стало ясно, что и Wi-Fi, и просмотр веба важны для мобильных устройств, Palm уже создала отдельную компанию для разработки Palm OS, что усложнило добавление поддержки новых аппаратных особенностей. Мы вернемся к развитию Palm OS после версии 5.4 в следующей главе.

Дзен palm os

Последний аспект Palm OS, на котором я хотел бы остановиться подробнее, — это то, что сама Palm называет «Zen of Palm». Дзен в Palm — это одна из главных причин, по которой платформа стала такой успешной. Это определило каждый элемент операционной системы, от ее ориентации на скорость до дизайна самих приложений. Давайте посмотрим, что это значит.

Одна из целей разработки оригинального Palm Pilot и последующих КПК, как я уже говорил, заключалась в том, чтобы вместо конкуренции с обычным компьютером, конкурировать с бумагой (например, с бумажным ежедневником, адресной книгой и так далее). Это означало не только то, что система должна была быть быстрой, но и то, что она должна была быть простой, понятной и ориентированной на решение задач. Все это вместе взятое определялось философией дизайна под названием «Дзен Palm OS»

Наиболее важным аспектом «Дзена» является то, что, когда речь заходит о портативных вычислительных устройствах, не всегда больше функций = лучше.

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

Компания Palm осознала, что для создания успешного портативного устройства ей необходимо было нарушить существовавшее в то время правило: чем больше, тем лучше. Поэтому Джеф принял два очень смелых решения. Во-первых: реализовать лишь очень небольшой набор функций, необходимый клиентам. Во-вторых: перенести на второй план важность таких характеристик, как скорость процессора и объем оперативной памяти.

Отказавшись от попыток угнаться за новыми функциями и техническими характеристиками, Palm смогла сосредоточиться на том, что, по ее мнению, является «сущностью карманных компьютеров», сводимой к пяти основным принципам:

  1. Портативные устройства отличаются высокой скоростью работы. Очевидный вывод: портативные устройства должны быть быстрыми и отзывчивыми. Пользователей не интересуют технические характеристики, их интересует только то, смогут ли они быстро выполнить свой запрос, не отвлекаясь от основного занятия;
  2. Слишком большое количество функций расстраивает пользователей. Отвлекает их от основной задачи, которую они хотят выполнить;
  3. Пользователь портативного устройства не должен беспокоиться о времени автономной работы. Современные смартфоны обогатились функциями и мощным аппаратным обеспечением, но технологии изготовления аккумуляторов едва позволяют им держать заряд в течении дня;
  4. Портативные устройства должны быть удобными для ношения. Ваш карманный компьютер должен быть действительно карманным и лёгким. Однако универсального «правильного размера» не существует. Возьмем, к примеру, устройства Galaxy Note – они, как правило, пользуются большей популярностью у женщин, чем у мужчин. Причина проста: многие женщины носят с собой сумочку;
  5. Карманные компьютеры ориентированы на пользователя. Последнее является философским сочетанием четырех предыдущих правил.

Когда Microsoft поместила логотип Palm в центр перекрестия и поклялась уничтожить компанию, они думали, что смогут сделать это единственным известным им способом. Microsoft занималась разработкой программного обеспечения для ПК, поэтому они решили, что смогут сокрушить Palm за счет все большего количества функций и все более совершенных спецификаций. Эта тактика сработала у Редмонда в сфере ПК, так почему бы ей не сработать на рынке портативных устройств?

Сравнение Pocket PC и Palm OS, 2002 год | PalmQ

Palm знала, почему: модели использования портативных устройств прямо противоположны моделям использования персональных компьютеров. Карманные компьютеры используются очень часто, но короткими перерывами для быстрого выполнения небольших задач. С другой стороны, ПК используются реже, но сеансы работы пользователей значительно длиннее, а задачи, как правило, более сложные и требовательные. Palm OS была разработана для использования в портативных устройствах, а Windows Mobile — нет.

Из-за обилия функций, которые Microsoft бессистемно внедряла в Windows Mobile, работа пользователей была медленной, сложной и вызывала разочарование. Производители пытались решить эту проблему с помощью более быстрого оборудования, но это значительно сокращало время автономной работы. Тогда КПК Pocket PC получили более емкие аккумуляторы, что сделало их более громоздкими и тяжелыми. Windows Mobile вошла в полосу неудач и обратного пути не было. В результате Palm OS стала доминировать на рынке портативных устройств.

Palm призывала разработчиков придерживаться подхода «Дзен» к дизайну приложений. Я не собираюсь подробно описывать все советы, которые давала Palm, но есть несколько, которые я хотел бы выделить. Я настоятельно рекомендую вам, особенно если вы являетесь разработчиком мобильных приложений, прочитать этот документ целиком, поскольку сегодня он так же актуален, как и двадцать лет назад.

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

«Вам не нужно отрезать куски от 100 процентов,» — отмечали в Palm, — «вы начинаете с нуля и постепенно продвигаетесь вверх. Начните с нуля и добавляйте только самое необходимое — одно за другим».

В связи с этим возникает второй вопрос: как определить, эти «основные функции»? Согласно Palm, вы выбираете проблемы, которые будет решать ваше приложение, находите простейшие методы для каждой из них и больше ничего не нагромождаете. При этом часто лучше ограничиться использованием только проверенных технологий, а не использовать тяжелые фреймворки потому, что они новые и классные. Используйте каждый метод только тогда, когда он решает заданную проблему.

Хотя вы можете спросить своих клиентов, что они ищут, в Palm отмечают, что они «не всегда понимают ограничения технологий и последствия их использования». Они не понимают, что реализация в точности того, что они представили в своей голове, может быть довольно неудобной. Если вы не можете реализовать какую-либо функцию удовлетворительным образом, не внедряйте ее. Или попробуйте найти альтернативное решение, используя современные технологии. Другими словами, не думайте о том, чего хотят пользователи; подумайте о способах решения их основных проблем.

Palm также ссылается на хорошо известное правило 80/20 — сосредоточьтесь на том, что делают пользователи в 80% случаев, и игнорируйте остальные 20%. Это, конечно, может повредить вариантам использования, но позволит вам сосредоточиться на том, что важно для большинства ваших пользователей.

«Нажатие кнопки «Ежедневник» приведет вас к текущей дате.» — говорят в Palm, — «Почему? Потому что в подавляющее количество пользователей хотят видеть то, что у них запланировано на сегодня».

Рекомендовалось также разбивать ваше приложение на более мелкие и специализированные приложения там, где это возможно. Несколько устройств на Palm OS поставлялись с DataViz Documents To Go, который представлял собой монолитный мобильный офисный пакет с приложением для обработки текста, работы с электронными таблицами и презентациями в одном флаконе. Лично я никогда не понимал, почему в DataViz просто не создали три отдельных, меньших по размеру и более быстрых приложения, используя упомянутые ранее механизмы искусственной многозадачности, позволяющие им взаимодействовать. Documents To Go — это явный пример несоответствия философии Palm.

Как только вы определитесь с основным набором функций, пользовательский интерфейс вашего приложения должен свести количество шагов необходимых для их выполнения к абсолютному минимуму, а менее используемые и ориентированные на опытных пользователей функции должны быть скрыты в настройках и строке меню приложения. Palm также призывает разработчиков придерживаться рекомендаций по пользовательскому интерфейсу, чтобы каждое из приложений управлялось одинаковыми способами. И, наконец, предполагается, что вы должны «радовать» пользователя, правда не уточняется, каким именно способом.

Граффити Palm на самом деле является прекрасным примером, который охватывает почти все аспекты «дзена» Palm. В то время рынок требовал полного естественного распознавания рукописного ввода (т.е. распознавания собственного почерка любого пользователя), это требовало огромных вычислительных мощностей, так что устройства становились больше, но по-прежнему были медленными, и, как правило, распознавание было отстойным (я смотрю на тебя, Newton).

В Palm поняли, что вместо того, чтобы «понять как заставить работать естественное распознавание рукописного ввода», реальная проблема заключалась в том, чтобы «вводить текст на портативном компьютере». И вам вообще не требовалось естественное распознавание рукописного текста – простой алфавит, который было легко выучить, был лучшим решением.

Несмотря на превосходный метод ввода, Palm OS по-прежнему сосредоточена на постукивании стилусом в качестве основного метода ввода при использовании устройства. Newton, напротив, включал в себя очень интересные функции, такие как распознавание записанного времени, дат и ключевых слов для организации встреч или поиска контактов, но в сочетании с плохим распознаванием рукописей в Newton это работало гораздо хуже, чем простое нажатие стилусом. Сосредоточившись на основной проблеме, а не на факторе крутости, Palm пришла к превосходному, хотя и менее броскому решению.

Я думаю, вы, заметили, что многие идеи из «Дзена Palm OS», похоже, нашли свое применение в iPhone. Я не думаю, что это совпадение. Я убежден, что первоначальные разработчики iPhone и iOS были очень хорошо осведомлены о Palm OS в целом. Ознакомившись с руководством по пользовательскому интерфейсу iOS, вы столкнетесь со многими схожими идеями, концепциями и подходами к разработке приложений и операционной системы.

И в этом, разумеется, нет ничего плохого. На самом деле все совсем наоборот. В «Дзене» даже специально объясняют, что изучать продукты ваших конкурентов — это хорошее занятие, потому что вы можете учиться не только на том, что они делают неправильно, но и на том, что они делают правильно. Palm OS/Pilot имеет много общего с iOS/iPhone не только в работе, подходах и философии дизайна, но и в их роли в создании новой категории устройств и преобразовании всей индустрии.

Я был бы удивлен больше, если бы инженеры Apple не позаимствовали многое из Palm OS, Palm Pilot и философии Palm. В конце концов, Palm была одной из самых успешных компаний, производящих портативные устройства всех времен. Palm не создавала рынок, а совершенствовала его. iPhone не создал рынок, он усовершенствовал его. Сходств множество.

Тем не менее, различия также очевидны. В то время как Palm OS стремилась к единообразию пользовательского интерфейса, iOS никогда по-настоящему не заботилась об этом. Кроме того, «аналоговый» дизайн iOS (да, я имею в виду «скевоморфизм») никогда не появился в Palm OS; Palm сочла бы его бесполезной ерундой, которая только ухудшила бы восприятие пользователем. Хотя, возможно, поэтому в Apple отказались от него с течением времени. Но мне не нравится и другая крайность — строгая минималистичность.

Интерфейс iOS 6, по которому многие скучают

Наследие

Итак, каково наследие Palm OS? Какой след она оставила? Как повлияла на индустрию?

Palm OS показала индустрии, как должна выглядеть мобильная операционная система для рядового потребителя, как она должна работать и на что она должна быть способна, и, что более важно, на что не должна быть способна. Потребители не хотели MS-DOS с возможностью ввода с помощью стилуса. Потребители не хотели разбираться в запутанной метафоре с записными книжками, которую использовали GO и Apple. Потребители не хотели, чтобы интерфейс настольной операционной системы был втиснут в маленький экран. Потребители не хотели иметь дело с управлением многозадачностью и связанными с этим сложностями. Потребители не хотели медленного и неудобного распознавания рукописного текста.

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

Сложите все это вместе, и почти 30 лет назад вы получили бы Palm OS.

Несмотря на большой прогресс в аппаратном обеспечении, современные мобильные платформы по-прежнему сталкиваются с теми же компромиссами, с которыми изначально приходилось сталкиваться Palm, и они по-прежнему пробуют разные варианты.

Очевидно, что iOS ближе к Palm OS в том, что касается удобства использования, а не функциональности, в то время как Android гораздо ближе к Windows Mobile в количестве возможностей, но несколько упускает из вида пользовательский опыт. Обратите внимание, что это не обязательно плохо — это просто компромисс. Несмотря на то, что Android может выглядеть немного неряшливее и менее совершенно, его большой набор функций и невероятная универсальность с лихвой компенсируют это. Вы сами решаете, что для вас важно, и пока что подавляющее большинство людей выбирают гибкость и функциональные возможности.

И это интересно, потому что раньше они принимали обратное решение, ведь на рынке доминировала Palm OS. Я лично отдаю выбор Windows Mobile, когда речь заходит о КПК, и это может показаться странным, учитывая все, что я написал до сих пор. Однако я предпочел Windows Mobile именно из–за ее универсальности и множества функций; я принимал неоптимальный пользовательский интерфейс и время автономной работы как должное, потому что в любом случае в основном пользовался карманным компьютером дома.

Мне грустно, что Palm OS мертва. Я провел много исследований для этой статьи и наткнулся на множество интересных вещей, которые заставили меня понять, что Palm OS была гораздо менее устаревшей и негибкой, чем я думал изначально. Действительно ли Palm OS должна была умереть? Был ли нужен переход к Web OS? Или в старой версии еще была жизнь?

Мы вернемся к этому в следующей части. Там же, я хочу обсудить темы, которых не касался до сих пор: Palm OS и лицензирование, а также вклад других производителей оборудования в разработку платформы.

Это третья часть перевода статьи Palm: I’m ready to wallow now.

Первая часть: Что предшествовало компании, сформировавшей индустрию смартфонов

Вторая часть: Победа над Microsoft и 4 устройства, сформировавшие вектор развития




Moscow.media
Частные объявления сегодня





Rss.plus




Спорт в России и мире

Новости спорта


Новости тенниса
ATP

Российский теннисист Медведев обыграл Мпетши-Перрикара во втором круге турнира ATP в Дубае и прошел в четвертьфинал






Автоблогера Венгалби арестовали за попытку дать взятку инспектору ДПС

Дорогомиловский суд арестовал автоблогера Wengallbi по делу о взятке

АО «СПбМТСБ» переименовали в АО «Петербургская Биржа»

Асфальтирование в Ленинградской области: где найти подрядчика?