[Перевод] Какой язык программирования будет наилучшим для изучения в 2015 году?
Вот уже несколько лет я слежу за статистикой в языках программирования. Существует большое количество источников данных, включая репозитории кода, обсуждения вопросов и ответов, предложения работы, упоминания в социальных медиа, посещения страниц с учебными материалами, просмотры обучающих видео, опросы разработчиков и др. Данные публиковались в разные периоды времени, никакие из них не могут считаться абсолютно точными, везде содержатся недочёты, но они могут быть полезны для выявления трендов в индустрии.
GitHut — это относительно новый ресурс, который анализирует 2.2 миллиона активных репозиториев на GitHub. Первая десятка:
- JavaScript
- Java
- Python
- CSS
- PHP
- Ruby
- C++
- C
- Shell
- C#
источник: GitHut
Языковый рейтинг RedMonk за 2015 год определяет популярность с помощью анализа активности как на GitHub, так и на StackOverflow. Вот эти результаты:
- JavaScript
- Java
- PHP
- Python
- C#
- C++
- Ruby
- CSS
- C
- Objective-C
Данные взяты на RedMonk
С помощью языковых трендов Jobs Tractor проводится анализ многих тысяч постов Twitter, которые касаются работы. Последние данные за сентябрь 2014:
- Java
- Objective-C
- PHP
- SQL
- Java (Android)
- C#
- JavaScript
- Python
- Ruby
- C++
TIOBE Index составляет языковый рейтинг по количеству квалифицированных инженеров, курсов и ранжированию в поисковых системах.
- C
- Java
- C++
- Objective-C
- C#
- JavaScript
- PHP
- Python
- VisualBasic.NET
- Visual Basic
Если мы объединим все эти четыре исследования, то придём к следующему результату:
- Java (все)
- JavaScript
- PHP
- Python
- C / C++
- C#
- Objective-C
- Ruby
- Visual Basic
Я объединил С и С++ и проигнорировал CSS с shell-скриптингом. CSS не является языком программирования как таковым, хотя и близок к препроцессорам. Shell скрипты полезны вне зависимости от осваиваемых вами технологий, но вы не найдёте работу, где был бы востребован лишь этот язык.
GitHut и RedMonk по сути аналогичны, но этого и стоит ожидать, поскольку они используют GitHub как первичный источник данных. Оба анализируют скорее публичные, чем приватные репозитории, что может вызвать отклонение результатов в сторону open source технологий.
TIOBE подвержен влиянию ресурсов поисковых систем. Возможно по этой причине С возглавляет список — язык был создан в 1969 и доступно множество исторических документов. Новые языки, такие как Ruby и Go, неизбежно оказываются внизу списка.
Образовательные ресурсы, скорее всего, оказывают влияние на результаты. Например, Python в основном используется для изучения программирования в школах и колледжах. Тысячи студентов задают вопросы и завершают проекты, но, судя по моему опыту, трудовые предложения по Python редко сравниваются с аналогичными по PHP или Ruby, несмотря на то, что он стоит выше в нескольких списках. У Java похожее преимущество, поскольку у него разнообразные сферы применения: в образовании, вебе, настольных и мобильных разработках.
Востребованность разработчиков родных приложений остаётся высокой, особенно в обзорах, касающихся работы. RedMonk сообщает, что Swift менее чем за шесть месяцев, обойдя 46 позиций, переместился на 22ю. Однако, разработка приложений — молодая дисциплина. В сфере десктопного и веб программирования существует гораздо больше вакансий и их легче заполнить, возможно поэтому предложения работы удаляются быстрее.
В заключение, применение языка подвергается сильному влиянию.
1. Отдельный веб-сайт или приложение требует огромного количества технологий, и возможно это ставит их выше десктопных языков.
2. Вы можете на скорую руку набросать образцы кода с помощью нескольких строк CSS, JavaScript, PHP, Ruby, Python или shell-скрипта. Но это не обязательно касается таких языков как С, C#, Objective-C и Java, которые, как правило, применяются среди меньшего количества проектов большего размера.
Тренды
Сравнивая сегодняшние списки RedMonk и Jobs Tractor со старыми за 2014 год, обнаруживаем, что на удивление изменилось слишком мало. Несколько языков переместились выше или ниже, но новых не появилось, так же как и нет резких скачков в первую десятку.
Не существует «наилучшего» языка.
Мало разработчиков имеют роскошь (или скуку?) работать с одной технологией.
Если вы рассматриваете клиентский JavaScript, то вы далеко не продвинетесь без должного понимания HTML, CSS, форматов изображений, инструментов и заморочек браузеров. Разработчикам серверной стороны на NodeJS, PHP, Ruby, .NET и Java в норме требуется понимание web-серверов, HTTP, SQL/NoSQL баз данных, а также форматов обмена данными, таких как XML и JSON. Даже тем, кто пишет на одной платформе простое десктопное приложение или родное приложение для мобильного устройства, требуются знания и опыт касательно веб соединений, хранения данных, IDE и инструментов разработки.
Чем больше технологий вы знаете, тем большим количеством знаний вам необходимо располагать.
Обзоры занимательны, но не полагайтесь на них при выборе карьеры. Если вы больше ничего не почерпнули из этой статьи, то помните:
те, кто выбирают язык, ориентируясь на данные из исследований/обзоров или на денежные перспективы, проиграют
Существует один секрет, касающийся того, как стать превосходным разработчиком:
просто создавайте что-нибудь
Сперва найдите проблему — особенно такую, которая вам интересна или из которой вы можете извлечь пользу. Возможно это будет создание сайта-визитки, приведение в порядок своих финансов, автоматизация своего дома или рассылка случайных твитов своим подписчикам. Убедитесь, что цели достижимы; даже лучших разработчиков бросило бы в дрожь от мысли, что необходимо создать клон Call of Duty или WordPress.
Теперь выберите подходящий набор технологий. Может быть несколько вариантов, но не пытайтесь навязать язык для решения. Вы можете написать родное мобильное приложение на Perl, но ресурсы встречаются редко и это будет упражнение, которое приведёт к разочарованию.
Затем создайте своё решение. Google, образцы кода и разработчики, которые пишут на том же языке, будут в помощь, но не ожидайте, что они дадут ответы на все вопросы. Ваш проект уникален (или должен быть уникальным) и существует лишь один человек, который может вас научить программировать — это вы.
Наконец, не надейтесь сразу же стать кодовым ниндзя. У некоторых людей есть природные способности, но и они также тратят огромное количество времени на оттачивание своих навыков и всё время изучают новые техники и технологии. Даже самые младшие роли предполагают наличие опыта разработок в несколько лет. Если вы определитесь с тем, над чем хотите всё время работать, то существует большое количество онлайн ресурсов, таких как наш собственный Learnable, которые вам могут в этом помочь.
Подведём итог: лишь несколько людей добьётся успеха в изучении языка ради изучения как такового — это нудное академическое упражнение. Лучше изучать язык, который поможет вам решить реальную проблему. Не волнуйтесь, если эта технология устарела или не входит в первую десятку — все языки концептуально схожи и ваши навыки можно перенести.
Не переживайте по поводу своего выбора: просто создавайте что-нибудь.