iPad OS: взгляд разработчика

Стив еще не покинул сцену в Buena Yerba (концертный зал в Сан-Франциско), но бета-версию iPhone SDK 3.2, предназначенную для разработки программного обеспечения для iPad, уже можно было скачать с сайта Apple, и многие тысячи программистов и руководителей софтверных компаний уже скачивали ее.

Увидеть этот SDK на сайте Apple могут только разработчики, официально зарегистрированные в iPhone Developer Program. В эту программу, участие в которой платное, принимаются не все желающие — в течении недели, а то и дольше, подавшие заявление проверяются.

Что именно проверяет Apple, в точности неизвестно — скорее всего, проверяются черные списки компании, возможно — что-то еще. Имеют ли они право это делать? Увы, имеют. Это их «песочница», и они имеют полное право выбирать, с кем в ней «играть». За исключением временного отладочного периода, я не знаю ни одного случая, чтобы кому-то отказали.

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

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

В состав iPhone SDK 3.2 входит iPad Simulator, подробная имитация устройства, до выхода которой в свет остается почти два месяца. Аналогичная программа, iPhone Simulator, входит в состав iPhone SDK.

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

1. Блеск и нищета симуляции

Тем не менее, было бы преувеличением утверждать, что число «державших в своих руках» волшебную интернет-прокладку от Apple выросло до десятков тысяч.

Во-первых, симулятор не устройство, а его имитация. Более того, имитация даже не самого устройства, а его операционной системы.

Приложения для iPhone в iPhone-симуляторе ведут себя иначе, чем на реальном устройстве. В release notes каждого нового релиза SDK сообщается, что «симулятор теперь еще точнее имитирует реальные устройства». Этим уточнениям нет конца, и никогда не будет.

Воссоздать физическое устройство с абсолютной точностью... можно. Но долго, дорого и, по большому счету, незачем. Симулятор (даже не эмулятор) создан не для этого, и со своими задачами он справляется.

Сказанное про iPhone-симулятор относится и к iPad. С некоторыми уточнениями.

В нашем распоряжении самая первая «почти публичная» версия iPad-симулятор. О возросшей точности имитации iPad еще не было ни разу написано ни в одних release notes. В iPad процессор нового поколения, и несмотря на отмеченное многими внешнее сходство iPad с iPhone и iPod touch, конструктивно он отличается от них.

Поэтому, если что-то не работает в симуляторе, или работает не так, как надо, делать далекоидущие выводы о реальном iPad преждевременно. Что-то работает или не работает не на iPad, а в iPad Simulator.

Во-вторых, симулятор «висит» в безвоздушном виртуальном пространстве, у него нет ни веса, ни габаритов, ничего: это имитация. Почти иллюзия. А это один из тех случаев, когда «физика» имеет решающее значение.

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

К тому же, это самая-самая первая бета нового SDK. То есть, и SDK, и система, и ее библиотеки — все еще в работе. От беты к бете неизбежны многочисленные изменения, возможны дополнения и изъятия. Документация, опубликованная на страничках iPhone Developer Connection и доступные только «избранным», помечена как предварительная.

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

Технология разработки программного обеспечения для iPad и для iPhone почти идентична. То есть, ломать привычки, и переучиваться «с нулевой точки», не придется.

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

Слова и буквы те же самые, но теперь, с их помощью, можно написать то, о чем мы не могли и мечтать.

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

iPad — чистая страница, целая книга чистых страниц. Некоторые из них, пока очень немногие, заполнены «карандашными набросками», и нет пока ничего устоявшегося и сковывающего фантазию...

Алан Кэй, разработчик языка SmallTalk и современной парадигмы объектно-ориентированного программирования, устраиваясь на работу в Palo Alto Research Center корпорации Xerox, был умышленно выведен из себя хитро подобранными вопросами — и вспылив, заявил примерно следующее: «Лучший способ предсказать будущее — изобрести его»...

2. О неумножении сущностей

У «классических» тачпадов от Apple (iPhone и iPod touch), и у «гигантских» тачпадов типа iPad, операционная система одна и та же. Как и ожидалось. Да и намеки на это обстоятельство делались Apple, может невольно. Например, в недрах бета-версий нынешней iPhone OS 3.1 упоминалось загадочное устройство по имени iPad.

Не в традициях Apple «множить сущности без необходимости» — и все, что может быть унифицировано, Apple унифицирует. Операционная система для всех Маков, от mini до Mac Pro — одна. Существующая в единственном исполнении, которое Джобс, в шутку, назвал однажды Ultimate. В каждой шутке есть доля шутки.

У Mac OS X только две разновидности — собственно Mac OS X, и Mac OS X Server, и вторая разновидность тоже одна, для всех поддерживающих ее Маков, от сервера на базе mini до Xserve, включая все непортативные модели и их модификации.

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

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

Этот же подход используется и для «тачпадов». В момент установки и при запуске, устройство автоматически включает нужную «ветвь», и использует ее. И если через какое-то время появятся модели подобных устройств с принципиально другой архитектурой процессора или процессоров, пользователи могут об этом даже не узнать. Мало ли почему новая модель работает быстрее? Могло ли быть наоборот?

Похоже, даже название у нее останется прежним: iPhone OS. Мне это не нравится. iPad очень часто называют «большим iPhone». Умные в шутку. Но мне кажется, что человечество необратимо глупеет, с фантастической скоростью. Поймут не все.

iPad — это вовсе не «большой iPhone». Мобильный телефон или КПК весом в 3/4 кг с размерами iPad — нонсенс. Это мультитач-компьютер, первый в истории.

Общая система с названием iPhone OS умножит число заблуждающихся. Да, iPhone был первым. Да, название iPhone OS раскручено. И те, кому название «операционки» нужно для нелегкой мужской работы по ее развитию (developers), все поймут как надо.

Но, в конце концов, название — это и в самом деле пустяк. И поменять его на что-то более удачное будет несложно. На полпути между Кузьминками и Текстильщиками, недалеко от меня, в здании бывшего универсама, лет десять находился магазин «Барокко Декор». Это был супермаркет, большей частью продуктовый. Ни барокко, ни декора там не было и близко. И — ничего. Это был хороший супермаркет, его до сих пор вспоминают.

Бета-версия iPhone OS 3.2, в настоящий момент, поддерживает только iPad. Но ее универсальный релиз не за горами. Может быть, одна из бета-версий, в ближайшие месяцы, будет работать и на классике мультитач-устройств. И многие из ее новых возможностей, неминуемо, придут и на iPhone/iPod touch. Не все, некоторые так и останутся уникальной особенностью больших устройств...

3. Одним глазком в будущее...

iPad не смартфон, и не КПК. Это компьютер.

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

Программы iPad способны обмениваться друг с другом информацией. Собственно, начиная с iPhone OS 3.0, это уже было возможно: с помощью буферов обмена — но это новшество так и не стало популярным. Буфер обмена — сущность эфемерная, его содержимое запросто может быть утрачено — теперь есть простой, надежный и естественный способ.

Доступная всем программам директория. Что может быть проще? Я почти уверен, что такая директория появится и на классических тачпадах — почему бы нет?

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

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

Многооконный интерфейс с перекрытием окон, внедрение которого в устройство с большим экраном, чем у iPhone, предсказывали, та и не случился.

iPad большой и многообещающий, но большой он только относительно других тач-устройств. На самом деле, это очень компактная машинка, с толщиной корпуса в полдюйма.

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

Apple, как всегда, от комментариев воздерживается.

4. Память и многозадачность

Некоторые принципы, упрямо отстаиваемые инженерами Apple, вызовут критику — например, запрет на одновременное исполнение нескольких программ. Я бы тоже хотел иметь возможность запустить сразу и Pages, и Numbers, и следить при этом за клиентом электронной почты...

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

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

У больших компьютеров есть время и силы сделать так, чтобы оперативная память казалась бесконечной. Секрет фокуса прост: данные в памяти, которые не были востребованы дольше всего, выгружаются на диск — как только очередной запрос на выделении участка памяти становится невыполнимым. Место, которое занимали удаленные из памяти данные, освобождается, и используется.

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

Неслучайно в последнее время лозунг Think Different, подзабытый было в середине нулевых, снова входит на Apple в моду. Разработчики iPhone OS заботу о памяти переложили на прикладных разработчиков. Все просто, как бутерброд с сыром. Когда объем свободной памяти становится угрожающе мал, система сообщает об этом активному приложению. Если успевает.

Отреагировав на это сообщение, можно спасти приложение от неминуемого краха, но можно и не успеть. Лучше заранее сбалансировать нагрузку на память... Почему программисты, как правило, не любят искусственные журнальные головоломки?

Отказ от популярного фокуса позволил повысить быстродействие первой модели iPhone до вполне приемлемого уровня. Разработчики не разочаровали. Программы сидят на iPhone как влитые. Всемирное поглупение обошло эту группу сапиенсов стороной.

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

Представьте себе, что такого запрета нет. Пользователь запустил приложение А, потом — приложение Б, потом — приложение В... Если все они должны одновременно находиться в оперативной памяти, ее коллапс наступит значительно быстрее. Если выгружать из оперативной памяти неактивные приложения, и загружать активное, время на переключение будет уходить немалое, на это уйдут силы процессора и заряд батареи...

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

Оба запрета унаследованы в iPhone OS 3.2...

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

На сопровождение запуска и выключения, приложениям для iPhone отводится по пять секунд. При этом, приложение обязано не только полностью подготовиться к работе, или «культурно» освободить память, запомнив введенное пользователем — но и запомнить место в программе, в котором она завершила свою работу, и при последующем запуске начать работу насколько можно близко от того места, где она была прервана.

Из программы можно запустить другую программу (запускающая будет при этом завершена), передать ей данные, и даже, если это необходимо, вернуться из нее назад, в вызывающую программу.

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

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

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

5. Другие языки

Поклонники .Net и C# готовы помочь яблочным тачпадам. Версия Mono для них уже давно готова. Я не испытываю симпатии к Microsoft, но C# и .Net вызывают у меня легкое чувство зависти. На Маках они уже давно отвоевывают себе место под солнцем, но в iPhone OS им путь закрыт.

С их помощью можно писать нелегально распространяемые приложения для iPhone OS, но в App Store их не примут. Нелегальное же распространение программ для любимых творений Стива может привести к отлучению от разработки для них.

Тем не менее, оговорка о поддержке «других языков программирования» в текстах предварительной документации... есть.

Не уточняется, правда, о каких языках идет речь.

Возможно, речь идет о поддержке C++ и «чистого Си», тем более, что для второго в iPhone SDK существует толстенный и богатейший пласт библиотек, который многие разработчики игнорируют. Возможно, речь идет и об Objective-C++.

Помимо C-образных языков, в программах для iPhone OS, причем, абсолютно и совершенно легально, можно использовать и ассемблер ARM. Но едва ли его можно назвать «другим языком».

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

Поживем — увидим.

Олег Свиргстин
Software Director
iPhone Developers EAST

Источник: Олег Свиргстин