2017 год ещё ближе приближает нас к тому будущему, которое столько раз рисовалось изобретательными умами писателей-фантастов. Искусственный интеллект, виртуальная реальность, квантовые вычисления — все это ещё несколько лет тому назад казалось плодом чьего-то богатого воображения, а теперь в шаге от мейнстрима. Это значит, что программистам следует подготовиться к приходу новых технологий. Мартин Пюйре, который является руководителем учебных программ и практикующим тренером-наставником в школе программирования Coding Dojo, поделился с изданием InformationWeek своими соображениями по поводу навыков и необходимых средств программной разработки, которые будут в этом году актуальными для программистов. Он также назвал четыре технологии, которые, по его мнению, будут преобладать над остальными.
Гибридная клиент-серверная архитектура. Заданный несколько лет назад вектор на смещение вычислений в облако останется неизменным и в этом году. Появится ещё больше программных систем, которые будут в различных пропорциях сочетать локальные и облачные среды вычислений. Для пояснения: если веб-программирование предусматривает подключение браузера к серверу поддержки, на стороне которого происходит фактическая обработка данных, то для работы локальных программ он не нужен — все вычисления производятся на самом устройстве, будь-то смартфон или ноутбук.
Например, приложения типа OneNote или Firefox работают на локальных устройствах, в то время как веб-сервисы, такие как Amazon или Gmail, работают на облачных серверах. Но есть и гибридные системы: поскольку часть производимых ими вычислений может выполняться как на стороне облака, так и локально, то их нельзя причислить ни к приложениям, ни к сервисам. Взять, к примеру, Xbox One. Написанные для этой системы игры могут в автономном режиме работы задействовать локальный ресурс консоли, но при переходе в режим мультиплеера обработка локаций воспроизводится сетевым сервисом Xbox Live.
Пример Xbox One показателен, но он не единичен и таких систем становится всё больше. Подобным образом — позволяя выбрать автономный режим или режим подключения к сети — работают приложения GMaps или Outlook. Таким образом, граница между веб-сервисами и обычными приложениями стирается, вынуждая компании создавать интегрированные гибридные решения. Это происходит на фоне роста вычислительных мощностей как самих девайсов, так и увеличения пропускной способности веб-сервисов. Ничто не указывает на то, что процесс «гибридизации» ПО замедлится или остановится, более того, его уклон — в облачность или автономность — будет зависеть от конкретных потребностей той или иной системы или функции.
Если потребуется обеспечить работу функций, которые нужны для запуска на любом устройстве или браузере (возможность отсылать сообщения и уведомления пользователям, доступ к камере, звуку, GPS, файловой системе, контактам и т. д. ), тогда стоит обратить внимание на инструменты кросс-платформенной разработки (Appcelerator Titanium, Kony Platform, Adobe PhoneGap, Xamarin, Cordova и др.). Часть инфраструктуры приложений или сервисов, которая работает в режиме реального времени или активно потребляет сетевой трафик, должна обслуживаться локально. Как уже говорилось, выбор архитектуры будет зависеть от требований к софту, но нужно иметь в виду, что большая его часть будет двигаться по гибридному пути.
Big data. Наш цифровой век порождает неисчислимое количество битов информации. Её было много и раньше, но теперь она прирастает биометрическими данными, собираемыми носимыми устройствами; накопительными базами кликов, которые требуются сайтам для отслеживания поведения пользователей и другими данными, растущими в геометрической прогрессии. Для анализа больших данных используются такие мощные инструменты, как облачные вычисления и алгоритмы машинного обучения.
Очевидно, что для решения задач в области больших данных разработчикам следует задействовать соответствующие средства — Python или языки для функционального программирования типа Scala. Имейте в виду, что рост использования систем машинного обучения для анализа данных приобретает видимые очертания. Их работа выходит далеко за рамки традиционного программирования с его конкретными причинно-следственными связями — ПО, лежащее в основе машинного обучения, работает в обход традиционных практик, порою приводя к результатам, идущим в разрез с ожидаемыми. Тем не менее, потребность в системах машинного обучения для анализа больших данных будет возрастать, равно как и потребность в квалифицированных инженерах и аналитиках данных.
Виртуальная реальность. Любая новая технология всегда вызывает всплеск интереса. Подобное произошло и с виртуальной реальностью (VR), но на пути к популярности встала дороговизна устройств. Возможно, этот год станет поворотным для VR, поскольку над её удешевлением работает множество компаний. Больше всего в этом направлении продвинулась Google — стоимость её шлёма Daydream VR составляет 79 долл. Для сравнения, шлём HTC Vive стоит 800 долл.
Что важно, ранее громоздкие и налагающие ряд других ограничений VR-гаджеты продолжают уменьшаться в размерах. Наряду с этим на рынке увеличивается количество устройств дополненной реальности (AR). Для разработчиков приложений это может значить только одно: самое время отточить специфические для VR/AR навыки в области проектирования и разработки. По ходу нужно будет уловить один из важнейших аспектов: «трансформацию сознания» — когда пользователи ещё не отставят в сторону смартфоны с прилагающимися к ним приложениями/сервисами с «плоским» UI, но уже будут подготовленными к переходу на VR.
Чтобы их впечатлить, создателям VR-софта понадобится приложить старание, и дело здесь не только в фантазии, но и в умении: разработка виртуального ПО должна комбинировать навыки проектирования и в 2D, и в 3D. В краткосрочной перспективе разработчикам нужно учесть, что большинство 3D-приложений нужно будет конвертировать в 2D и обратно, иначе это грозит разделением или даже потерей клиентской базы. Возьмём, скажем, Skype: стоит ли его разделять на два продукта — один для VR и другой для всех остальных? Или это должен быть комбинированный продукт?
Здесь мы подходим к вопросу проектирования интерфейсов, которые работают однородно как в виртуальной среде, так и вне её. Это серьезная проблема с точки зрения дизайна приложений, которую вскоре придётся решать. Другая нерешенная проблема: настройка элементов VR-систем типа датчиков отслеживания или света, нужных для фиксации движений головы и глаз, для управления неигровыми приложениями. Разумеется, для написания ПО для таких устройств, как Oculus Rift, HTC Vive, Google Daydream и Cardboard можно взять игровой движок Unreal Engine или Unity, но, во-первых, сложность состоит в том, что для этого софт нужно конвертировать в 3D, а, во-вторых, задачу ретрансляции кода усложняет привязка к фирменному ПО и оборудованию того или иного VR-устройства. Упростить её поможет стандартизация аппаратных спецификаций, которая препятствует росту популярности VR.
Квантовые вычисления. ПК-рынок уже не первый год находится в упадке, а это значит, что Intel и AMD не спешат соблюдать Закон Мура и экономят средства на освоение новых техпроцессов. Более того, дело даже не столько в этом, сколько в том, что производители компонентов не могут до бесконечности уменьшать размеры транзисторов. Тем временем Google и Microsoft пробуют себя в других направлениях, нанимая для работы над инженерными проектами экспертов в области квантовых вычислений.
Квантовые компьютеры — новое слово в сфере ИТ, мнение ученых по поводу их пригодности к обработке традиционных задач разделились, но несомненно одно — такие компьютеры способны осуществлять расчеты на порядок быстрее транзисторных. Не исключено, что в будущем квантовые процессоры послужат основой для создания ещё меньших и в то же время более мощных устройств. Наверняка некоторые компании (Apple или Microsoft, например) уже сейчас пытаются создать единое носимое суперустройство, которое полностью заменит телефон, планшет и ноутбук.
По мнению Пюйре, программистам следует заняться самообразованием, чтобы повысить свои познания в таких технологиях, как квантовые вычисления, большие данные и смешанная реальность; не помешает также освежить знания в тех областях, где вы уже являетесь экспертом, но не стоит пренебрегать и новыми языками программирования. От также считает, что в этом году программирование выйдет на новый уровень и станет менее нишевой профессией.