Если нет времени читать статью и разбираться — просто воспользуйтесь алгоритмом:
Инструкция 1. Для тех, кто хочет сравнить несколько языков программирования и выбрать лучший вариант
-
Познакомьтесь с основными направлениями в программировании и подумайте, чем бы вы хотели заниматься.
-
Изучите рынок ИТ-вакансий в своем регионе.
-
Выделите направления, которые вам нравятся и где много открытых вакансий.
-
Выпишите основные языки программирования, закрепленные за выделенными направлениями. Уделите каждому языку одну-две недели и познакомьтесь с его основами. Отмечайте: что вам нравится, не нравится и чего не хватает.
-
Когда протестируйте все языки — выберите один и переходите к обучению.
Нет универсального языка программирования, который лучше остальных подходит для обучения — считает канадская разработчица Tiffany с ютуб-канала Tiff In Tech. Языки во многом напоминают строительные инструменты, где у каждого предмета свои возможности и ограничения. Молотком, например, удобно забивать гвозди, но невозможно напилить дров. Так и в программировании: на Swift вы можете написать мобильное приложение под iOS, но не под Android.
Инструменты и языки программирования обычно подбираются под задачу. Когда человек хочет построить дом, он первым делом не бежит на рынок за инструментами. Начинает с планирования проекта: описывает детали будущего дома и прикидывает, сколько это стоит. Без проекта сложно представить, какие инструменты, спецтехника и материалы понадобятся для строительства. Такой же подход полезно применять всем, кто хочет построить карьеру в ИТ: не зацикливаться на том, какой язык программирования учить, а попробовать разобраться, в какой сфере вы хотите работать.
В программировании есть пять основных направлений. Посмотрите, что это за направления и отметьте для себя те, которые бы вам хотелось протестировать.
Embedded Development
Разработка встроенного программного обеспечения для физических устройств: холодильников, сигнализаций, бортовых компьютеров автомобилей и прочего оборудования с процессорами для обработки информации.
Embedded-разработчик должен хорошо разбираться в электронике, физике, сетевых технологиях и писать код на C или C++ — быстрых и наименее трудоемких языках программирования. Это направление для всех, кто любит создавать осязаемые вещи.
Mobile Development
Мобильная разработка делится на два вида: нативная и кроссплатформенная. Нативная разработка предполагает создание приложений под операционные системы iOS или Android. Если вы решите писать приложения под iOS, то вашим основным языком программирования будет Swift; если под Android — Kotlin.
Кроссплатформенная мобильная разработка — это когда вы с помощью одного кода охватываете сразу две системы: iOS и Android. Есть три популярных фреймворка, которые созданы специально для кроссплатформенной разработки: Flutter и язык программирования Dart, KMM и язык Kotlin или React Native и язык Java Script.
Game Development
Разработка игр под различные платформы: компьютеры, смартфоны, консоли, VR-устройства и прочие гаджеты. Программисты работают над архитектурой, механикой, алгоритмами искусственного интеллекта, анимациями, пользовательским интерфейсом, серверной частью и многими другими процессами.
В геймдеве есть два основных направления, которые привязаны к игровым движкам — вспомогательной экосистеме для разработки игр. Основные движки: Unity и Unreal Engine. Для разработки игр на Unity подходит язык C#; для Unreal Engine — C++.
Desktop Application Development
Это разработка настольных приложений под операционные системы Windows, Linux или Mac OS. В отличие от веб-приложений, десктопные программы не хранятся на удаленном сервере и не запускаются через браузер. Они могут работать, как автономные программы — без доступа к интернету.
Для создания десктопных программ разработчик должен освоить один или несколько высокоуровневых языков программирования вроде Python, Java, C++ или .NET. Кроме того, нужно понимать устройство операционных систем и владеть инструментами сборки, отладки, развертывания и тестирования приложений.
Web Development
Веб-разработка делится на два основных направления: фронтенд и бэкенд. Фронтенд — это отображение элементов в браузере: все, что можно прочитать, запустить и вывести на экран. Для фронтенда программист должен знать язык Java Script, а также языки разметки HTML и CSS. Для продвинутого уровня нужно изучить фреймворк React, чтобы разрабатывать пользовательские интерфейсы.
Бэкенд — это внутренняя архитектура, которая скрыта от пользователя когда он работает с браузером или мобильными приложениями. Чаще всего для бэкенда новички изучают следующие языки программирования: Java Script, Python, Java, Go. Дополнительно нужно уметь взаимодействовать с базой данных и языком запросов SQL. Для продвинутого уровня бэкенд-программисты изучают фреймворки: для языка JavaScript — Node.js, для Python — Django, для Java — Spring, а для Go — фреймворк Buffalo.
Отдельно стоит выделить фулстек-разработчиков. Это программисты, которые знают фронтенд и бэкенд и могут привлекаться на всех этапах создания веб-приложения.
После изучения основных направлений в программировании Tiffany рекомендует открыть сайт с вакансиями и проанализировать, какие языки популярны в вашем регионе. Это поможет понять, с какими знаниями вам будет проще трудоустроиться.
Ошибка — браться за направление, где больше платят. Работа — это значительная часть вашей жизни и если ее выполнять без удовольствия, то случится одно из двух: вы все бросите или будете терпеть ради зарплаты занимаясь бредовой работой.
Вот простой способ, как выбрать язык программирования: зайдите в YouTube и найдите любой курс для новичков. В течение одной-двух недель изучите все языки, которые соответствуют выбранным направлением и обратитесь к своим субъективным ощущениям: выпишите, что вам понравилось, чего не хватало и какие моменты раздражали.
Если самостоятельный анализ не помог — посадите перед собой близкого человека и расскажите ему о преимуществах и недостатках выбранных языков. Попросите, чтобы он по описанию подсказал, какой из вариантов вам больше подходит.
Инструкция 2. Для тех, кто хочет начать как можно быстрее
- На свое усмотрение выберите JavaScript или Python.
- Если сложно выбрать — учите JavaScript.
Для этой инструкции мы воспользовались советами инженера-программиста из Google YK Sugi с ютуб-канала CS Dojo. YK Sugi рекомендует не экспериментировать и выбирать JavaScript или Python — простые языки программирования для начинающих.
В 2022 году в исследовании Stack Overflow Developer Survey 2022 появился отдельный раздел, в котором подсчитан рейтинг популярных языков программирования для обучения. Этот рейтинг подтверждает, что большинство разработчиков действуют так, как советует YK Sugi: изучают JavaScript вместе с HTML и CSS или выбирают Python.
Если не хотите сравнивать JavaScript и Python — выбирайте JavaScript. Чтобы понять почему, посмотрите дорожные карты фронтенд и бэкенд-разработчика. JavaScript — это обязательный язык программирования для фронтендера и полезные знания для бэкендера. Кроме того, JavaScript применяется для многих задач бэкенда наравне с Python, Java, PHP и другими языками. Если вы начнете изучать фронтенд и внезапно переключитесь на бэкенд-разработку, знания JavaScript не пропадут зря.
Другие преимущества JavaScript перечислили эксперты: бывший техлид в Google с канала TechLead и основательница DappCamp Притти Касиредди с freeCodeCamp.org:
- Можно за короткое время запустить проект и поделиться результатами. Эти стимулирует больше практиковаться и нарабатывать портфолио.
- Быстрая обратная связь. Вы пишите код в IDE, обновляете браузер и сразу видите результат. Языки программирования вроде Java или Haskell так не могут — они требуют компиляции и усложняют обучение.
- Универсальность. Код на JavaScript работает в любом современном браузере, устройстве и операционной системе. Его можно использовать для разных целей: как язык сценариев, для создания веб-приложений или серверных API, для ботов и приложений под IOT-устройства, для настольных и мобильных программ, проектов виртуальной реальности.
- Доступность инструментов. Вы можете установить любую IDE и сразу писать код — больше не нужно никаких дополнительных программ. Если бы вы решили программировать под iOS или Android, то пришлось бы настраивать Xcode или Android Studio — это усложняет начало работы.
- Много вакансий для начинающих и опытных разработчиков.
Инструкция 3. Для тех, кто не выбрал специализацию и не хочет сравнивать языки программирования
- Изучайте язык C.
- Если есть время, желание и энтузиазм — C, C++ и Java.
C — это первый язык программирования, с которым студенты знакомятся во многих колледжах. Знания языка C позволяют человеку не переживать за специализацию, пройти обучение и работать в любой ИТ-отрасли. Такое мнение сложилось у индийского разработчика, преподавателя и создателя ютуб-канала Telusko.
При этом автор считает, что если новичку сложно выбрать специализацию и у него есть время на обучения, то после языка C он может выучить C++ и Java. Получится следующее: язык C даст общее представление о программировании, C++ позволит разобраться с работой объектов, а знания Java откроет дорогу к любому работодателю.
Язык C высоко оценил и другой разработчик — американец, владелец Discord-сервера и автор ютуб-канала Engineer Man. По его мнению у каждого языка есть разные уровни ценности: S — лучший язык; F — худший; A-D — промежуточные варианты. Язык C вместе с Java Script находится на высшем уровне и считаются лучшими для работы.
Engineer Man составлял рейтинг на основе опыта и оценивал языки по доступным фичам, производительности, сценариям применения, простоте изучения и удобству использования. Ниже — краткая характеристика и комментарии блогера по языкам.
Уровень S
Языки: C, Java Script. Это мощные многофункциональные языки, которые по возможности стоит изучать и использовать в первую очередь.
- C — важнейший язык, которые лежит в основе всех вычислений: на нем написано большинство операционных систем, а также интерпретаторов и компиляторов для других языков программирования. За 50 лет C почти не изменился и сейчас на н ем можно написать операционку по стандартам 1989 года. Блогер считает C единственным языков, который вышло правильно разработать с первого раза.
- Java Script — вездесущий совершенный язык, на котором легко и удобно писать код. С ним легко начать работу для тех, кого интересует фронтенд-разработка.
Уровень A
Языки: Rust, Python. Это популярные, полезные и быстрорастущие языки, которые из-за своих архитектурных особенностей не могут подняться выше.
- Rust — это язык, которые решает уникальную проблему: работает быстро как C++, не подвергает программу опасности ручного выделения памяти и за счет своего сборщика мусора работает без ущерба для производительности. Однако у Rust непростой синтаксис, поэтому новички не могут с л егкостью им пользоваться.
- Python — язык общего назначения, который из-за сверхпопулярности используется для всего. Даже для тех ситуаций, в которых он неуместен.
Уровень B
Языки: C#, C++, Ruby. Хорошие и полезные середнячки для технарей.
- C# — альтернатива Java, если нужно писать программы под Windows.
- C++ — не решает новых проблем, но включает в себя множество дополнительных функций, которых нет в C. Полезен для разработки операционных систем, высокопроизводительных вычислений, а также в разработке видеоигр.
- Ruby — язык общего назначения и веб-разработки. Стал популярным из-за фреймворка Ruby on Rails. У Ruby лаконичный синтаксис, который трудно читать.
Уровень C
Языки: Swift, Type Script, Perl, Kotlin, Go. Это удобные и функциональные языки, которые по разным причинам не смогли полностью раскрыть свой потенциал.
- Swift отлично заменил Objective-C, хорошо продуман и быстро работает. Однако его проблема — его нельзя использовать нигде за пределы экосистемы Apple.
- Type Script становится постепенно ненужным. Причина в Java Script, который ежегодно обрастает множеством дополнительных функций в синтаксисе.
- Perl — старый и сильно видоизменившийся язык, который не предлагает разработчикам уникальных функций и нужен только для обслуживания старых продуктов. Здесь непонятно, почему Engineer Man не присвоил Perl уровень D.
- Kotlin — мощный современный язык, приемник Java. Однако пока конкуренции между языками нет и Kotlin в основном используется для разработки под Android.
- Go — еще один проект от Google. Язык с отличной моделью параллелизма, который создавался для разработки веб-сервисов. Минусы: сложный синтаксис.
Уровень D
Языки: Dart, Lua, Java, PHP. Это устаревающие тяжеловесные языки, которые удерживают позиции из-за огромного количество кода, которые пока не переписать. Если можно — разработчики используются более современные языки.
- Dart — язык от Google, который не решает новых проблем. Если бы не активное продвижение и фреймворк Flutter, то про него все бы уже давно забыли.
- Java — существует около 12 альтернативных решений, которые позволяют создавать байт-код совместимый с виртуальной машиной. Новые решения не уступают Java по производительности, но более удобны для работы. Преимущество Java только в количество кода, который нужно обслуживать.
- Lua — старый язык с ограниченным количеством вариантов использования.
- PHP — простой и удобный язык для старта и использования. Создатели приложили много усилий, чтобы наладить совместимость старой и новой версий. Но ранние версии были сырыми и поэтому в версии PHP 2021 года сохраняются проблемы 1998 года. Кроме того, PHP предназначен только для веб-разработки.
Уровень F
Языки: Objective-C. Это сложный и плохо собранный язык с неудобным синтаксисом, от которого компания Apple отказалась в 2014 году. Его заменил Swift.
А вдруг я неверно выберу язык. Как быть, чтобы не прогадать?
Языки программирования появились восемьдесят лет назад и развивались вместе с эволюцией электронно-вычислительных машин. Ощутите разницу: первые языки обрабатывали команды из нулей и единиц, а сейчас — управляют нейросетями и ИИ.
В мире насчитывается около 500 языков программирования, а если технологии продолжат развитие, их количество будет увеличиваться. Причина в том, что многие языки устаревают и становятся невыгодными для коммерческой разработки. Для примера посмотрите, сколько проблем накопилось в Java и почему многие переходят на Kotlin.
Если планируете долгую карьеру в ИТ — высока вероятность, что через время вам придется выучить новый язык или сменить специализацию. Иначе вы можете стать заложником технологии — человеком, которые пишет старый код и не нужен рынку.
Хорошая новость: многие языки программирования похожи по структуре. Поэтому когда выучите первый язык, второй и последующие даются проще — у вас есть основа, на которую останется наложить синтаксис и особенности нового языка. Чтобы в этом убедиться, почитайте пост на Reddit пользователя с ником davidccoin — он начинал работать в НАСА и за карьеру сменил сотню языков, от BASIC до Python.