Популярно или не очень? Посмотрим, что приходит и уходит в мире разработки.
Программисты любят иронизировать над миром моды, где ветра трендов дуют туда-сюда. Юбки становятся длиннее и короче, цвета приходят и уходят, галстуки становятся шире, потом уже. Но в мире технологий строгость, наука, математика и точность господствуют над причудой.
Это не значит, что программирование — профессия, лишенная тенденций. Разница в том, что тенденции программирования управляются большей эффективностью, увеличенной вариативностью и простотой использования. Новые технологии по большей части затмевают предыдущие. Это меритократия, а не власть прихоти.
Дальше список популярного и не очень популярного среди программистов сегодня. Не все согласятся с этим списком. Это то, что делает программирование бесконечно увлекательной профессией: быстрые изменения, жаркие дебаты и внезапные возвращения.
Популярно: Препроцессоры
Не очень: Универсальные языки
Не так давно люди, изобретающие новый язык программирования, вынуждены были создавать все необходимое для перевода кода в форму, понятную процессору. Однажды кому-то в голову пришла умная мысль — написать препроцессор, который будет транслировать новый код в проверенную классику с богатым набором библиотек и API.
Скриптовые языки вроде Python или JavaScript когда-то были ограничены мелкими проектами, но теперь это фундамент для серьезных проектов. Те, кому не нравился JavaScript, создали CoffeeScript, препроцессор, который позволил им писать код без обременительной пунктуации. Есть куча вариантов предварительной обработки и предсказания синтаксиса.
Парни, которым нравится динамическая типизация, создали Groovy, упрощенную версию Java без чрезмерной пунктуации. Есть куча языков вроде Scala или Clojure, которые работают поверх JVM, но есть только одна JVM. Вы можете запускать множество языков на .Net VM. Зачем изобретать колесо?
Популярно: Docker
Не очень: Гипервизоры
Это не совсем так. У гипервизоров своя ниша, и многие контейнеры Docker работают внутри операционной системы, которая сама работает поверх гипервизора. Однако контейнеры Docker намного меньше образов виртуальных машин, и это весьма упрощает их использование и развертывание.
Когда есть возможность, разработчики предпочитают грузить только контейнеры Docker, благодаря тому, насколько проще жонглировать ими во время развертывания. Умные компании вроде Joyent выясняют, как можно выжать больше из стека, так что контейнеры могут запускаться, как они любят говорить, на «голом железе».
Популярно: MV* JavaScript фреймворки
Не очень: Простые JavaScript файлы
Сто лет назад все умели писать скрипты, показывающие всплывающее окно или предупреждение о забытой собаке в email-адресе. Теперь HTML Ajax приложения стали настолько сложными, что немногие люди отваживаются писать их с нуля. Проще взять фреймворк и написать только бизнес-логику.
Есть много фреймворков — Kendo, Sencha, jQuery Mobile, AngularJS, Ember, Backbone, Meteor JS и еще куча решений, готовых обрабатывать события и контент для веб-приложений и страниц.
Это просто веб-приложения. А еще есть ряд фреймворков для кросс-платформенной разработки мобильных приложений. Технологии вроде NativeScript, PhoneGap и Sencha Touch — варианты для разработки приложений на HTML5.
Популярно: CSS-фреймворки
Не очень: Обычные CSS
Когда-то, чтобы приукрасить страницу, было достаточно открыть CSS-файл и дописать что-нибудь вроде font-style:italic, сохранить файл и пойти на обед. Теперь веб-страницы стали настолько сложны, что стало невозможно хранить стили просто в файлах. Одно изменение цвета, и все ломается. Как говорят о заговорах и экологии: все взаимосвязано.
Это и стало основой для CSS-фреймворков вроде SASS и Compass. Они поощряют грамотную, стабильную разработку, предоставляя конструкции вроде переменных, вложенных блоков и примесей. Это не выглядит революцией в программировании, но это большой шаг вперед для дизайна.
Популярно: SVG и Javascript на Canvas
Не очень: Flash
Flash сводил людей с ума годами, но художники всегда любят результат. Сглаженный рендеринг выглядит прекрасно, и многие опытные художники глубоко зарылись в код Flash, чтобы предложить еще более сложные переходы и анимации.
Теперь, когда JavaScript может то же самое, разработчики браузеров и программисты жаждут конца Flash. Они видят лучшую интеграцию DOM и новых форматов вроде SVG.
SVG и HTML — просто большая куча тегов, и разработчикам проще с ними работать. Так же уже есть API, позволяющие рисовать на Canvas, в том числе с поддержкой на стороне видеокарт. Соберите все это вместе, и у вас останется мало причин использовать Flash.
Популярно: Почти big data (без Hadoop)
Не очень: Big data (с Hadoop)
Каждый хочет быть большим человеком в университетском городке. Когда с этим проблемы, приходится искать подходящий кампус, где можно будет выделиться. Так что нет ничего удивительного в том, что как только «big data» распространились среди ребят в костюмах, они сразу начали требовать самые большие и мощные системы обработки данных, как если бы они покупали яхту или небоскреб.
Забавно то, что многие проблемы недостаточно велики для big data. Конечно, Google или Yahoo ворочают петабайтами или йоттабайтами, отслеживая активность во всем Интернете. Но большинство компаний оперируют данными, которые поместятся в оперативную память обычного компьютера. Я пишу этот текст на компьютере с 16 Гб оперативной памяти — достаточно для миллиона событий с горсткой байт. Большинство алгоритмов не требуют загрузки всех данных в память, поскольку чтение с SSD достаточно быстрое.
В некоторых случаях нужны десятки машин с Hadoop в облаке, работающих параллельно, но большинство задач решается на одной машине без утомительной параллелизации или коммуникации.
Популярно: Spark
Не очень: Hadoop
Не то чтобы к Hadoop охладели, это скорее Spark раскалился докрасна, делая модель Hadoop несколько устаревшей. Spark наследует некоторые прекрасные идеи Hadoop для извлечения информации из больших объемов данных, но делает это гораздо быстрее. Самым большим преимуществом может быть то, что Spark держит данные в памяти, без необходимости хранить их в распределенной ФС.
Многие люди объединяют их, скрещивая скорость Spark с хранением данных в распределенной ФС Hadoop. Они скорее партнеры, нежели конкуренты.
Популярно: ИИ и машинное обучение
Не очень: Big data
Никто толком не знает, что в действительности значит «исскуственный интеллект», и это на руку маркетологам, учитывая, что термин «big data» изжил себя. Они используют термины из ИИ и модернизируют алгоритмы перемалывания чисел, обрабатывающих все наши логи и клики. Используя самые сложные алгоритмы из 50-ти с лишним лет исследований ИИ, у нас сейчас больше всего шансов найти этот сигнал в шуме.
Существует целая гамма инструментов — от фреймворков машинного обучения до когнитивных вычислений, вплоть до IBM Watson, которому теперь вы можете поручить решение ваших проблем. Каждый из инструментов предлагает свой уровень машинного интеллекта и новые перспективы выше анализа данных и судебной экспертизы.
Популярно: Игровые фреймворки
Не очень: Нативная разработка игр
Давным-давно разработка игр выглядела так: вы нанимали программистов, которые писали все с нуля на чистом С. Это стоило кучу денег, но выглядело прекрасно. Теперь никто не может позволить себе роскошь пользовательского кода.
Многие разработчики игр обменяли свою гордость на библиотеки вроде Unity, Corona или LibGDX. Они не пишут код на C в таком количестве, в каком пишут код к этим библиотекам.
Позорно ли штамповать игры на одном движке, вместо того, чтобы гордо писать их самостоятельно? Нет. Это освобождает разработчиков от необходимости контроля за деталями реализации, вместо этого позволяя сосредоточиться на геймплее, сюжете, персонажах и оформлении.
Популярно: Одностраничные веб-приложения
Не очень: Старые классические сайты
Помните время, когда URL указывали на страницы со статическим текстом и изображениями? Как просто и сложно было поместить всю информацию в пачку веб-страниц, называемых сайтом. Дизайнеры тратили часы, обсуждая то, как лучше и понятнее всего расположить информацию на карте сайта.
Новые веб-приложения — просто интерфейсы к объемным базам данных с контентом. Когда веб-приложению нужны данные, оно вытягивает их из базы и заливает в локальное хранилище. Нет необходимости получать все данные и структуру страницы для отображения сайта. Слой хранения данных полностью отделен от слоев представления и форматирования.
На распространение SPA влияет и рост мобильных технологий. Отдельное адаптивное веб-приложение, которое работает как мобильное приложение — все лучше, чтобы избежать путаницы магазинов приложений.
Популярно: Мобильные веб-приложения
Не очень: Нативные мобильные приложения
Предположим, у вас есть великолепная идея мобильного приложения. Вы можете пойти напролом и написать отдельные приложения для iOS, Android, Windows 8 и может быть BlackBerry OS или какой-нибудь другой. Каждое приложение потребует отдельной команды программистов, разговаривающей на своем языке программирования. Кроме того, вы хлебнете фунт лиха, пока будете публиковать каждое приложение в магазине приложений.
Или же вы можете написать одно приложение на HTML и развернуть его в сети, сделав доступным всем платформам. Вам не придется раз за разом просить поскорее принять новую версию после каждого багфикса. Теперь, когда HTML работает быстрее на мощных процессорах, этот подход конкурирует с еще более сложными и интерактивными нативными приложениями.
Популярно: Android
Не очень: iOS
Всего несколько лет назад все дороги вели в магазины Apple? Времена меняются. Пока iPhone и iPad сохраняют преданных поклонников, ценящих богатый, сложный интерфейс, в продажах лидирует Android. Некоторые отчеты гласят, что больше 80 процентов проданных смартфонов — на Android.
Причина проста, как и цена. Пока устройства на iOS обходятся в копеечку, мир Android наполнен кучей конкурентов, производящих планшеты в одну пятую цены. Экономия соблазнительна.
Другой фактор — open source. Кто угодно может конкурировать на рынке, и он это делает. Есть большие планшеты и маленькие. Камеры на Android и холодильники на Android. Никто не спрашивает у Google: «Мамочка, можно мне?..». Если у людей есть идея, они идут и делают.
Однако Apple учится у Android. iPhone 6 поставляются с разными размерами экрана, и знаете что? Положение выравнивается.
Популярно: GPU
Не очень: CPU
Когда ПО было простым, а код линейным, CPU правил бал, делая всю тяжелую работу. Теперь, когда видеоигры заполнены сложными графическими вычислениями, выполняющимися параллельно, главным стал GPU. Легко потратить 500-600 долларов на хорошую видеокарту, а у серьезных геймеров их больше одной.
Но не только геймеры покупают себе крутые видеокарты. Программисты адаптируют многие паралелльные приложения для выполнения их на видеокартах, тысячекратно ускоряя их.
Популярно: GitHub
Не очень: Резюме
Конечно, вы можете многое узнать о кандидате, читая раздутый список достижений, включающих пост вице-президента в школьном шахматном кружке. Но вы узнаете намного больше о человеке, взглянув на его код. Пишет ли он дельные комментарии? Тратит ли он много времени, разбивая код на аккуратные модули? Строит ли он архитектуру, готовую к расширению? Ответы на эти вопросы вы найдете в его коде.
Вот почему участие в open source проектах становится все важнее для поиска работы. Показать код закрытого проекта непросто, а открытый код можно демонстрировать кому угодно.
Популярно: Аренда
Не очень: Покупка
Когда Amazon анонсировала скидки на компьютеры и электронику в Черную пятницу, она забыла включить в список выгодные предложения для своих облаков. Подождем.
Не так давно компании открывали свои дата-центры и нанимали кучу народа для их обслуживания. Теперь они арендуют компьютеры, дата-центры, персонал и даже ПО, платя за часы использования. Никто больше не хочет тратить лишнего, владея чем-либо напрямую.
Это все прекрасная идея, по крайней мере до тех пор, пока сайт популярен, а вы можете оплатить все, что нужно, одним кликом. Теперь остается подождать, пока Amazon найдет способ доставить свое облако дронами.
Популярно: Cложность облаков
Не очень: Простота облаков
На заре облачных вычислений поставщики подчеркивали то, как просто можно нажать кнопку и получить работающую машину. Простота привлекательна.
Теперь выбор нужной машины и хорошей скидки занимает больше времени, чем написание кода. Доступны десятки разных профилей облачных машин, и многие облачные провайдеры поддерживают некоторые старые модели. Все они предоставляют разные уровни производительности, так что будьте готовы измерять и сравнивать, выбирая наиболее эффективный для вашего бюджета. Выгодно ли сэкономить 12 центов ценой некоторого уменьшения оперативной памяти? Конечно, если вы собираетесь держать сотню машин работающей целый месяц.
Чтобы все еще усложнить, облачные компании предоставляют разные скидки при заказе больших объемов или сроков. Внесите их тоже в таблицу. Всего этого достаточно, чтобы потратиться на курсы облачной экономики.
Популярно: IaaS
Не очень: PaaS
Кто не хочет быть изнеженным? Кому не нужна лишняя помощь? Да, разработчики любят иметь дополнительные плюшки от работы с полной PaaS. Есть куча дополнительных функций, некоторые из которых действительно полезны.
Но над всем этим нависает страх быть навсегда привязанным к одной платформе. Иногда это допустимый компромисс, но иногда — кошмар. Варианты IaaS более гибкие. Если вам не нравится ваш сервер с Ubuntu, работающий в IaaS, вы можете установить свой сервер прямо в офисе. С PaaS такое провернуть намного сложнее.
Популярно: Веб-интерфейсы
Не очень: IDE
Давным-давно люди компилировали программы из командной сроки. Потом кто-то интегрировал компилятор с редактором и прочими инструментами, создав IDE. Пришло время веб-интерфейсам, позволяющим править код прямо на живой системе, затмить IDE.
Если вам не нравится, как работает WordPress, он поставляется со встроенным редактором, позволяющим подправить код, не отходя от кассы. Интерфейс управления Microsoft Azure позволяет писать управляющий код на JavaScript прямо в консоли управления. В этих системах нет мощных средств отладки, и есть нечто порочное в правке живого кода, но у идеи есть будущее.
Вы можете открыть Cloud9, Aptana и WebIDE от Mozilla, но продолжайте искать. Веб-интерфейсы становятся мощнее. Например, возможно построить целый проект аналитики данных на базе Azure.
Популярно: Node.js
Не очень: JavaEE, Ruby on Rails
Серверный мир всегда бы построен на модели потоков, позволяющей операционной системе прощать своенравное и неэффективное поведение программистов. Идиотские петли или расточительные вычисления — ОС балансирует производительность за счет переключения между потоками.
Теперь Node.js пришла с моделью коллбэков JavaScript, и код стал действительно быстрым — быстрее, чем кто-либо мог ожидать от игрушечного языка для вывода окон с предупреждениями. Внезапно накладные расходы от создания новых потоков стали незначительными, и Node.js заиграл новыми красками.
Проблемы возникают, когда программисты ведут себя безответственно, но ответственность всегда была важна для них. Очевидные ограничения ресурсов порождают более быстрый код.
Node.js имеет пользу от гармонии между браузером и сервером. Один и тот же код на обоих упрощает понимание его для разработчиков. В результате стеки на основе Node.js стали очень популярны.
Популярно: PHP 7.0
Не очень: Старый PHP
В прошлом PHP был хорошим способом сделать пару динамических веб-страниц. Если вам нужно было разнообразить страницу, вы просто вставляли код прямо между HTML тегами. Этого было достаточно, чтобы радовать веб-разработчиков, но это слишком медленно работало для хардкодных программистов.
Теперь эта новость устарела, поскольку некоторые любители PHP соревнуются в скорости выполнения, используя JIT-компиляцию, которая однажды помогла Java. Инструменты вроде HipHop VM и PHP 7.0 показывают производительность вдвое выше предыдущих версий. Выкусите, Node.js и Java.
Популярно: Обучение в процессе
Не очень: Четырехлетний план обучения
Компьютер-ориентированные курсы больше не новинка, и каждый может наслаждаться просмотром видео лекции с кнопками ускорения, замедления и «попросить повторить еще разок». Онлайн-форумы далеко шагнули вперед по сравнению со старыми семинарами, где только один докладчик ведет дискуссию.
Но дело не только в природе и технологии онлайн-курсов, которые перевернули всю индустрию образования; дело в возможности учиться когда хотите и где хотите.
Это меняет всю динамику: людям больше не нужно вкладываться в четыре года обучения или собирать коллекцию курсов, которые могут иметь или не иметь отношение к их целям. Зачем проходить курсы по компиляторам, пока вы не будете точно знать, что будете работать над компилятором? Если начальник жаждет перейти с реляционной базы данных на NoSQL, вы можете потратить время на курс о современных хранилищах данных. Вы получаете информацию, которая вам нужна, и не забиваете
Автор перевода: Андрей Никифоров
___
Освоить актуальные тенденции программирования можно, выбрав курс или профессию на сайте GeekBrains в разделе «Курсы».
Автор: GeekBrains