Как выбрать язык программирования для изучения

Какие языки программирования учить?

Чем больше освоишь, тем круче будешь

Довольно популярное мнение среди разработчиков, что уровень квалификации и зарплата зависят от количества языков программирования, которыми разработчик владеет.

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

Конечно, это не значит, что надо ограничивать свой кругозор единственным языком. На мой взгляд, секрет успеха в том, чтобы стать профи в чем-то одном, а затем осваивать смежные области, которые будут дополнять друг друга и двигать в направлении одной цели. Например, если вы занимаетесь Web-разработкой, будет плюсом знать какой-то язык для бэкэнда и JavaScript для фронтэнда. Но если я буду учить С++ для бэкэнда, то знания JavaScript для фронтэнда мне ничего не даст, потому что я никогда не буду использовать их вместе.

Обычно, с одного языка пересесть на другой не так сложно из-за схожего синтаксиса и общих принципов. Например, с C # на Java. При этом вокруг каждого языка есть своя большая экосистема: библиотеки, фреймворки, либы. А вот на это уже нужно много времени, и быть достаточно высококвалифицированным специалистом в двух-трех разных областях в программировании очень сложно.

Рынок вакансий диктует условия

Если осваивать программирование с целью карьеры, а не в качестве хобби, ориентироваться надо на рынок вакансий. Идем на HeadHunter и видим такую картину

Как выбрать язык программирования для изучения

Зеленым выделены языки с положительной динамикой вакансий. За год Kotlin и Go впервые оказались в этом списке. Красным выделен Ruby — для него число вакансий сокращается, и возможно, скоро из топ-10 его вытеснит какой-нибудь другой перспективный язык.

Может показаться, что если выбрать что-нибудь экзотическое, у вас будет меньше конкурентов, а значит проще найти работу. Это не совсем так. Работодатели тоже идут на hh, смотрят кандидатов и решают, на чем запускать проекты, под которые реально собрать команду. Замкнутый круг. Поэтому мой совет с точки зрения развития карьеры: выбирайте популярный язык, при этом ориентируйтесь на спрос на рынке труда, а не по каким-то другим рейтингам.

Вместо того, чтобы обсуждать актуальность отдельно взятого инструмента — а именно этим являются языки программирования — я рассмотрю их в разрезе 4-х направлений разработки и составлю наборы навыков, необходимых для решения разных задач.

Web-разработка

Здесь больше всего вакансий, но и сильнее конкуренция среди специалистов, т.к. направление развивается уже много лет. Web-разработка состоит из Frontend — визуальная часть сайта, то, с чем взаимодействуют пользователи, и Backend — серверная часть сайта.

Начальный маршрут для фронтендера:

HTML, CSS — языки верстки

JavaScript — для интерактивных элементов

ECMAScript / Typescript — расширения JavaScript, дающие больше возможностей

Опыт работы с одним из фреймворков: React / Angular / Vue

Как правило, выбор фреймворка не столь принципиален: работодатель готов рассмотреть кандидата с опытом в любом из трех, т.к. довольно быстро можно пересесть на нужный специально под проект.

Для бэкендера есть несколько вариантов. Каждый пункт в списке — пара из языка и его фреймворков:

PHP + Laravel / Yii 2 / Symphony

Javascript + NodeJS (Express.JS, Nest.js, TypeScript, GraphQL, Apollo)

Каждый из наборов актуален для написания серверной части сайтов, поэтому можно выбрать на свое усмотрение. В любом случае понадобится овладеть еще и этими знаниями:

HTML & CSS — понимание верстки сайтов

SQL (PostgreSQL / MySql) — работа с базами данных

Архитектуры и паттерны — как писать код, который легко поддерживать и масштабировать

В большинстве случаев это необходимый минимум, джентельменский набор для бэкенд-разработчика, работающего над сайтами. Далее, можно развиться как разработчик в 2 разных направлениях: начать осваивать технологии из списка фронтендера, т.е. стать Fullstack-разработчиком, или углубиться в бекенд и хайлоад. Выбрав второй путь, будет полезно освоить следующие технологии:

NoSql (MongoDB, Reddis, Cassandra)

Брокеры сообщений: RabbitMQ / Kafka

Мобильная разработка

Более молодое направление, в котором меньше вакансий, но пока наблюдается дефицит кадров. Языки программирования выбираются в зависимости от того, под какую платформу вы будете создавать приложения.

Android-разработчик:

В большинстве проектов нужно знать и Java и Kotlin

Новый код чаще пишется на Kotlin, однако очень много кода, который нужно поддерживать, написан на Java

Kotlin молодой, но очень перспективный язык, созданный питерской компанией Jetbrains в 2016 году. Он полностью совместим с Java, но примерно на 40% короче его, что значительно ускоряет разработку. Кроме того, в какой-то момент Google, устал от исков со стороны правообладателей Java за использование кода в Android и назвал Kotlin предпочтительным языком для Android-разработки. Сейчас все чаще приложения пишут на нем. Однако на текущий момент все еще очень много проектов, написанные на Java, которые нуждаются в поддержке и развитии. Поэтому Android-разработчику надо знать оба языка, чтобы уметь читать и вносить изменения в старый код.

iOS-разработчик:

Достаточно знать Swift

Старый код написан на Objective-C

Легкий и простой Swift пришел на смену и значительно потеснил первый iOS-язык Objective-C. Эти языки несовместимы, поэтому новые проекты начинают на Swift и его вполне достаточно для разработки на платформе. А Objective-C остается актуальным только для старых больших проектов, которые не решились переписывать на Swift.

Что касается востребованности, то Java и Kotlin универсальные языки, которые используют не только для мобильной разработки и под различные платформы. А вот Swift подходит исключительно для мобильной разработки под iOS и десктопной разработки под MacOS.

Еще один путь мобильного разработчика — освоить библиотеку ReactNative для JavaScript. Она устроена таким образом, что написанный код работает под все платформы. С одной стороны это очень удобно. Однако нередки случаи, когда появляется необходимость прописать нативный код для каждой платформы, а это значит нужно иметь наготове знания и Kotlin, и Swift.

Серверные приложения

Путь разработчика серверных приложений во многом похож на бэкендера, разрабатывающего сайты. Во-первых, надо выбрать и изучить один из языков. Сейчас в ТОП-е по количеству вакансий на российском рынке:

Во-вторых, как и бэкендеру, для большинства задач вам понадобятся навыки работы с базами данных и умение писать качественный код. Тут вам пригодятся:

SQL (PostgreSQL / MySql)

Архитектуры и паттерны

Дальше можно изучить:

Алгоритмы и структуры данных

NoSql (MongoDB, Reddis, Cassandra)

Брокеры сообщений: RabbitMQ / Kafka

Из этого самый сложный пункт — выбор языка. Я подготовил сравнительную таблицу:

Как выбрать язык программирования для изучения

Java, Python и С # между собой очень похожи и довольно универсальны. Java используют для сайтов и мобильной разработки. Python отдают предпочтение стартапы (а также крупные проекты, выросшие из стартапов) из-за его простоты освоения и универсальности. C # популярен и для сайтов, и для написания игр на движке Unity 3D. Я советую выбирать тот, с которым вы уже хоть немного имели дело и на какую сферу больше ориентируетесь. При необходимости быстро пересесть на другой из этой тройки не составит труда.

C++, на мой взгляд, один из самых сложных в освоении язык, подходящий в основном для серверных, десктопных программ и игр, реже — для Data Science. Разработка на нем занимает значительно больше времени, но дает программисту огромные возможности. C++ используют для программ, требовательных к быстродействию, например, Photoshop, или масштабных игр, так как с его помощью можно контролировать и распределять нагрузку на «железо».

Golang (Go) появился как более простая версия С++. Его легко освоить, и он заточен под высокие нагрузки и многоядерные процессоры, но имеет очень ограниченный функционал, например, нет дженериков, исключений и т.д., которыми обладают другие языки программирования. В первую очередь его целесообразно использовать для консольных утилит и highload бэкенда. Вакансии разработчика на Go открывают преимущественно крупные корпорации, хотя в последнее время спрос на разработчиков Go начал появляться и в проектах поменьше.

Разработка игр

Выбор языка во многом определяет платформу, на которой вы сможете писать игры:

C#, Unity 3D — кроссплатформенный, возможность быстро портировать игру с одной платформы на другую

C++, Unreal Engine — PC, обычно используется для масштабных игр, требовательных к быстродействию «железа»

Если по выбору языка какие-то моменты не осветил, задавайте вопросы — отвечу.

Источник

Какой язык программирования мне выбрать?

Как выбрать язык программирования для изучения

Как выбрать язык программирования для изучения

Программный директор SkillFactory.

При выборе профессии лучше всего ориентироваться на популярность, востребованность языка среди работодателей, сложность изучения и, конечно же, отрасли. Некоторые языки и наборы языков свойственны даже вполне определенным профессиям: например, Android-разработчику необходимы Java и Kotlin, а чтобы написать приложение на iOS, вам понадобится Swift. Вместе с программным директором SkillFactory Евгением Картавцом разбираем самые популярные языки программирования.

Как оценивают популярность языка программирования?

Почти всем известен индекс TIOBE, компании по разработке софта. Этот рейтинг основан на проценте запросов в поисковиках конкретного языка от запросов по всем языкам и ежемесячно составляется на основе данных из Google, Baidu, Wikipedia, Amazon и Ebay (внимание: Яндекс тут не учитывается). Он не показывает, какой язык лучше, а скорее помогает программистам проверить, насколько актуальные языки они используют.

Индекс TIOBE — не единственный в своем роде. Вот еще несколько рейтингов, на которые можно опираться:

PYPL (Popularity of Programming Language index) — рейтинг GitHub оценивает по Google Trends, к каким языкам чаще всего ищут уроки;

Stack Overflow — сервис вопросов и ответов по теме программирования проводит масштабные исследования рынка и опросы разработчиков.

IEEE — Институт инженеров электротехники и электроники ежегодно публикует на своем сайте рейтинг языков программирования, основанный на 11 параметрах и восьми источниках, включающих соцсети и GitHub.

Как выбрать язык программирования для изучения

Подробнее о популярности языков и причинах их роста мы писали на Habr.

Если вы планируете изучать язык, чтобы потом найти работу с его применением, мы советуем оценивать его популярность по количеству вакансий в вашем городе. Заходите на hh.ru, набираете в поиске Python или С++, и видите количество вакансий с упоминанием языка.

Как выбрать язык программирования для изучения

Какие языки проще, а какие сложнее?

Трудно объективно определить, какой язык проще, а какой сложнее, потому что это зависит не только от его особенностей, но и от вашего бэкграунда, желания разбираться в документации и т.д.

Относительно универсальный критерий сложности — близость языка к программированию на машинном коде. Чем ближе к нему язык, тем более он низкоуровневый. Высокоуровневые языки, наоборот, лучше адаптированы для использования программистом.

У высокоуровневых языков есть крупные стандартные библиотеки, а значит, большое количество разработанных доступных решений. Низкоуровневые языки предполагают работу с процессором, памятью и другими аппаратными ресурсами: можно контролировать всю изнанку, но из-за этого легче запутаться в синтаксисе. Впрочем, и такая классификация условна: на тему того, какой язык отнести к высокому, а какой к низкому уровню, ведутся споры.

«В целом, сложность языка — довольно субъективный вопрос. Для изучения с нуля лучше всего подходят Python и JavaScript. PHP, Swift и Kotlin — немного сложнее. Java и C# — еще сложнее. C++, на мой взгляд, самый сложный. Go — достаточно простой язык, но у него сложная сфера применения, поэтому проще всего на него переходить с другого языка».

Kotlin

Сложность: поскольку одной из целей создания языка было упростить Java, синтаксис Kotlin — интуитивно понятный и лаконичный.

Как выбрать язык программирования для изучения

Продукты: Uber, Pinterest, Basecamp.

Российская компания JetBrains представила язык Kotlin в 2016 году как альтернативу Java. Благодаря официальной поддержке Google он стал языком разработки приложений на Android. При этом он совместим с Java: код обоих языков можно использовать в одном и том же проекте. Помимо разработки Android, Kotlin используют и в серверных, и в клиентских приложениях для веб-разработок и backend.

Сообщество Kotlin живое, хоть и немногочисленное, многие общаются на форумах или в Slack. Язык развивается не очень быстро, несмотря на открытость исходного кода.

Освойте программирование на Java и Kotlin, мобильную разработку и UX/UI, разработайте свое приложение для Android. Дополнительная скидка 5% по промокоду BLOG.

Swift

Сложность: философия языка — простота и производительность, так что у него понятный, логичный и удобный синтаксис. В нем легко разбираться, если у вас уже есть база из высокоуровневых языков, но и без нее все не так сложно.

Как выбрать язык программирования для изучения

Продукты: Safari, Procreate, Kickstarter, VSCO

На Swift создают продукты для экосистемы Apple: приложения для iOS, Mac, Apple Watch, Apple TV. В этом его преимущество и недостаток. С одной стороны, разработчики на iOS востребованы, их немного, поэтому можно будет быстро найти работу. С другой стороны, приложения сильно завязаны на своей экосистеме, и на других платформах они работают с трудом, на костылях. При этом делать функциональные и красивые приложения на Swift — проще. Разрабатывая их, вы будете сталкиваться и с UI-дизайном, и с дополненной реальностью. Swift многое взял из языка Objective-C, поэтому не лишним будет знакомство и с ним, чтобы в дальнейшем развиваться в направлении разработок для iOS.

Обычно продукты Apple закрыты для сообщества, но у Swift открытый исходный код, что полезно как языку, так и комьюнити.

За 1 год обучения по 8 часов в неделю вы освоите навыки iOS-разработчика и соберете портфолио проектов. Дополнительная скидка 5% по промокоду BLOG.

Сложность: синтаксис Golang минимален, а широкая стандартная библиотека позволяет быстро разобраться в управлении командами.

Как выбрать язык программирования для изучения

Продукты: YouTube, архитектура Ozon, backend Wildberries

Go разработали инженеры Google. Это (так же, как Swift и Kotlin) — компилируемый язык, который выступает альтернативой С++ для высоконагруженных приложений. На нем можно писать сетевые приложения на промышленном уровне, поэтому на Go все чаще обращают внимание крупные ритейлеры (вроде Ozon).

По сравнению с остальными языками, этот — очень молодой (2009 год), но у него достаточно быстро растущее комьюнити, которое взаимодействует по Google-рассылке.

Программа рассчитана на 12 месяцев. В конце обучения вы сможете уверенно претендовать на позицию Junior+ Go Developer. Дополнительная скидка 5% по промокоду BLOG.

Сложность: по синтаксису PHP близок к С и Java. Но не стоит пугаться: на самом деле это относительно легкий, гибкий и доступный новичку язык. При базовых представлениях об HTML и CSS можно сразу написать простой одностраничный сайт.

Как выбрать язык программирования для изучения

Продукты: WordPress, Facebook, VK, Wikipedia.

PHP — серверный язык веб-разработок, он подходит для создания одностраничных или комплексных высоконагруженных сайтов. Он «оживляет» статичные HTML-страницы, поэтому на нем оптимально разрабатывать динамические сайты вроде соцсетей, форумов, интернет-магазинов и блогов. Мощный и высокопроизводительный PHP подходит и для проектирования баз данных тех же магазинов. Его можно использовать на многих операционных системах: язык ладит с Windows, Unix, Linux. При работе с ним нужно быть крайне внимательным, потому что из-за гибкости языка легко ошибиться в коде, а найти проблему потом бывает непросто.

У PHP бесчисленное количество сообществ. На официальном сайте структурировали основные информационные рассылки (в марте 2021-го их было 20). Почти в любой соцсети можно оперативно найти живое сообщество и обратиться за помощью.

После обучения вы будете уверенным junior-специалистом и сможете рассчитывать на среднюю зарплату по отрасли. Дополнительная скидка 5% по промокоду BLOG.

JavaScript

Сложность: можно выучить JavaScript быстро, главное — отрабатывать теорию на практике в тренажерах (подборка хороших интерактивов и обучалок). Уже за полгода можно освоить документацию, поскольку логика у него простая и гибкая. Язык мощный, а его инструменты просты и доступны.

Как выбрать язык программирования для изучения

Профессии: Frontend-разработчик / Fullstack-разработчик / Веб-девелопер.

Продукты: Frontend сайтов программируют только на Javascript, так что он используется на большинстве сайтов.

JavaScript — язык веб-разработок. Изначально на нем можно было программировать только frontend сайтов, но сейчас, благодаря Node.js, который выступает в роли веб-сервера, можно писать и серверные приложения. Язык делает сайты интерактивными и высокопроизводительными. А чтобы эффективно использовать возможности языка для создания красочных сайтов, нужно уметь пользоваться инструментами верстки HTML и CSS, знать один из популярных фреймворков (React, Vue или Angular).

В веб-разработках сообщество большое, так как fullstack- и frontend-разработчики нужны всем. Сайтов огромное количество, мы пользуемся ими каждый день, и их всегда нужно улучшать. Кроме того, такие проекты можно вести самому с нуля вплоть до самого релиза, что тоже очень ценно, если вам привычнее инди-разработка.

Цель специализации — дать полный набор скилов, необходимых для погружения в реалии разработки визуальной части веб-приложений. Дополнительная скидка 5% по промокоду BLOG.

Сложность: C# изначально перенял синтаксические конструкции языков С++ и Java, так как его разработали специально, чтобы упростить последние. У него хороший набор фреймворков (.Net, Xamarin) и библиотек.

Как выбрать язык программирования для изучения

Профессии: Разработчик игр / Fullstack-разработчик / Backend-разработчик.

Продукты: Это универсальный язык программирования. На нем можно писать серверную часть сайтов, десктопные приложения, серверные приложения и даже игры. На российском рынке популярен движок Unity 3D, который позволяет на языке C# писать игры для любых платформ: для PC, мобильных устройств, приставок или VR.

На нем удобно писать оконные приложения и веб-приложения или даже корпоративное программное обеспечение (например банковское обслуживание). Так как язык входит в пятерку самых популярных, он узнаваем, и в целом из-за обширной синтаксической семьи C# его сообщество масштабное и активное. Вы можете быть как инди-разработчиком, так и работать в команде — у вас всегда найдутся единомышленники и помощники.

Научим создавать игры на движке Unity, применять на практике ООП и программировать на C#. Дополнительная скидка 5% по промокоду BLOG.

Сложность: синтаксис у С++ устроен сложнее, чем у тех же Python или C#. Однако использование языковых средств и концепций этого языка даст лучшее понимание теории программирования и может облегчить изучение других языков в дальнейшем.

Как выбрать язык программирования для изучения

Продукты: на нем написан движок REDengine, на котором создали «Ведьмака» и Cyberpunk 2077, CCleaner, продукты Adobe, Autocad, Telegram, Microsoft 365

С++ — это один из фундаментальных языков программирования. Он быстрый, на нем вы можете заниматься оптимизацией, архитектурой ПО, решать задачи по автоматизации процессов, создавать системы моделирования. На нем можно писать с нуля программы, антивирусы, драйверы — все, что ближе к железу. Продукты, которые требуют более глубокого понимания основ программирования (роботы, нейросети), лучше создавать на С++.

Из-за сложности языка сообщество программистов более сплоченное: активнее делится кодами и библиотеками языка. Можно даже наткнуться на горячие споры: кто-то считает, что С++ идеален в качестве первого языка, а другие относятся к языку со скепсисом и не видят смысла изучать его первым.

Обучайтесь основам С++, решайте задачи любой сложности на одном из самых мощных языков программирования. Дополнительная скидка 5% по промокоду BLOG.

Python

Сложность: подходит для неподготовленного новичка. Обилие готовых библиотек (многие из которых предназначены для работы с big data) и фреймворков, а также простой синтаксис позволяют практически сразу начать программировать.

Как выбрать язык программирования для изучения

Профессии: Fullstack-разработчик / Data scientist / Data engineer / Data analyst.

Продукты: Sims 4, YouTube, Instagram, Dropbox, Bittorrent.

Преимущество Python — в его многогранности и широком применении. Его можно использовать как в веб-разработке (фреймворк Django, например, достаточно прост для того, чтобы новичок быстро разобрался в основах его использования) и работе с данными, так и в написании скриптов. Вы можете заниматься анализом данных для банковских систем, автоматизацией простых задач, разрабатывать приложения, совершенствовать голосовые помощники или обучать нейросеть (для этого, кстати, есть веб-сервисы типа Google Colaboratory, где можно бесплатно пользоваться мощным процессором TPU).

Python сейчас все активнее набирает популярность среди программистов. Из-за простоты кода его часто используют в командных проектах, что облегчает разработчикам жизнь: можно не тратить время на разбор чужого материала.

Освойте программирование на Python и Django и станьте универсальным солдатом. Дополнительная скидка 5% по промокоду BLOG.

Сложность: Сложнее, чем Python, но проще, чем C++. Довольно сильно похож на C# как по синтаксису, так и по сложности освоения. А большое количество обучающих материалов разного уровня доступно бесплатно.

Как выбрать язык программирования для изучения

Профессии: Тестировщик ПО / Android-разработчик/ Java-разработчик.

Продукты: архитектура Netflix, Spotify, Uber, веб-приложение Twitter

Java стал вездесущим из-за своей универсальности и надежности. Про него слышали даже те, кто далек от программирования, потому что на языке написаны продукты, которыми мы пользуемся каждый день (Android-приложения, игрушки, десктопные ПО, банковские системы). Он кроссплатформенный, благодаря JVM (Java Virtual Machine) его можно запускать везде. Его чаще используют в компаниях, а не в инди-проектах.

У Java одно из самых мощных сообществ. Вы сможете найти много разных проектов с открытым исходным кодом, обратиться за помощью и использовать готовые решения для своих кодов, развивая и совершенствуя их.

Ваш прямой путь в программирование на самом востребованном языке backend-разработки
+ навыки DevOps. Дополнительная скидка 5% по промокоду BLOG.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *