да и многозадачность была, просто не для 3rd party apps
Ну то есть не было. Как и приборов, которые мы никому не покажем.
да и вообще сравнивать мобильные платформы с десктопными некорректно
Care to elaborate? Чем дальше в лес, тем больше функционала десктопных приложений перебирается в карманы. Функциональность железа и ОС следует за этим трендом вынужденно. Да, тупо переносить некоторые решения с десктопа в карман бессмысленно (например фуллсайз клавиатуру и мышь), но это не значит что не надо разрабатывать им адекватные заменители, а не просто тупо кастрировать прикрываясь "народу это не надо".
да и многозадачность была, просто не для 3rd party apps
Ну то есть не было. Как и приборов, которые мы никому не покажем.
есть определенная разница между отсутствием многозадачности by design (DOS vs. Win3x) и невозможностью использовать ее сторонними приложениями (очевидно искусственное ограничение, которое тоже было введено из вполне рациональных соображений)
да и вообще сравнивать мобильные платформы с десктопными некорректно
Care to elaborate? Чем дальше в лес, тем больше функционала десктопных приложений перебирается в карманы. Функциональность железа и ОС следует за этим трендом вынужденно. Да, тупо переносить некоторые решения с десктопа в карман бессмысленно (например фуллсайз клавиатуру и мышь), но это не значит что не надо разрабатывать им адекватные заменители, а не просто тупо кастрировать прикрываясь "народу это не надо".
это не про "тупо кастрировать", а про другие usability patterns. и про разработку адекватных заменителей - судя по анонсу версии 4.0, эппл с тобой вполне согласен. просто для них вполне очевидный приоритет - удобство массового юзера. поэтому, например, в первом айфоне с технической точки зрения все что можно было зарезать - было зарезано под самые помидоры. принцип тут очень простой - если некая продвинутая фича может негативно повлиять на стабильность/позитивный user experience, нахуй эту фичу, пока мы не придумаем как сделать это правильно. вот они и делают.
их логику вполне можно проследить, если посмотреть последовательно разницу между 2G, 3G, 3GS и анонсированной четверкой. это совсем не про "народу это не надо", а скорее про "мы это до конца не продумали, у кастомеров могут вылезти проблемы тут, тут и тут, потребность в этой фиче есть у 5% потенциальной аудитории, поэтому НАМ это пока не надо, лучше подумаем еще и сделаем как следует".
ну а что, маркетинг у них работает отлично. продать одну и ту же технологию столько раз - это тоже надо уметь. "теперь банановый!"
а с мультитаскингом, мне кажется, ботлнеком тупо было железо. я немного ковырялся с хакнутым iPhone 2G (судя по видам, открывающимся из командной строки, там внутри что-то типа Open/FreeBSD) и, конечно, с точки зрения ОС там нет вообще никаких проблем с многозадачностью. но даже на выполнении нескольких консольных приложений деваййс тормозил так, что страшно подумать, как выглядели бы 2-3 GUI-программы, работающие одновременно. видимо, на более современных процессорах с этим стало полегче.
кроме того, как пользователь айфона могу сказать, что важность этого мультитаскинга сильно преувеличена так называемыми блоггерами. там же не многооконный GUI, и по факту в каждый момент времени пользователь все равно взаимодействует с контекстом только одного приложения. нормально написанный софт умеет вполне адекватно сохранять/восстанавливать свой стейт. фактически, неудобства возникают лишь со специфическим софтом, типа "нештатных" плееров, вроде всяких iRusRadio или SPB TV. есть еще мессенджеры, но с точки зрения экономии батарейки push notifications гораздо эффективнее, чем приложение с какой-то сложной логикой, висящее в бэкграунде и жрущее CPU. в общем, проблема многозадачности на айфоне во многом высосана из пальца, как мне кажется. что, впрочем, не отменяет того факта, что с ней лучше, чем без нее.
Оно и есть. Не совсем один в один, но для юзера и программиста это Фря.
но даже на выполнении нескольких консольных приложений деваййс тормозил так, что страшно подумать, как выглядели бы 2-3 GUI-программы
Как-то это странно. Тасксвитч сам по себе недорогая операция. Возможно раннее железо просто не имело совсем никакой аппаратной поддержки оного и все приходилось делать руками, что на небыстром процессоре доставляло. С другой стороны, системные процессы-то там вполне тасксвитчатся.
там же не многооконный GUI
Многооконный и не надо. Достаточно сделать как сделано у Pre, мне (по крайней мере на эмуляторе) очень нравится. Многозадачность (за пределами очевидной необходимости в поддержке IM) мне лично нужна, я например иногда пишу заметки, поглядывая в почту. Очень неприятно писать в нотепаде, постоянно его закрывая и запуская небыструю почту. Приходится писать как бы ответ на письмо, а потом копипастить, что попахивает немного идиотизмом. Push notifications насколько я понял реализованы тоже через поллинг. Что жрет трафик и батарейку совершенно без всякого смысла.
А ждущее приложение фактически бесплатно. Программа, заснувшая на блокирущем сисколле, не стоит н-и-ч-е-г-о. Кроме занимаемой памяти, если система не поддерживает своп.
Как-то это странно. Тасксвитч сам по себе недорогая операция.
тасксвитч конечно недорогая. я имел в виду приложения, которые все-таки что-то делали в фоне, а не просто висели в idle. вообще, ARM не самая производительная архитектура-то, а там еще и системных процессов немало - на приложения остается не так много.
Push notifications насколько я понял реализованы тоже через поллинг.
ну не совсем поллинг. там просто держится persistent connection с эппловским сервером, и если приходит notification, то сервер шлет клиенту сообщение. но наверное они еще обмениваются иногда какими-то keepalive-пакетами.
А ждущее приложение фактически бесплатно.
ну это требует определенной культуры программирования. вообще instant messenger занимается много чем, даже когда выполнятеся в фоне - шлет пинги серверу для поддержания presense-статуса, обрабатывает всякие события от сервера (типа, десериализует пакетики, пересортировывает и перерисовывает контакт-лист, если кто-то из контакт-листа изменил presense-статус и т.д.). то есть это все-таки менее тривиальная логика, чем просто ждать пакет от сервера, как в случае с push notifications.
менее тривиальная логика, чем просто ждать пакет от сервера, как в случае с push notifications.
Можно подумать что push notifications будут вместо приложения "пересортировывает и перерисовывает контакт-лист, если кто-то из контакт-листа изменил presense-статус и т.д" :-) Никто не мешает приложению, если оно ушло в фон, перестать заниматься всем этим housekeeping'ом (ибо его все равно никто не увидит), и обрабатывать только реально важные события.
Push notifications - это многозадачность для бедных. Вместо того чтобы самому спать на select()'е, мы поручаем это системе, которая покажет нам кино окно и запустит наше приложение заново. А оно в свою очередь восстановит свой контекст из заботливо сохраненных данных. То есть все тоже самое что при обычной преемптивной многозадачности, только все-все делаем сами и вручную.
Единственное что при этом существенно экономится - это оперативная память, потому что свопа-то у нас нет.
Можно подумать что push notifications будут вместо приложения
запустившись, приложение частично восстановит стейт само, частично получит недостающие данные от сервера.
Никто не мешает приложению, если оно ушло в фон, перестать заниматься всем этим housekeeping'ом (ибо его все равно никто не увидит), и обрабатывать только реально важные события.
ну, это только теоретически так. :) в реальной клиент-серверные протоколы того же IM (известные мне, во всяком случае) обычно не расчитаны на сценарии типа "сервер, я тут пойду посплю - присылай мне только вот эти события" или "сервер, я тут просунлся - расскажи, чего тут было без меня". так что сервер будет слать в коннекшн всё подряд, и чтобы отличать важные пакеты от неважных нужно обрабатывать абсолютно все (что само по себе может быть не очень дешево, особенно если там еще криптография или надо парсить какой-нибудь XML). кроме того, все события (даже если и не визуализировать их) все равно надо складывать в некую очередь и как-то менеджерить ее (чтобы при выходе из айдла не разбирать все накопившиеся события, а получить актуальное состояние). и т.д..
то есть решения, конечно, есть (особенно если писать какой-то софт с нуля и изначально заморачиваться под мобильные платформы), но боюсь, что в реальности во многих случаях дешевле поддержать тупые push notifications. :)
так ограничения на многозадачность и были сделаны из соображений экономии памяти, насколько я понимаю. а почему их эппл так странно озвучивал - хз, чужая душа потемки.
no subject
Date: 2010-04-10 11:55 am (UTC)no subject
Date: 2010-04-10 12:24 pm (UTC)треды-то там, например, были с самого начала, да и многозадачность была, просто не для 3rd party apps.
(да и вообще сравнивать мобильные платформы с десктопными некорректно, но это чуть отдельная тема)
no subject
Date: 2010-04-10 12:33 pm (UTC)Ну то есть не было. Как и приборов, которые мы никому не покажем.
да и вообще сравнивать мобильные платформы с десктопными некорректно
Care to elaborate? Чем дальше в лес, тем больше функционала десктопных приложений перебирается в карманы. Функциональность железа и ОС следует за этим трендом вынужденно. Да, тупо переносить некоторые решения с десктопа в карман бессмысленно (например фуллсайз клавиатуру и мышь), но это не значит что не надо разрабатывать им адекватные заменители, а не просто тупо кастрировать прикрываясь "народу это не надо".
no subject
Date: 2010-04-10 07:44 pm (UTC)есть определенная разница между отсутствием многозадачности by design (DOS vs. Win3x) и невозможностью использовать ее сторонними приложениями (очевидно искусственное ограничение, которое тоже было введено из вполне рациональных соображений)
это не про "тупо кастрировать", а про другие usability patterns. и про разработку адекватных заменителей - судя по анонсу версии 4.0, эппл с тобой вполне согласен. просто для них вполне очевидный приоритет - удобство массового юзера. поэтому, например, в первом айфоне с технической точки зрения все что можно было зарезать - было зарезано под самые помидоры. принцип тут очень простой - если некая продвинутая фича может негативно повлиять на стабильность/позитивный user experience, нахуй эту фичу, пока мы не придумаем как сделать это правильно. вот они и делают.
их логику вполне можно проследить, если посмотреть последовательно разницу между 2G, 3G, 3GS и анонсированной четверкой. это совсем не про "народу это не надо", а скорее про "мы это до конца не продумали, у кастомеров могут вылезти проблемы тут, тут и тут, потребность в этой фиче есть у 5% потенциальной аудитории, поэтому НАМ это пока не надо, лучше подумаем еще и сделаем как следует".
no subject
Date: 2010-04-11 09:42 am (UTC)а с мультитаскингом, мне кажется, ботлнеком тупо было железо. я немного ковырялся с хакнутым iPhone 2G (судя по видам, открывающимся из командной строки, там внутри что-то типа Open/FreeBSD) и, конечно, с точки зрения ОС там нет вообще никаких проблем с многозадачностью. но даже на выполнении нескольких консольных приложений деваййс тормозил так, что страшно подумать, как выглядели бы 2-3 GUI-программы, работающие одновременно. видимо, на более современных процессорах с этим стало полегче.
кроме того, как пользователь айфона могу сказать, что важность этого мультитаскинга сильно преувеличена так называемыми блоггерами. там же не многооконный GUI, и по факту в каждый момент времени пользователь все равно взаимодействует с контекстом только одного приложения. нормально написанный софт умеет вполне адекватно сохранять/восстанавливать свой стейт. фактически, неудобства возникают лишь со специфическим софтом, типа "нештатных" плееров, вроде всяких iRusRadio или SPB TV. есть еще мессенджеры, но с точки зрения экономии батарейки push notifications гораздо эффективнее, чем приложение с какой-то сложной логикой, висящее в бэкграунде и жрущее CPU. в общем, проблема многозадачности на айфоне во многом высосана из пальца, как мне кажется. что, впрочем, не отменяет того факта, что с ней лучше, чем без нее.
no subject
Date: 2010-04-11 08:09 pm (UTC)Оно и есть. Не совсем один в один, но для юзера и программиста это Фря.
но даже на выполнении нескольких консольных приложений деваййс тормозил так, что страшно подумать, как выглядели бы 2-3 GUI-программы
Как-то это странно. Тасксвитч сам по себе недорогая операция. Возможно раннее железо просто не имело совсем никакой аппаратной поддержки оного и все приходилось делать руками, что на небыстром процессоре доставляло. С другой стороны, системные процессы-то там вполне тасксвитчатся.
там же не многооконный GUI
Многооконный и не надо. Достаточно сделать как сделано у Pre, мне (по крайней мере на эмуляторе) очень нравится. Многозадачность (за пределами очевидной необходимости в поддержке IM) мне лично нужна, я например иногда пишу заметки, поглядывая в почту. Очень неприятно писать в нотепаде, постоянно его закрывая и запуская небыструю почту. Приходится писать как бы ответ на письмо, а потом копипастить, что попахивает немного идиотизмом.
Push notifications насколько я понял реализованы тоже через поллинг. Что жрет трафик и батарейку совершенно без всякого смысла.
А ждущее приложение фактически бесплатно. Программа, заснувшая на блокирущем сисколле, не стоит н-и-ч-е-г-о. Кроме занимаемой памяти, если система не поддерживает своп.
no subject
Date: 2010-04-11 08:53 pm (UTC)тасксвитч конечно недорогая. я имел в виду приложения, которые все-таки что-то делали в фоне, а не просто висели в idle. вообще, ARM не самая производительная архитектура-то, а там еще и системных процессов немало - на приложения остается не так много.
Push notifications насколько я понял реализованы тоже через поллинг.
ну не совсем поллинг. там просто держится persistent connection с эппловским сервером, и если приходит notification, то сервер шлет клиенту сообщение. но наверное они еще обмениваются иногда какими-то keepalive-пакетами.
А ждущее приложение фактически бесплатно.
ну это требует определенной культуры программирования. вообще instant messenger занимается много чем, даже когда выполнятеся в фоне - шлет пинги серверу для поддержания presense-статуса, обрабатывает всякие события от сервера (типа, десериализует пакетики, пересортировывает и перерисовывает контакт-лист, если кто-то из контакт-листа изменил presense-статус и т.д.). то есть это все-таки менее тривиальная логика, чем просто ждать пакет от сервера, как в случае с push notifications.
no subject
Date: 2010-04-11 09:00 pm (UTC)Можно подумать что push notifications будут вместо приложения "пересортировывает и перерисовывает контакт-лист, если кто-то из контакт-листа изменил presense-статус и т.д" :-)
Никто не мешает приложению, если оно ушло в фон, перестать заниматься всем этим housekeeping'ом (ибо его все равно никто не увидит), и обрабатывать только реально важные события.
Push notifications - это многозадачность для бедных. Вместо того чтобы самому спать на select()'е, мы поручаем это системе, которая покажет нам
киноокно и запустит наше приложение заново. А оно в свою очередь восстановит свой контекст из заботливо сохраненных данных. То есть все тоже самое что при обычной преемптивной многозадачности, только все-все делаем сами и вручную.Единственное что при этом существенно экономится - это оперативная память, потому что свопа-то у нас нет.
no subject
Date: 2010-04-11 09:31 pm (UTC)запустившись, приложение частично восстановит стейт само, частично получит недостающие данные от сервера.
Никто не мешает приложению, если оно ушло в фон, перестать заниматься всем этим housekeeping'ом (ибо его все равно никто не увидит), и обрабатывать только реально важные события.
ну, это только теоретически так. :) в реальной клиент-серверные протоколы того же IM (известные мне, во всяком случае) обычно не расчитаны на сценарии типа "сервер, я тут пойду посплю - присылай мне только вот эти события" или "сервер, я тут просунлся - расскажи, чего тут было без меня". так что сервер будет слать в коннекшн всё подряд, и чтобы отличать важные пакеты от неважных нужно обрабатывать абсолютно все (что само по себе может быть не очень дешево, особенно если там еще криптография или надо парсить какой-нибудь XML). кроме того, все события (даже если и не визуализировать их) все равно надо складывать в некую очередь и как-то менеджерить ее (чтобы при выходе из айдла не разбирать все накопившиеся события, а получить актуальное состояние). и т.д..
то есть решения, конечно, есть (особенно если писать какой-то софт с нуля и изначально заморачиваться под мобильные платформы), но боюсь, что в реальности во многих случаях дешевле поддержать тупые push notifications. :)
no subject
Date: 2010-04-12 04:57 am (UTC)