Если вы обладаете твёрдым намерением заниматься разработкой, но пока не уверены, какой язык программирования (ЯП) выбрать в качестве первого, эта статья для вас. Сравним наиболее актуальные языки: их области применения, особенности, плюсы и недостатки, сложность в освоении для новичка, спрос на рынке труда. А пока поделимся советами по выбору первого ЯП:
1) Важно определиться с областью разработки — лучше выбрать из востребованных сегодня и перспективных в будущем. Вам должно быть интересно то, чем вы занимаетесь, чтобы успешно преодолевать трудности, которые неизбежно возникнут в процессе учебы и работы.
2) Если не уверены, чем хотите заниматься, не стоит выбирать узкое направление – в будущем сложнее будет маневрировать.
3) Если изучаете с нуля и пока не уверены в своих силах или намерении, лучше выбрать язык с простым синтаксисом – в них команды задаются английскими словами, поэтому их легко запомнить.
4) Как можно больше практиковаться, использовать язык в реальных задачах, не ограничиваться теорией.
5) Хорошо, если в процессе обучения у вас будет наставник, поддержка сообщества, возможность изучать актуальную литературу.
6) Не стоит опираться только на популярность языка – рейтинги все время меняются, и вам может подойти любой из самых известных языков. Но чтобы ориентироваться, какие движения происходят в сфере, можно использовать, например, рейтинг популярности ЯП — индекс TIOBE.
7) Актуальные требования и уровень заработной платы можно отследить, анализируя вакансии на ресурсах по поиску работы hh/ linkedin.com/хабр карьере.
Рассмотрим самые известные и используемые на данные момент ЯП.
Язык | Области применения | Сложность в освоении для новичка | Особенности, преимущества языка | Недостатки, сложности языка | Спрос/число вакансий с упоминанием по РФ на нояб 2020 (по данным hh.ru) |
Python | Бэкенд-разработка. Машинное обучение и data science. Анализ данных. | Достаточно лёгкий в освоении. Простой синтаксис, много библиотек, активное сообщество. | Рекомендуют в качестве первого ЯП. Для трудоустройства в качестве разработчика знания одного ЯП Python чаще всего недостаточно. | В других областях применения сильно проигрывает C++ и многим другим ЯП по эффективности. | 7 265 |
Java | Бэкенд-разработка в веб. Разработка приложений (Android) и ПО. Наука и исследования. Геймдев. Часто используется в разработке продуктов в финансовом секторе. | Умеренная сложность. Будет легче изучить с базовым пониманием классов, фреймворков, пакетов и объектов. Плюс — огромная поддержка сообщества. | Старый «стабильный» язык. Подходит для крупномасштабных длительных проектов. | Относительно медленный во время выполнения. Довольно сложно читать код. | 7 520 Уже много лет один из лидеров по количеству вакансий. Cпрос почти не растет, но остается на высоком уровне. |
C++ | Широкая сфера применения. Микроконтроллеры. IoT (интернет вещей). Десктопные и мобильные приложения. Кроссплатформенные приложения. Веб. Геймдев. Системы прогнозирования, моделирования, обработки статистики. | Сложен в изучении — для тех, кто не ищет лёгких путей. Порог входа высок, требования к Junior значительные. | Разработка на нём занимает значительное время, но дает большие возможности. C++ используют для требовательных к быстродействию программ. Например, на нём написаны продукты Adobe. | Выражает идеи ООП. Потребуется время, чтобы понять, чем различаются виртуальные, абстрактные, приватные и публичные методы. | 3 549 Cпрос почти не растёт, но остаётся на высоком уровне. |
C# | Десктопные программы. Бэкенд веб-приложений. Геймдев (игры на самом популярном движке Unity). Главный язык платформы .NET. | Умеренная сложность изучения. Средний порог вхождения. | Будет использоваться и развиваться, пока есть пользователи Windows и существует сам Microsoft. Гораздо проще освоить, зная синтаксис С/С++. На официальном сайте Microsoft есть множество справочников. Большое сообщество. | В основном, ориентированность на Windows-платформу (.NET) | 3 920 Вакансий стабильно много. |
C | Системное программирование (разработка баз данных, драйверов, компиляторов и интерпритаторов etc). Написание программ под микроконтроллеры. | Средней сложности в изучении. Сам язык относительно несложный, но нужно понимать, как работает железо. Немного вспомогательной литературы. Достаточно высокий порог вхождения. | Программы, написанные на языке C, выполняются быстро. Можно написать программы любого уровня сложности. | Не используется в современной веб-разработке. | 2 354 |
PHP | Создание сайтов и веб-приложений: лэндинги, интернет-магазины, браузерные игры и т.д. | Умеренно лёгок, считается подходящим для новичков. Много документации и готовых решений. Большое сообщество. | БОльшая безопасность благодаря закрытому исходному коду. | Сравнительно невысокая з/п программистов уровня Middle — специалистов много. | 4 561 |
Go (Golang) | Написание консольных утилит. Написание серверной части веб-приложений. | Считается в изучении легче, чем большинство ЯП. Нет громоздкого ООП. | Работает с высокими нагрузками. Программы могут исполнять одновременно несколько задач. | Ограниченный функционал языка. Недостаточная поддержка для windows по сравнению с Linux или Mac OS X. | 1 672 Преимущественно спрос от крупных корпораций. Прогнозируется повышенный спрос в 2021. |
JavaScript | Самый популярный ЯП в веб-разработке. Частично используется и в других областях: мобильные и офисные приложения. | Умеренная сложность в изучении. При затруднениях можно получить помощь от огромного сообщества. | Для работы нужен только браузер или его движок. Сопутствующие технологии активно развиваются, нужно быстро осваивать новое. | Кроме освоения самого ЯП, нужно научиться пользоваться инфраструктурой, изучить фреймворки и сопутствующие технологии — это немного осложняет путь новичка. | 9 177 Один из наиболее востребованных сейчас ЯП. Большой спрос. |
Scala | Часто используется в проектах, где раньше писали на Java. Популярен в банковской сфере. | Умеренно сложный для изучения: необходимо освоить принципы ООП и функционального программирования, нужны определенные знания Java. | Высокая производительность кода. Синтаксис удобно читать. Открытый исходный код. | Плюсом для разработчика будет являться знание Java, поскольку пересекаются многие технологии. Не используется для создания десктопных приложений. | 604 Пока не очень много вакансий по России, но в будущем может заменить Java. |
Kotlin | Разработка приложений для Android. | Достаточно прост для изучения. Гибкий и лаконичный синтаксис. | Cовместим с Java. Сожет быть скомпилирован в JavaScript. Чаще используется в небольших проектах. | Android-разработчику желательно знать и Kotlin, и Java, поскольку во многих проектах используются оба языка. | 1523 Хотя в последние годы популярность языка возросла, пока вакансий не так много. |
Swift | Разработка iOS-приложений. | Достаточно прост для изучения: синтаксис очень близок к разговорному английскому, его легко читать, и он прост для изучения. | Лаконичный синтаксис и высокая производительность кода. Совместим с Objective-C. | Сложно прогнозировать перспективность. Почти не используется за пределами разработки под Apple. | 1056 |
Ruby | Веб-приложения — в паре с фреймворком Ruby on Rails. Приложения под Android и iOS. Мобильные игры. | Довольно низкий порог входа для новичков, прост в изучении. | Читабельный синтаксис. Позволяет создать сайт со сложной архитектурой и динамическими страницами без необходимости работы с базами данных и использования SQL-запросов. | Более низкая скорость выполнения по сравнению с другими ЯП. Недостаточно ресурсов для изучения, небольшое сообщество. Нужен уверенный английский язык для понимания оригинальной документации. | 675 БОльшая часть вакансий подразумевает связку Ruby + Ruby on Rails. |
Rust | Универсальный язык. Разработка ОС. Фронтенд и бэкенд веб-приложений. Разработка игровых и браузерных движков. Блокчейн-технологии. | Считается сложным в изучении для новичков – мало вспомогательной литературы и небольшое сообщество. | Cовместим с Mac и Unix-подобными системами. Из успешных проектов — Dropbox, Coursera. | Язык развивается интенсивно, поэтому не хватает актуальной литературы для изучения. | 75 В будущем возможна гораздо бОльшая востребованность. |
Dart | Создание веб-приложений, серверов. Создание IoT-устройств. Позиционируется как альтернатива JavaScript. | Умеренно лёгок в изучении. На данный момент считается скорее дополнительным языком, поэтому не рекомендуется изучать его в качестве главного ЯП. | Из плюсов: удобен в разработке. Высокая скорость исполнения кода. Создан и поддерживается Google. | Малое сообщество для поддержки в изучении. За пределами Google не так популярен. Сложно спрогнозировать перспективность. | 77 Небольшой спрос, но в то же время и маленькая конкуренция. |
R | Анализ данных. Машинное обучение. Статистическая обработка данных. | Умеренная сложность в изучении. | Большая мощность. Открытый исходный код. Большие статистические возможности. | R — это статистический язык, поэтому не такой интуитивный, как Python. БОльшая часть литературы на английском языке. | 612 Гораздо меньший спрос по сравнению с Python. |
Главное – не бояться ошибиться и выбрать «не то», не предаваться бесконечной рефлексии, а действовать. Пробуйте изучать разные интересующие вас направления и технологии, как можно больше практиковаться. В процессе работы с языком почувствуете, нравится ли вам работать с этим ЯП, интересны ли задачи, которые можно решить с его помощью. Стоит помнить, что язык программирования выбираете, скорее всего, не «единственный» — ведь за время профессиональных поисков и работы над разными проектами многие разработчики осваивают несколько. Успехов в учёбе!