Если бы мы жили в идеальном мире, выбор языка программирования ни на что бы не влиял. Большинство популярных языков используются для похожих задач. Неопытным взглядом сложно отличить один язык программирования от другого: базовые понятия во многом похожи. С точки зрения разработчика, язык программирования — это инструмент, и правильный выбор этого инструмента повлияет на карьеру, уровень заработка и счастья.
Выбор языка программирования связан с несколькими компромиссами.
Для начала нужен баланс между затратами времени и усилий на изучение языка и его ощутимыми преимуществами. Выясните, какие у выбранного вами языка есть перспективы. В начале 2000-х веб-разработчики думали, что PHP и Ruby on Rails — это лучшие языки с точки зрения карьерного роста. Сегодня ситуация на рынке изменилась: в 2019 году уже не выгодно учить PHP и Ruby.
Я составил список языков, которые полезно выучить в 2019 году, рассказал, как используются эти языки и какие у них перспективы. Также в статье есть список языков, достойных упоминания: их тоже стоит учить, однако они узкоспециализированные и используются только в определенных сферах. Чтобы объективно отразить сложившуюся рыночную ситуацию, в качестве основы я взял опрос разработчиков, который Stack Overflow проводил в 2018 году.
Чаще всего программисты изучают новый язык, чтобы стать востребованным на рынке труда. Скорее всего, на собеседовании работодатель захочет узнать, насколько хорошо вы знаете тот или иной язык. Рассматривая каждый конкретный язык, я расскажу вам, какие вопросы на знание этого языка может задать работодатель на собеседовании.
Несмотря на то, что мой список основан на опросе Stack Overflow, в нем есть отличия. Во-первых, я перечисляю языки от самых выгодных для изучения к менее выгодным. Во-вторых, в список я не стал включать декларативные языки и языки сценариев оболочки (Bash, например). Я ограничился только императивными языками. Стоит отметить, что в опросе Stack Overflow второе, третье и четвертое места заняли HTML, CSS и SQL.
JavaScript
Согласно исследованию Stack Overflow, проведенному в 2018 году, 71,5% разработчиков считают JavaScript самым популярным языком программирования. Это больше, чем в 2015 году: тогда 54,4% разработчиков придерживались такого мнения.
Сейчас JavaScript используется везде. JavaScript-фреймворки (Angular, React и Vue) используются на стороне клиента для разработки веб-приложений на основе браузера. За пределами браузера с помощью Node.js lets можно писать серверные приложения на том же языке, на котором вы пишете клиентский код. С помощью Node можно создавать веб-сервисы, управлять Интернетом вещей (IoT) и экспериментировать с машинным обучением. Важное преимущество JavaScript перед другими языками — широкая поддержка в индустрии ПО со стороны таких IT- корпораций, как Google, Facebook, Microsoft и Amazon. Второй плюс — очень легко найти учебные материалы по JavaScript: существует множество платных и бесплатных курсов, веб-сайтов, книг, видео и тематических блогов.
Большую часть своей истории JavaScript считался гадким утенком от мира программирования. Нет, он не стал прекрасным лебедем, как это произошло в сказке. Тем не менее сообщество JavaScript приложило много усилий, чтобы превратить его из браузерного скриптового языка в современный и универсальный язык. Со временем большая часть недостатков JavaScript была устранена.
Стоит отметить, что большинство потенциальных работодателей на собеседовании будут оценивать ваши знания неочевидных функций JavaScript. Скорее всего вас спросят о переменной области действия, замыкании, обратных вызовах и условных операторах. Если вы ищете работу, связанную с JavaScript, вы должен быть готовы к таким вопросам. Я бы порекомендовал побольше узнать о компании, в которой вы хотите работать: исследовать их стек разработки и научиться в выгодном свете демонстрировать свои навыки работы с React, Angular или Vue.
Python
Согласно опросу Stack Overflow, Python пользуется популярностью у 37,9% разработчиков. Python интересен тем, что за последние пять лет он набирал популярность намного быстрее, чем остальные языки. Python стал настолько известен, что о нем написал журнал The Economist, никогда не отличавшийся интересом к разработке ПО.
Одна из причин популярности Python — в нем правила оформления кода проще, чем в других языках: например, не нужно ставить точку с запятой в конце оператора. Поэтому Python все чаще изучают в учебных заведениях— не только в университетах, но и в средней и начальной школе. Python используется в академической среде. Это самый популярный язык общего назначения, он используется для машинного обучения и в науке о данных. Python настолько активно используется в этих областях, что недавно было предложено слияние Python и R, языка науки о данных.
Python одновременно и похож на другие языков программирования, и сильно отличается от них. Если вы ищете работу, связанную с Python, на собеседовании вам нужно показать полное понимание того, как Python реализует общие функции: типы данных, модульность, функции и классы. Также могут спросить, как использовать Python в качестве скриптового, объектно-ориентированного или функционального языка. Работодатель может поинтересоваться, понимаете ли вы такие специфичные для Python типы данных и функции, как кортежи, списки, словари и декораторы.
Java
На третьем месте — Java. Согласно опросу Stack Overflow 2018 года, ее предпочитают 45,5% разработчиков.
Одно из преимуществ Java — это виртуальная машина JVM. JVM позволяет запустить любой язык на любой аппаратной платформе или устройстве. Java также был разработан для решения задач, связанных с типами данных и управлением памятью — этот язык упростил жизнь разработчиков. Java упрощает разработку и внедрение приложений на разных операционных системах: поэтому крупные компании чаще используют Java. Это язык, благодаря которому можно попасть в штат крупной компании. На Java пишут нативные приложения для Android. Доля Android на рынке больше, чем у конкурентов вместе взятых: поэтому разработчики изучают Java.
JVM используется все активнее: создаются новые языки, адаптируются уже существующие. Экосистема Java активно используется. Scala, Closure и Kotlin популярны в отдельных сферах. У Kotlin много интересных применений, например, написание приложений для Android и создание смарт-контрактов с помощью платформы Corda.
При поиске работы в качестве Java-разработчика важно понимать сферу применения языка. На собеседовании могут спросить о чем угодно, связанном с Java. Если вас нанимают, чтобы разрабатывать корпоративные приложения, скорее всего, придется продемонстрировать понимание инфраструктуры Java, так что ждите вопросов по JDK, JRE и JVM.
Android-разработчикам будут задавать вопросы, связанные с разработкой на Android: будут вопросы об управлении версиями SDK, Intent, эмуляции и процессе развертывания приложения. Если вы проходите собеседование в компанию, которая использует не только Java, но и языки JVM, умения работать с этими языками также будет преимуществом.
C#
По данным опроса Stack Overflow 2018, 35,5% разработчиков — фанаты Microsoft C #. Не только Python и Java обогнали C #: несмотря на нелюбовь многих разработчиков к Microsoft, язык сценариев Bash используют 40,4% разработчиков.
Java по-прежнему лучше, чем C #, однако в будущем ситуация изменится. Java медленнее вводит новый функционал, в то время как Microsoft агрессивно развивает и добавляет новые возможности в C #. Таким образом компания стремится перестать зависеть от Windows. По этой же причине Microsoft купила Xamarin и ее кроссплатформенную среду разработки, выпустила многоплатформенное ядро .NET и продолжает инвестировать в Azure. Microsoft видит, что C # играет ключевую роль в ее новой стратегии развития, и прилагает немало усилий, чтобы C # можно было использовать как с технологиями от Microsoft, так и с открытыми промышленными стандартами.
Как и в случае с Java, язык и экосистема C # огромны. Это означает, что перед собеседованием важно разобраться, какое место на рынке занимает ваш потенциальный работодатель. Как и в случае Java, на собеседовании вас спросят об инфраструктуре: зададут вопросы о .Net framework и Common Language Runtime (CLR). Стоит также отметить, что CLR поддерживает другие языки, F # и VB.net. Если вы проходите собеседование в компанию, которая использует не только C #, но и другие языки CLR, стоит научиться программировать и на них.
C и C++
C и C++ — это отдельные языки с разными моделями программирования. Тем не менее они настолько тесно связаны, что в этом списке я объединил их в один.
Язык C больше не используется для разработки приложений, пользовательских интерфейсов, мобильных приложений и машинного обучения — его заменили другие языки, перечисленные выше. Несмотря на это, C по-прежнему используется во встраиваемых и операционных системах. Показательный пример — Linux, самая популярная операционная система всех времен, которая используется в крупнейших мэйнфреймах и всех устройствах с Android. Ключевая часть Linux — ядро Linux, которое написано на C. Более того, на языке С пишутся другие языки программирования, например, Python.
C++ — это более современная, объектно-ориентированная версия C. На C++ пишут приложения, для которых важна производительность. Например, многие компании в финансовом секторе, используют С++ во внутренних системах. C ++ используется как в «скучных», так и в «интересных» сферах. Благодаря высокой скорости работы C ++, его используют при разработке приложений, активно использующих графику: при разработке игр, графических движков, а также виртуальной и дополненной реальности.
Если вы ищете работу, связанную с C или C ++, на собеседовании могут задать вопросы по обоим этим языкам: могут спросить о типах данных, операторах, циклах, условных операторах, указателях, об управлении памятью. Могут попросить объяснить, что такое цепные списки, и написать короткую программу, которая реализует такие списки и управляет ими. Поскольку C + +— это объектно-ориентированный язык, скорее всего, вам зададут несколько вопросов об объектах, классах, методах, свойствах и т. д.
Достойны упоминания
Пять перечисленных выше языков— это языки общего назначения. Теперь рассмотрим узкоспециализированные языки, которые используются в отдельных отраслях.
Apple Swift привлек к себе много внимания. Изначально он создавался как новый универсальный язык Apple, замена Objective-C. На Swift пишут приложения для iOS и Mac. В надежде, что Swift станет серверным языком, Apple выпустила его под лицензией с открытым исходным кодом, но надежды не оправдались.
В веб-разработке по-прежнему популярен PHP. Несмотря на ограничения и наличие альтернатив, PHP по-прежнему используется крупными веб-ресурсами, например, Facebook и Wikipedia. Facebook даже создала Hack, модернизированную версию языка PHP.
PHP используют крупные платформы с открытым исходным кодом, например, WordPress и MediaWiki. Это распространенные платформы, и PHP нужен, чтобы создавать для них плагины. У PHP есть современная и проработанная альтернатива — Ruby. Платформа веб-разработки Ruby on Rails используется и пользуется поддержкой сообщества.
В узких сферах, например, в системном программировании, есть такие перспективные языки, как Go от Google и Rust от Mozilla: оба языка предназначены для построения высококонкурентных систем. В области функционального программирования есть Erlang и его современная альтернатива Elixir, Clojure и его современная форма Lisp, которая работает на JVM. Также есть F# — это функциональный язык, который работает поверх .NET и имеет множество востребованных функций. Наконец, если вам интересен быстрорастущий мир смарт-контрактов и криптовалют на базе Ethereum, будет полезно изучить Solidity.
Заключение: как правильно выбрать язык?
Мы рассмотрели пять языков. Как выбрать тот, который подходит именно вам? Исходя из современных тенденций, лучший язык общего назначения — это JavaScript, у него наибольший спектр применений. Он запускается на большинстве устройств, на нем пишутся клиентские, серверные и бессерверные приложения. За последние десять лет JavaScript трансформировался и стал похож на такие современные языки, как C # и Lisp. Да, у него есть недостатки, но они не так заметны, как раньше.
Python подойдет разработчикам, которые планируют карьеру на много лет вперед. Как мы уже отмечали, этот язык используется для научных и образовательных целях. Он доминирует в машинном обучении, искусственном интеллекте и науке о данных. При создании пользовательских интерфейсов, у JavaScript есть серьезное преимущество перед Python, однако со временем это преимущество может сократиться. Во-первых, стандарт Web Assembly позволяет писать приложения для браузера на любом языке высокого уровня. Во-вторых, если голосовые пользовательские интерфейсы начнут набирать популярность, графические пользовательские интерфейсы станут не важны. У Python есть преимущество в этой области: на нем написан голосовой помощник Amazon Echo.
С точки зрения карьеры, придется выбирать между Java и C#. Эти языки настолько похожи по синтаксису, функциям и инфраструктуре, что все зависит от ваших личных предпочтений, вакансий или случайности. Как мы уже отмечали, Java существует дольше, чем C#, более популярен и востребован на рынке. С другой стороны, тех. поддержка и стремление Microsoft сделать C# кроссплатформенным решением, скорее всего, сыграют свою роль: С# может стать отличным решением в долгосрочной перспективе. Java остается языком Android, однако с помощью Xamarin от Microsoft можно писать приложения для Android, iOS и Mac на C#. Обратите внимание, что стартаперы почти не используют C#. Не любят С# и в Кремниевой долине: к программистам, работающим с этим языком, там относятся с пренебрежением.
Также важно помнить, что при приеме на работу, связанную с Java или C#, работодателю не важно, насколько хорошо вы владеете отдельными функциями. Важно, умеете ли вы писать backend-приложения и идиоматический код. Свое умение работать с отдельными функциями вы покажете при решении реальных задач.
C и C++ считаются языками общего назначения, однако на практике они чаще всего используются в определенных сферах: в случае с C, это системы и программирование встраиваемых систем; в случае с C++ — это высокопроизводительные ресурсоемкие приложения, например, графика в реальном времени. Чтобы писать такие приложения, чаще всего, нужно владеть именно этими языками: за исключением тех случаев, когда используются альтернативные решения.
Перед собеседованием постарайтесь изучить все тонкости языка, с которым вы будете работать. Да, собеседование— это самая стрессовая часть устройства на новую работу. Тем не менее, найти работу и пройти собеседование будет намного проще, если вы будете отлично разбираться в сильных и слабых сторонах своего языка и понимать, для каких задач применяется ваш язык.
Перевод статьи Rafi Zikavashvili: Best Coding Languages to Learn in 2019