В удивительные времена живем: новые языки, технологии, инструменты и фреймворки появляются каждый день. Еще никогда технарям так весело не жилось. Однако в этом шуме легко потеряться. Постоянный колумнист TechCrunch, программист и ментор Мартин Пурьер выбрал пять глобальных трендов в программировании, которые, по его мнению, задают вектор развития всей индустрии.
Последняя версия JavaScript
Последняя версия ECMAScript (ES6), более широко известного как JavaScript, может сделать один из самых значимых прорывов в веб-девелопменте со времен предыдущей версии ES5, которая увидела свет в 2009 году.
JavaScript – самый распространенный язык программирования в мире. Почти каждый компьютер или мобильное устройство с веб-браузером совместимы с JavaScript. Но с появлением ES6 и новых функций, которые он несет в себе, веб-разработка может сильно измениться. Среди них: блок-контекстные переменные, а также новые константы, стрелки, которые упрощают синтаксис, интерполяции строк, классы, модули и многое другое.
Новая версия JavaScript быстро набирает популярность в топовых браузерах. В 13-й версии Microsoft Edge уже поддерживаются почти 80% ее функций. В этом году ES6 точно будет поддерживаться в Edge, Chrome, Firefox и пойдет дальше шагать по планете.
Разработчики могут уже сегодня начать использовать большинство новых возможностей, которые предлагает ES6, через транспиллеры вроде Babel, чтобы компилировать код на ES6 в полностью совместимый со всеми браузерами ES5 JavaScript.
Преобладание подхода “бэкэнд как сервис” (BaaS)
В современной разработке продолжается тенденция отхода от огороженных, полностью самостоятельных приложений в сторону использования сторонних сервисов, чтобы обрабатывать большой кусок монотонных, но необходимых аспектов проекта. Например, облачных хранилищ, push-уведомлений и пользовательского администрирования.
Backend as a Service (BaaS) – общая номенклатура таких утилит, а их популярность гарантировано возрастет, в частности, в корпоративном сегменте, где масштабируемость – огромное бремя для больших приложений. С BaaS, такими как Parse, инженерные и операционные команды могут сфокусироваться на конкурентоспособности компании, в то время как базовые функции и связанные с ними накладные расходы полностью обрабатываются на стороне.
Простое управление и развертывание образов
Хотя BaaS стал ответом на потребность девелоперов легко подключать облака к проектам или API социальных сетей, множество приложений до сих пор полагаются на локализированные стеки и хорошо подготовленные сервера. К сожалению, резервирование сервера по своей сути – сложный и времязатратный процесс.
Такие сервисы, как Packer и Docker, позволяют инженерам быстро создавать машинные образы на существующих версиях операционных систем, библиотек, языков и фреймворков. Эти образы называются контейнерами. Они легко воспроизводятся и позволяют быстро расширить существующие сервисы или быстро создавать новые.
Если ваша операционная команда еще не обсуждает эту тему, то самое время начать. Если обсуждает, а вы не прислушиваетесь, то зря.
Усиление акцента на функциональные языки программирования
Поскольку современным приложениям необходимы все большие пропускная способность, объемы хранилища данных и процессинг, становится понятно, что модель single-machine морально устаревает. Чтобы реально масштабировать систему, нужно параллелизировать ее настолько, насколько это возможно. А это приводит нас к функциональным языкам программирования вроде Haskell, Clojure, Scala и Erlang. Соответственно, растет спрос на программистов в данных средах.
Императивное программирование в основном полагается на изменяемое состояние (изменение значения объекта в процессе выполнения), а функциональное программирование ФОКУСируется на неизменном состоянии, в котором задекларированный объект сохраняет свое значение на протяжении всего процесса. Следовательно у функциональных языков есть важное преимущество перед императивными и объектно-ориентированными языками: они по своей сути предназначены для поддержки параллелизации и тяжелой конкурентности.
Если вы четко знаете, что ваши данные не будут меняться в процессе выполнения программы, и что ваши функции транзитивны (неизменны), приложение может выиграть от облегченных функциональными языками масштабирования и распределенных вычислений.
Объектно-ориентированное программирование в ближайшем будущем никуда не денется. Но в условиях, когда пользователи хотят более быстрых результатов поиска, а исследователи – более точных, функциональное программирование получит больше внимания, будучи самым очевидным решением.
Движение в сторону Material Design и общности моделей
Несмотря на то, что в последние годы балл правил плоский дизайн и минималистический подход к UI, в 2016 году фокус может сместиться в сторону material design.
Apple – самые стойкие приверженцы плоского дизайна, которые вывели из моды объемные элементы интерфейса. Microsoft подхватил эстафету со своим Metro-дизайном в 2010 году. Но Google сделал по-своему и ушел в сторону “естественного дизайна”. Градиент, тени и блики отсылают в эру функциональности старого-доброго объемного дизайна. Более светлый или темный тон элемента может свидетельствовать о том, кликабельный он или нет.
По мере того, как material design обретает форму, мы ожидаем, что креативные дизайнеры будут все чаще обращаться к такому виду UI по мере дальнейшего перехода к отзывчивости. Веб-UI будет становиться все более однотипным, но это неплохо. Дизайнеры понимают, что наиболее типичные задачи, вроде входа в учетную запись или навигации по меню, должны выглядеть одинаково знакомо для всех сортов пользователей.
Выводы
Это будет волнительный год для веб-программирования, начиная с фундаментальных технологий и заканчивая пользовательским опытом. С выходом ECMAScript6 в июле 2015 года обновляется самый вездесущий язык. С BaaS нивелируется большой массив головной боли для девелоперов. Функциональные языки становятся мейнстримом, а material design постепенно унифицирует UI на всех типах устройств.
Независимо от того, на какой позиции и в какой сфере вы работаете, подумайте, какие преимущества эти новинки могут дать именно вам.