Программное обеспечение.
Прежде чем говорить о приложениях для умных мобильных платформ (iOS, Bada, Android), стоит разобраться с программным обеспечением вообще.
Все, кто пользовался компьютером, уверены что знают ответ на этот вопрос. Это программы, вроде MS Excel или Apple Pages, и много-много всяких других. Игры, планировщики, обучающие программы, бухгалтерии, рисовалки...
Приложения - частный случай программного обеспечения. Это программы, которые предназначены для пользователей. В зависимости от целевой аудитории (для кого они написаны) приложения могут быть простыми, сложными и очень сложными.
Приложения пишутся прикладными программистами. Для написания приложения необходимо владение искусством создания программ (о котором чуть ниже), и хорошее знание предметной области - того, с чем имеет дело программа.
Приложения не единственный вид программного обеспечения. Кроме них, в мире есть операционные системы, утилиты, вирусы и т.п. Про утилиты и вирусы пусть вам расскажет кто-нибудь другой, а вот операционные системы мы обсудим, так как они очень важны.
Если помните, в одной из прошлых серий мы отметили, что "iPhone оснащается взрослой операционной системой", и связали желание огромного числа людей писать для iPhone прикладные программы именно с этим фактом.
Операционные системы управляют "железом". Вы даже не представляете себе, насколько это сложная задача. Внутри "чипов" (микросхем, они же - СБИС, сверх-большие интегральные схемы) включенного компьютера слаженно и в бешенном темпе пульсируют электромагнитными полями мириады наноскопических ("микро" для них не подходит, их размеры измеряются десятками нанометров) элементов.
Пульс таких систем измеряется в наши дни в сотнях Мегагерц (сотнях миллионов колебаний в секунду) или в Гигагерцах (миллиарды). Каждое колебание этого пульса - "такт". За один такт совершается одно элементарное действие, например, сложение двух чисел или выбор из двух альтернатив - и все это сотни миллионов раз в секунду. Я упрощаю, на самом деле все сложнее - но идея должна быть понятна.
Это мегазаводы по переработке информации, с множеством цехов - процессор (с одной или более "производственных линий", то есть, "процессорных ядер"), графический процессор, контроллеры ввода-вывода, оперативная память...
Сколько людей управляет физическим мегазаводом?
Не спешите указывать на генерального директора. Управлением занимаются сотни, или даже тысячи, людей. На разных уровнях принимаются десятки тысяч решений, их выполнение проверяется, в процессе обязательно возникают разные проблемы и сбои, кто-то координирует всю эту деятельность...
Главная функция и задача операционной системы - управление виртуальным мега-заводом по переработке информации. Можете представить себе, насколько это непросто: обеспечить оптимальное и сбалансированное выполнение сложным механизмом поставленных перед ним задач?
Но это только одна из функций операционных систем. Графический интерфейс пользователя (многие ошибочно полагают, что это, в первую очередь, картинки и стили отображения окошек) первым приходит на ум, но он не единственный такой, есть у системы еще один интерфейс (на русский "интерфейс" можно перевести как "переходник", "посредник"). Интерфейс программирования приложений, Application Programming Interface, или API.
Запомните эту аббревиатуру. На первый взгляд, профи ей злоупотребляют, но это очень важный аспект их профессионального мира, и попробуйте много-много раз, причем, быстро, произнести фразу "интерфейс программирования приложений"...
API - это средства запуска и выключения приложений, инструменты для общения с другими приложениями и операционной системой, для отрисовки и управления элементами графического пользовательского интерфейса, для взаимодействия с периферийными устройствами (это долговременная память, принтеры, сканеры, датчики радиацонного излучения, модели LOGO, выделенные телефонные линии, дистанционные взрыватели - все, что угодно), для всего-всего...
Помимо API и интерфейса "человек-компьютер", в операционных системах много других интерфейсов.
Прикладной программист имеет дело не с устройством, а с "платформой", то есть, с операционной системой.
Программистские интерфейсы (API и другие) современных операционных систем очень сложны, в каждой платформе свои особенности и тонкости, освоение платформы сравнимо по сложности и затратам времени с изучением иностранного языка или с овладением еще одной специальностью.
Правильно ли это? Может, было бы намного проще и выгоднее разработать одну операционную систему, которую изучали бы все и везде, и уничтожив все другие сделать ее общим стандартом? Что-то вроде этого однажды уже попробовали, на роль единственной платформы в мире в конце 90-х и начале 00-х претендовали операционные системы от Microsoft.
Результат оказалася не совсем таким, какого хотелось бы. Windows еще не успела стать единственной системой в мире, когда ее развитие резко замедлилось. Дело в том, что развитие операционной системы - непростой и дорогостоящий процесс, на который средства находятся только в условиях конкуренции с другими системами, и если конкуренции нет, все останавливается: для движения - нет причин.
И, примерно как автопромы социалистического лагеря, на долгие десятилетия, были бы законсервированы старые решения, давно и безнадежно устаревшие...
Там, где конкуренция заставляла вкладываться в развитие и на поиск решений, сменились десятки поколений автомобилей, и возникла почти непреодолимая пропасть.
В условиях конкурентной борьбы, особенно когда она наиболее остра и отчаяна, операционные системы развиваются быстро, смело и интересно. В них постоянно появляется что-то новое, недостатки и ограничения устраняются, непрерывно идет поиск. На смену проблемам и глюкам прежних версий приходят новые, это болезни бурного роста, но в целом системы становятся все богаче и надежнее.
Конкуренция между операционными системами для десктопов и ноутбуков, в наши дни, не слишком остра. Новые версии операционных систем для компьютеров выходят реже, чем прежде. Зато между мобильными операционными системами идет война не на жизнь а на смерть.
Вместо того, чтобы дожидаться завершения перемен, прикладные програмимисты пишут приложения для пользователей сейчас, здесь и сегодня, они преодолевают преграды, проявляя чудеса изобретательности, они участся, учатся и учатся...
В итоге, в мире миллионы приложений, в том числе и настоящих шедевров. В их числе и "мобильные приложения", возникшие, в их нынешнем виде, с появлением, Apple App Store.
В Android Marketplace уже более 80 000 приложений, в Apple App Srore их уже более 250 000 - в этом изобилии можно найти многое. Это "магазины готового платья".
Есть еще и ателье, где "шьют на заказ". При этом, нет ничего невозможного, это всего лишь вопрос времени и денег.
Небольшое лирическое отступление...
Даже при наличии извозчиков (такси), знать географию нелишне: подвыпивший товарищ, выйдя из кабака в Нью-Йорке, назвал водителю свой адрес в Майами, и тут же уснул. Будучи "настоящим профи", водитель не стал переспрашивать, его пассажир проснулся утром, на подъезде к второму по величине городу Флориды, Джексонвиллу, когда на сумма на счетчике уже перевалила за полторы тысячи американских рублей, а до Майами оставалось еще сотни три, в тех же единицах.
Будьте точны, аккуратны и предусмотрительны в своих требованиях...
Продолжение следует...
авторы статьи: Дубинин Виталий, managing founder; Свиргстин Олег, R&D director