Расширенный поиск

Рынок разработки программного обеспечения сегодня постоянно меняется. Приходят новые технологии, изменяются подходы к разработке, тестируются новые инструменты. Сложно предположить, как может изменится индустрия ПО через год или 10 лет, уйдут ли текущие языковые инструментарии в прошлое или останутся на долгие годы. Мы спросили экспертов, какие языки программирования наиболее актуальны сегодня и что необходимо учить разработчикам, чтобы эффективно работать завтра.

Роман Друзягин, IT директор 404 Group

Выбирая язык программирования, люди обычно допускают типичные ошибки, особенно характерные при запуске проектов «с нуля» и стартапов. Основные проблемы — неадекватная оценка кадрового рынка и текущей тенденции в сфере языков программирования. Как правило, выбор технологий доверяют нанятому тимлиду (ведущему разработчику, team leader), СТО (техническому директору, Chief technology officer) или другому специалисту. Несмотря на свой профессионализм, они далеко не всегда руководствуются такими факторами, как экономическая целесообразность для бизнеса, доступность кадров, популярность технологии. Очень часто их выбор обуславливается личными преференциями и субъективными ощущениями («интересно попробовать», «крутая технология», «в Google на нём пишут» и др.), даже если задачу решает опытный специалист.

Прежде чем выбрать язык программирования, нужно определиться с ответами на несколько основных вопросов. Какими компетенциями обладают люди, работающие в компании? А для каких компетенций лучше привлечь сторонних специалистов за адекватную плату? Каков тренд развития выбранной технологии сейчас и в будущем?

Можно начать писать стартап и на Elixir/Erlang, но это очень дорогая и «экзотическая» технология, которой владеет лишь небольшое количество специалистов на рынке. Этот фактор нужно обязательно учитывать, чтобы в будущем не получить множество проблем.

Выбор языка программирования также должен быть обусловлен особенностями работы и возможностями компании. Например, компания с большим штатом, стабильным доходом, свободными ресурсами и временем может вложиться в технологии, которые завоевывают популярность или уже очень популярны.
Сейчас к таким технологиям относятся языки вроде Go или разнообразные деривативы и фреймворки от JavaScript ( Node.js, TypeScript, Angular/Vue/React — все вперемешку, но общая идея, думаю, понятна). Это позволит компании не иметь кадровых проблем с техническими специалистами в ближайшие 3—5 лет, пока технология находится «на пике» своего развития. В будущем такие программисты потенциально смогут внести вклад в развитие сообщества и сделать что-то общественно полезное. Позитивным опытом полезно поделиться на крупной конференции — это приведёт к росту кармы и технического имиджа.

Если компания маленькая, штат ограничен, доход нестабилен — лучше брать проверенные «немодные» технологии, которые настолько устоялись, что никуда в ближайший десяток, а то и сотню, лет не денутся. К ним относятся PHP, Java, PL/SQL. Маленьким компаниям точно нет смысла вкладываться в технологии, чей пик популярности уже пройден, например, языки программирования Ruby или Python. Это стабильные технологии, которые не находятся на хайпе. Их использует определённое сообщество, но большинство новых молодых специалистов эти языки не привлекают. Это может показаться обидным тем специалистам, которые сейчас профессионально или для души занимаются этой технологией. Но реалии рынка таковы, что молодые специалисты с «горящими» глазами цепляются за то, что сейчас в тренде. Кто-то из этого даже делает профессию — успевает вскочить на следующий поезд и бросить одну технологию в угоду другой, чтобы оставаться конкурентоспособным на рынке труда. Для таких специалистов программирование — не профессия, а призвание, а язык программирования — не просто инструмент, а способ творческой реализации.

Профессионалы используют более прагматичный взгляд и выбирают проверенные и стабильные технологии – C++, Java, PL/SQL, 1C, PHP. Все они существуют и никуда в ближайшее время не уйдут.

Алексей Флоринский, заместитель генерального директора компании SimbirSoft

На данный момент на ИТ-рынке доминируют такие корпорации, как: Microsoft, Oracle и Google. Соответственно преобладать будут те языки программирования, которые продвигают эти корпорации. Oracle продвигает Java, Microsoft – платформу .Net с языком C#. Java и C# можно назвать колоссами, которых в обозримом будущее вряд ли кто-то сможет сдвинуть с лидирующих позиций.

Google по большей части использует тот же Java, а также C и C++, но при этом активно развивает свой язык программирования Go, который изначально создавался для решения внутренних задач корпорации. У этого языка, безусловно, есть свои преимущества, он займет свою нишу, но не сможет обогнать основных игроков. Поэтому серьезного изменения языкового набора в ближайшем будущем не будет.

Python, PHP, Java Script – за ними не стоят большие корпорации, но они также плотно заняли свои ниши. Например, JavaScript — ему нет альтернатив во Frontend разработке. Python занимает нишу в области научных исследований и научного программирования, машинного обучения, искусственного интеллекта – у него одна из самых широких экосистем, огромная библиотека фреймворков, охватывает все области ИТ-индустрии. PHP – строго специализирован и востребован в web-разработке.

Андрей Григоров, ведущий архитектор систем ДБО компании R-Style Softlab

В каждом конкретном направлении разработки IT-систем есть языки и платформы, которые занимают доминирующее положение. Особенно интересно взглянуть на направления, охватывающие наибольшую аудиторию пользователей. Одно из таких направлений – разработка мобильных приложений. В 2018 году около 85% смартфонов работают под управлением операционной системы Android, где основным языком разработки является Java. Однако гегемония Java в экосистеме Android в 2017 году была нарушена. На конференции Google I/O компания Google объявила, что язык программирования Kotlin становится официальным поддерживаемым языком для платформы Android наряду с Java. При этом часть сообщества разработчиков полагает, что через некоторое время Google станет поддерживать только Kotlin, хотя официально это не подтверждалось. Следует отметить, что спустя год после анонса уже 4% новых публикуемых в Google Play приложений было разработано на Kotlin, при этом среди популярных приложений доля значительно выше – более 15% приложений из top-500 созданы с использованием Kotlin. Учитывая, что всё большее распространение получают концепции «mobile first» и «mobile only», Kotlin выглядит перспективным для изучения языком, владение которым будет конкурентным преимуществом программиста на рынке труда.

В последние годы возрос интерес к системам искусственного интеллекта. Так как многие распространённые библиотеки и фреймворки, упрощающие создание систем искусственного интеллекта, разрабатывались на языке Python, популярном в академической среде, рост популярности Python не заставил себя ждать. В 2018 году в отчёте портала «StackOverflow» Python назван самым быстрорастущим языком программирования, который разработчики называю основным.

Егор Овчинников, менеджер проектов в Seven Winds Studio

Если вы спросите меня: “Какие языки стоит знать сотрудникам современных IT компаний?” – я сразу задумаюсь об инструментах мобильной разработки.

Kotlin получился настолько хорош, что Google включили его в Android Studio. А помимо Android разработки, очень приятно иметь столь удобный и полностью совместимый с, привычной нам, Java инструмент. Его код более компактный, а функционал имеет некоторые вещи доступные Java только при наличии плагинов.

Swift закономерно сменяет Objective-C, видевшего не одно поколение разработчиков. Каждый год, в любой отрасли инструменты меняются и адаптируются для реализации актуальных задач. Этот закон не оставляет в стороне и iOS разработку награждая её более удобным и простым в изучении инструментом. В направлении iOS разработки мы тоже видим преимущество компактности кода, а также повышение его читаемости, что позволяет сократить время разработки, столь важное в наши дни.

Kotlin и Swift могут использоваться не только в клиентской разработке мобильных проектов, но и в разработке серверных решений. Так, в нашей студии, мы активно используем Kotlin взамен Java для реализации серверных модулей проектов.

Отстраняясь от нативной разработки в сторону кроссплатформенной и игровой, хочется упомянуть актуальную связку C# и Unity. C# обновляется каждые два года, а Unity обновляет поддержку версии языка. Так же, не касаясь поддержки языка, Unity очень быстро развивается, расширяя инструментарий каждые полгода.

Михаил Григорьев, доцент кафедры программной и системной инженерии ТюмГУ

Чтобы ответить на этот вопрос, нужно оценить структуру индустрии в ближайшем будущем.

Довольно большой сегмент рынка также останется за приложениями уровня Enterprise. Сложные, комплексные решения разрабатываются, дорабатываются и поддерживаются на универсальных языках программирования, таких как JAVA и С-подобных (C, C++, C#). Традиционно эти языки программирования занимают лидирующие позиции в рейтингах популярности языков программирования (https://www.tiobe.com/tiobe-index/). В ближайшее время распространение этих языков программирования не претерпит особых изменений.

Высокую значимость, продиктованную ценностью данных, приобретают языки программирования исследования данных и построения решений, основанных на данных. К таким языкам относятся Python, R, SQL. Несмотря на то, что язык программирования Python является универсальным, он предоставляет широкие возможности в области машинного обучения. SQL (включая различные диалекты) остается «рабочей лошадкой» работы с данными, в будущем может несколько уступить позиции NoSQL-решениям. R – язык программирования для статистической обработки данных, плотно занял сегмент Data Mining. С поддержкой крупных software-корпораций язык R выйдет на передовые позиции. Здесь же нельзя не упомянуть о распределенных вычислениях. Очень активно захватывает разработчиков язык программирования Elixir (http://elixir-lang.org/), дающий свободу в реализации параллельного программирования. Еще один серьезный рынок – это мобильные приложения. Сюда входит не только обывательский, ко и корпоративный чаптер. В части платформ здесь два крупных игрока: iOS и Android. Для iOS будет преобладать язык программирования SWIFT, а для Android будет популярным молодой язык программирования Koltin, мощный как JAVA, но более лаконичный и безопасный.

И, конечно же, Web-разработка! В ближайшем будущем здесь будет продолжать властвовать JavaScript, хотя, возможно, он уступит несколько позиций языкам программирования Elm (создание браузерных интерфейсов), и Ruby с фреймворком Ruby On Rails (создание Web-приложений).

Чтобы быть в лидерах завтра IT-компании должны сегодня инвестировать в эти языковые компетенции.

Игорь Увкин, технический директор группы компаний «ХайТэк»

– Стоит отметить, что единого универсального языка программирования не существует, по сути, все они являются проблемно-ориентированными. Так, есть системные языки, прикладные, для быстрой разработки, для научно-исследовательской деятельности и т.д. Другими словами, язык – это выразительное средство, инструмент, с помощью которого разработчики могут решить ту или иную задачу.

Инвестиции в языковые компетенции, на мой взгляд, зависят, прежде всего, от профиля компании. Как показывает практика, зачастую бизнес выбирает путь наименьшего сопротивления. Например, если подавляющая часть кодовой базы написана на C++, безусловно, целесообразно ее поддерживать и двигаться дальше с этим кодом. Если, скажем, в организации работают математики-исследователи, которые обладают компетенциями работы на Python, то именно этот язык программирования станет определяющим фактором.

Приведу пример из опыта нашей компании: мы работаем со специализированными языками. В зависимости от направления разработки, используется определенная группа языков. Скажем, средства системного программирования базируются на языках C и C++, средства разработки аппаратной части основаны на Verilog и VHDL, прикладной софт – на Java и JavaScript. Последние, к тому же, являются средствами быстрой разработки интерфейсных приложений. Семейство языков, используемое при разработке мобильных приложений, определяется требованиями производителей целевой платформы. Например, приложения для устройств на iOS, как правило, пишутся на Swift, для гаджетов на Android – на Java и JavaScript.

Если говорить о сегодняшних трендах, то мы наблюдаем стремительное развитие Python – на нем основано почти все в области машинного обучения и нейронных сетей, популярность JavaScript сохраняется, а от C++ вряд ли кто-то решит отказаться в ближайшей перспективе, поскольку у этого языка огромная история. Еще одна тенденция касается снижения интереса к языкам, на которых учились предыдущие поколения, таким, как например Pascal.

Давать прогнозы на долгосрочную перспективу довольно сложно. На мой взгляд, при разработке какой-то новой проблемной области выразительные средства будут диктовать те, кто первыми напишут существенную часть кодовой базы.

Алексей Зверев, руководитель проектов компании СКБ Контур

Языки программирования служат разным целям. Есть специфические, при помощи которых удобно решать какие-то узкоспециализированные задачи. Такие языки очень популярны в своем сегменте, но они никогда не станут доминировать — потому что есть языки, на которых делают массовые продукты.
Так вот, в узких сегментах смена доминирующих языков — довольно частое явление. Еще вчера все писали на Erlang, а сегодня перешли на F# (пример из головы, может быть, он не имеет ничего общего с реальностью).

Среди языков для массового производства есть языки, которые доминируют сейчас. Каждый год (а иногда и каждый месяц) составляют рейтинги самых популярных языков программирования в мире. Традиционные лидеры: JavaScript, Java, Python, C#, C/C++. Скорее всего, в ближайшем будущем топ языков не поменяется или поменяется незначительно: просто потому что на этих языках уже очень много всего написано и резко перевести поддержку этих продуктов на другие языки будет очень непросто.
С другой стороны, язык может резко набрать популярность: например, еще лет десять назад Python не был в топе.

IT-компании должны вкладываться в то, чтобы у студентов был навык «быстро осваивать новые языки программирования». Например, во время учебы студент должен попробовать штук пять разных языков, а лучше еще больше. Потому что никто не может предсказать, какие технологии появятся послезавтра, нужно быть готовыми к их освоению.

Дмитрий Хайретдинов, разработчик

«Мне кажется, что будут востребованы те языки, в которые вкладываются крупные IT-компании вроде Apple. К примеру, C#. Пока Microsoft будет вкладывать ресурсы, создавать новые инструменты для работы со своим языком (вроде недавно анонсированного IntelliCode) он будет идти вперед и развиваться.

Аналогично с Java. Язык производительный, формальный, его любят предприятия, и при этом он достаточно простой. По крайне мере настолько, чтобы команда любого уровня могла писать на нем back-end. Добавьте к этому гигантское сообщество и станет понятно, что Java еще надолго останется на рынке язык никуда не уйдет.

Что касается Swift, то он тоже будет идти вперед, но здесь есть над чем работать. Хотя Apple активно вкладывается в язык и пытается его популяризировать, ограничение macOS и iOS сильно сказывается на возможностях. Разработчики уже научились обходить эти запреты, но если Swift формально будет доступен на всех системах, и на нем можно будет делать хороший back-end, то он станет более востребованным.

В тоже время есть C++, который тоже будет популярен в будущем, хотя никакие крупные компании его не развивают. Этот язык развивается сам по себе и на текущий момент, «плюсы» это идеальное решение, когда нужно добиться производительности и создать что-то универсальное. Поэтому его использует тот же Яндекс».

 

Об авторе

Владимир Волков

Белорусский журналист, автор многочисленных публикаций по развитию телекоммуникационной отрасли в Беларуси и России. Работал в "Белорусской деловой газете", информационном агентстве БелаПАН и белорусском портале TUT.BY. Занимается исследованиями в области информационных коммуникаций, преподаватель института журналистики Белгосуниверситета.

Написать ответ

Send this to a friend

Перейти к верхней панели