О 64-битном Photoshop

Примерно неделю назад было довольно много шума из-за того, что Adobe заявили, что следующая версия Adobe Creative Suite 4 выйдет в 64-битной версии для Windows, а для Мака 64-битность наступит только в следующей версии, в CS5 (и когда она выйдет, естественно, никто не может сказать). Многим пользователям этого хватило в качестве повода забеспокоиться, что Adobe собирается “забросить” разработку под Mac, раз уж “самые современные разработки человечества” будут игнорировать эту платформу. Однако, это на самом деле не так, и к тому же “слухи о полезности” 64-битности несколько преувеличены.
Давайте вначале разберемся почему Adobe вдруг решила “пропустить ход” и подождать до версии выпуска версии CS5. Все дело — в “углероде”, а другими словами — в Carbon. Нет, вовсе не в Need for Speed Carbon, в который играли разработчики Adobe, и поэтому пропустили все сроки выпуска приложения. Carbon — это набор системных вызовов, который используют приложения, запускаемые на Mac OS X. Но не все приложения — а в основном те, которые пришли к нам из “классической” Mac OS.

Когда начался переход с Mac OS 9 на Mac OS X, разработчики приложений заявили Apple, что они не готовы выпускать свои программы для Mac OS X путем полного переписывания их на Cocoa — это еще одна среда для запуска приложений, которая в Mac OS X пришла из NeXT. А поскольку времена для Apple тогда были плохие, то компания не могла “разбрасываться” разработчиками, и пошла им на уступки. Набор системных вызовов из Mac OS 9 (и предыдущих версий “старой” Mac OS), который носил название ToolBox, был портирован на Mac OS X и получил название Carbon — углерод, благодаря которому существует жизнь. Так и благодаря Сarbon на Mac OS X смогли начать работать приложения, написанные для предыдущей версии Mac OS — с небольшими доработками (чтобы хоть как-то работать) или с основательной доработкой (чтобы нормально работать). Альтернативой было только переписывание приложений на Cocoa с практически нуля, что в условиях непредвиденного будущего Apple мало кто мог себе позволить в 2000 году.
Для кросс-платформенных приложений, таких как Photoshop, Google Earth или Maya, Carbon вообще оставался практически единственной возможной альтернативой, при которой можно было продолжать разрабатывать приложения для нескольких платформ сразу. Правда, выпуск по-настоящему красивого “маковского” приложения на Carbon требует бОльших усилий, чем на Cocoa.
Теперь о 64-битности. Для большинства пользователей 64-бита — некая магическая величина, в случае которой настанет как минимум двоекратное увеличение производительности, а также мир во всем мире. Однако это не совсем так. В первую очередь поддержка 64-битности в операционной системе означает возможность этой системы доступаться к более чем 4ГБ оперативной памяти и, соответственно, обрабатывать большие массивы данных.
Mac OS X, начиная с версии 10.4, стала потихоньку “перебираться” в 64-битность, сначала предоставляя возможность работать с 64-битными массивами на уровне приложений в командной строке. А на конференции разработчиков WWDC в 2006 году Apple заявила, что в Mac OS X 10.5 64-битность выйдет на новый уровень, и будет поддерживаться в API для приложений — в Carbon и Cocoa, что, собственно, открыло дорогу для разработки приложений с графическим интерфейсом, использующими 64-битность. “Ура!”, кричали программисты, и в воздух чепчики бросали. Однако, праздник длился недолго.

Уже через год, на следующей конференции WWDC 2007, Стив Джобс, рассказывая о задержке выхода Mac OS X 10.5 и о ее новых возможностях, в своей презентации показал, что одной из новых возможностей будет являться поддержка 64-битности в Cocoa, а вот Carbon куда-то из презентации Джобса подевался. И тут подозрение разработчиков на Carbon их не обмануло — когда они стали выяснять, случайно ли пропал Carbon из презентации Джобса, оказалось, что неслучайно. Apple действительно в последний момент “выбросила” поддержку 64-бит из Carbon для финальной версии 10.5.
Сказать, что это был неприятный сюрприз для программистов Adobe — это не сказать ничего. Они ведь об этом узнали точно так же, как и все остальные — из презентации Джобса. А до нее они, выпустив CS3, занимались его портированием для 64-бит, используя предварительные версии 10.5, в которых поддержка 64-бит в Carbon еще была. Честно говоря, я удивляюсь, как Adobe до сих пор не хлопнула дверью перед Apple, после всех пертурбаций последнего времени.
Вначале это был переход с “классической” Mac OS на Mac OS X, при котором Adobe пришлось попотеть, чтобы выпустить вначале Photoshop, а затем и CS для новой системы — Adobe была практически последней компанией, выпустившей свои программы для Mac OS X. Затем Apple “обрадовала” всех разработчиков переходом на Intel-процессоры, при котором Adobe пришлось не только переделывать поддержку архитектуры, но и менять инструменты разработки на Xcode. И вот теперь — новый сюрприз: чтобы Photoshop заработал в 64-битном режиме на Mac OS X, нужно выбросить бОльшую часть Сarbon-кода, и переписать его на Cocoa.
Нет, конечно, на самом деле понятно, почему Adobe до сих пор терпит эти приколы Apple — практически 40% продаж Adobe идут от версий их продуктов для Mac OS X, и так взять и избавиться от этих продаж ни один акционер компании не позволит. Да и Adobe надо было давно понять, что у Carbon нет большого будущего, и Apple вряд ли долго будет его развивать и поддерживать, и начать постепенную миграцию в сторону Cocoa.
Но с другой стороны, винить только Adobe не стоит — Apple тоже хороша. По большому счету, “слив” 64-битного Carbon из релиза 10.5 произошел из-за задержек в разработке 10.5 и переносе даты выпуска с июня на октябрь. Видимо, даже на октябрь толком не успевали, и поэтому начали “резать features”, и поэтому пострадали самые “неперспективные” возможности системы, в том числе и поддержка 64-бит в Carbon. Поэтому теперь наверняка в Adobe “чешут репу” о том, как же им с минимальными потерями и минимизацией головной боли портировать весь набор Creative Suite на Cocoa — а это огромнейший кусок работы. И поэтому результатов раньше версии CS5 ждать не стоит — а это, я думаю, будет примерно 2012 год, а то и позже.
Однако, расстраиваться раньше времени не стоит, так как полезность 64-бит для обычного пользователя обычно сильно преувеличена. Сами представители Adobe говорят о том, что Photoshop в 64-битном режиме для большинства пользователей даст прирост производительности в районе 8-12%, а по-настоящему его возможности раскроются при работе с гигантскими файлами. К примеру, на 4-ядерной машине с 32ГБ оперативной памяти в 64 битном режиме Photoshop открывает файл в 3.75 гигапикселей в 10 раз быстрее, чем в 32-битном режиме.  Однако стоит помнить, что даже самые продвинутые камеры на сегодня снимают изображения размером в 20-25 мегапикселей, что в тысячи раз меньше, чем файл, который открывали на Photoshop.
Так что как раз к выходу CS5 у вас, возможно, появятся файлы, при работе с которыми выигрыш от 64-битности будет заметен. А вот в случае с видео все не так однозначно — видеофайлы уже сегодня занимают терабайты, и очень интересно будет посмотреть, что будет делать Apple, у которой Final Cut (популярное приложение для работы с видео) написано на Carbon.