Rambler's Top100
DeepHome
22.11.2007  00:00
Внутри "Леопарда". Часть 2. В лучших традициях Apple.
Библиотеки и технологии, разработанные Apple, легко узнаваемы. В них чувствуется какой-то необъяснимый "яблочный" дух. В "Леопарде" - как ни в одной другой версии Mac OS X. Пристальное внимание уделяется не только функциональной стороне дела, но и... красоте решений. Их элегантности.

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

Нужно. Хотя бы для того, чтобы операционная система не превратилась в непроходимые дебри полунепонятной невнятицы, где без проводника не ступишь и шага в сторону от наезженной и почти безопасной колеи... Где для самых простых и естественных операций (вроде "настроки программ") придется обращаться за помощью к специалистам, за свои, заработанными нелегким трудом, кровные...

А еще, красивые библиотеки провоцируют программиста на... красивые решения, которые увидит пользователь.

3. Core Animation

Из внутренних инноваций, пожалуй, именно библиотеке Core Animation повезло больше всех. С ней связывают самые радужные надежды на невероятный прогресс в пользовательсикх интерфейсах маковских программ. Действительно: ненавязчиво "оживив" элементы интерфейса их можно сделать более понятными, предсказуемыми, даже предупредительными.

И визуальные эффекты... если к месту, могут быть очень полезны. Осталось разобраться, действительно ли Core Animation позволит все это совершить, так ли она хороша - и в чем ее сокровенный и уникальный смысл? Чем она лучше, например, DirectX или OpenGL? И зачем создавать что-то новое, если есть такие мощные, универсальные и широко известные, технологии?

Core Animation - вовсе не конкурент QuickTime или OpenGL. У этой библиотеки совершенно иное предназначение.

Далеко не все из успешно творящих замечательный маковский софт хорошо владеют OpenGL. Это совершенно особое ремесло. Требующее серьезной подготовки и опыта. И времени - которого у хорошего программиста обычно нет. Оно целиком и полностью уходит на решение основных задач - часто даже с избытком. А OpenGL - под боком. С примерами, установленный и настроенный на немедленную работу. И с учебниками проблем никаких.

Но результаты у большинства программистов, решивших украсить, например, окно About, захватывающей анимацией, получались не слишком замечательными. И кстати, если из 700 строк кода, обслуживающего это окно только 15-20 используются "по делу", а остальные (сложнющие) строки написанные, и в муках отлаженные - потрачены на безделицу... хорошо ли это?

А тут еще Apple, начиная с самой первой версии Mac OS X, дразнит дерзких прикладных программистов всевозможными эффектами (например, запускаемая программа "подпрыгивает" в Доке, когда какая-то из работающих программ находится на заднем фоне, но требует внимания пользователя - ее иконка в Доке тоже подпрыгивает, но по другому, и много-много других), и чуть ли не толкает на авантюры...

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

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

Приложив больше усилий, от него можно добиться значительно большего - но, тем не менее, Core Animation - не конкурент OpenGL. У Core Animation свой круг задач, и свои пользователи. Более того: Core Animation, хоть ее операции и происходят в разных "слоях", даже не трехмерная библиотека.

Принцип разумной достаточности. Очень прагматичная библиотека, и по моему, она действительно обречена на успех. Как почти все от Apple, она "просто работает".

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

4. Core Data 2.0

Core Data не представлена в списке инноваций. Эта технология дебютировала в Mac OS 10.4, и о ней достаточно много было сказано в апреле 2005 года - и в Mac OS 10.5 о ней решили промолчать. Между тем, в "Леопарде" Core Data обрела несколько новых свойств, настолько важных, что специалисты (в разговорах между собой) иногда называют ее Core Data 2.0 - и это ничуть не преувеличение.

Core Data позволяет программисту абстрагироваться от большинства подробностей, связанных с управлением моделью данных. Таких, как организация хранения данных на диске и в оперативной памяти компьютера, перемещение данных между разными типами памяти, поддержание их целостности и других подобных вещах. Такие операции отнюдь не "ядерная физика", но они достаточно сложны, трудоемки, и сопряжены с разного рода тонкостями. Творческие силы инженеров по программному обеспечению, по мнению их коллег на Apple, достойны много лучшего применения.

В Core Data структура данных определяется (в специальном графическом редакторе, встроенном в интегрированную среду разработки, а начиная с Mac OS 10.5 - и в Interface Builder) в виде набора сущностей состоящих из "свойств", "связей" и "запросов", и зависимостей между ними. Принципы их определения заставляют вспомнить системы управления базами данных с графическими редакторами структуры (например, 4D или FileMaker), а "наследование" явно заимствовано у объектно-ориентированных языков программирования.

При всей ее привлекательности, Core Data в Mac OS 10.4 не лишена недостатков. Некоторые из них, увы, останутся еще надолго: эта технология не расчитана на новичков. Для ее успешного применения, необходим приличный опыт разработки Cocoa-программ. Впрочем, и при традиционном подходе к организации работы с данными, новичкам редко поручают это ответственное дело.

А вот другой недостаток Core Data 1.0, который существенно сужал область применения этой технологии, в Core Data 2.0 устранен. В 1.0 данные можно было сохранить на диске только в одном из трех предопределенных форматов: в виде XML, в виде базы данных sqLite и в бинарном формате. Из-за этого было невозможно использовать Core Data в работе с файлами, структура которых определена вне текущего проекта - например, с файлами универсальных форматов.

Кроме того, невозможно было использовать другие системы управления базами данных - только sqLite. Про sqLite можно сказать множество хороших слов - но работа в компьютерных сетях, где высока вероятность одновременного доступа нескольких потребителей к одним и тем же данным, откровенно говоря, не ее "конек".

Теперь можно использовать "свои" схемы хранения данных... в том числе интерфейсы к несобственным файловым форматам или другим типам СУБД. На мой взгляд, это похоже на высадку человека на Луну... "такой маленький шажок для человека, и такой большой и важный - для всего человечества".

В Core Data в Леопарде внесено еще несколько полезных изменений, но, как мы уже говорили, ни они, ни радикальное расширение области применения Core Data, в список официальных новшеств не попали.

А зря.

Продолжение следует...

В лучших традициях Apple.
Источник/Source: Олег Свиргстин
(495) 933 6737 | sales@deepapple.com deepapple.com | deepstore.ru | griffintech.ru | macally.biz | xtrememac.ru | wacomstore.ru | ipodcentre.ru
Rambler's Top100 Индекс цитирования