Сергей Немчинский: Какой язык программирования выбрать в 2022 году - FoxmindEd
07.08.2022

Сергей Немчинский: Какой язык программирования выбрать в 2022 году

Сергей Немчинский
10 минут просмотра
Сергей Немчинский: Какой язык программирования выбрать в 2022 году

Предисловие 

Вопрос «Какой язык программирования выбрать» нам задают всегда, причем в числе первых. Приток новичков в IT не прекращается, он только усиливается, и всем интересно, какой язык лучше изучать в первую очередь. Год назад Сергей Немчинский уже детально отвечал на этот вопрос. Но ситуация на рынке меняется, так что мы сделали новый обзор от Сергея Немчинского о том, какой язык программирования выбрать в 2022 году.

Выбор профессии

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

Поговорим о выборе инструментов. Дело в том, что если вы никогда не занимались программированием, вам будет сложно сразу выбрать профессию. Откуда вам знать, что вам больше по душе, back end, front end, или вообще базы данных. Для человека, который никогда не прикасался к разработке, это все примерно об одном.

А вот синтаксис языка — это то, что вы можете пощупать и оценить сразу. И знакомство с языком поможет понять, что вам нравится, а что нет. Возможно, вам сразу понравится, и вы скажете:

— Вау, какая крутая штука, я все хочу с ней сделать.

А может быть и наоборот, язык будет сбивать вас с толку, вам будет неудобно и неприятно, и вам не понравится . То есть именно язык поможет выбрать профессию, так что первым делом все же выбираем язык.

Как выбрать язык программирования: рецепт от Немчинского

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

— Я ничего не знаю, за что мне браться с самого начала?

У меня есть фирменный рецепт, записывайте. 

Низкоуровневые языки 

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

Это направление для тех ребят, которые засыпают и просыпаются со своим любимым паяльником. Если вам неинтересно, куда побежали электрончики, с этими языками вам будет некомфортно. Я сам с них начинал, и именно так со мной и было. Но если вы любитель поковыряться в железе, вам и искать больше не надо. Какой именно язык выбрать? По вкусу. Я советую начать с языка С. На этом языке много работы, и он же вам поможет составить впечатление о низкоуровневых языках.

Front End разработка 

Первая группа — языки для front end, в нее входит ровно один язык, это JavaScript. Если вам во front end, садимся и изучаем JavaScript.

Языки динамической типизации

Вторая группа — языки динамической типизации, в первую очередь предназначенные для

написания небольших сайтов. Самые распространенные из них это безумно

популярный PHP, хайповый Python и Ruby. Я из этого блока рекомендую PHP: несмотря

на ваши рассказы, что этот язык умер, работы на нем много.

Языки строгой типизации 

Последняя группа — это языки строгой типизации, предназначенные для back end разработки. Сюда относятся безумно популярные Java и C#. Что из них пробовать? На ваш вкус.

Языки мобильной разработки 

Отдельно стоят языки мобильной разработки, и выбрать из них очень просто. Если перед вами на столе лежит iPhone, учите Swift. Если Android — Kotlin. А выбирать кроссплатформенные языки типа Flutter я новичкам не советую.

Что делать с группами языков 

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

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

Если вы влюблены в этот язык, и хотите заниматься только им, а остальные вас не интересуют, приступайте к углубленному изучению. Но если вам вроде нравится, но что-то смущает — двигайтесь дальше и повторите процедуру еще для одного языка, только из другой группы. Попробовали front end — теперь попробуйте языки с динамической типизацией. 

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

Если с первой попытки выбрать не получилось 

Вот мой рецепт. Возьмите лист бумаги или откройте таблицу Excel. Впишите туда все языки, которые успели попробовать за это время. И для каждого языка перечисляйте плюсы и минусы. Это должны быть ваши субъективные впечатление, а не факты из интернета.

Допустим, вы попробовали C#. Пишете:

— Очень легко устанавливать IDE.

Вы попробовали Python. Пишете:

— Очень легко написать первое приложение.

Попробовали Java. Пишете:

— Не понравилось, сложно и долго все настраивать.

На этом этапе вы, скорее всего определитесь, какой язык вам нравится больше. Вы начнете подсознательно подбирать плюсы для того языка, который вам понравился. Только не пишите официальные факты типа “нет четкой типизации” — это неважно. Только то, что лично вас зацепило. 

Если же и это не помогло, берете своего близкого человека — супруга, маму-папу, девушку, друга, и спрашиваете его:

-Скажи, какой язык мне больше подходит, кем ты меня видишь?

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

Вот вы и выбрали язык. Но если вы и на этом этапе не выбрали — бросьте монетку, в конце концов. А после того, как бросили, прислушайтесь к своим ощущениям. Если вы испытали радость от того, что монетка упала именно так, поздравляю, вы сделали выбор. Если почувствуете раздражение или огорчение — это тоже подсказка.

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

Теперь пойдем по списку языков. Во всех списках популярности первые 10 позиций примерно одни и те же. Я на свой взгляд отобрал языки, на которые стоит обратить внимание. Но это мое субъективное представление, и если вам безумно нравится язык не из списка — займитесь им, и не слушайте меня.

JavaScript

Первый язык это JavaScript. Я не очень его люблю, но этот язык входит в тройку самых популярных в абсолютно всех рейтингах. А уж в Украине это самый популярный язык. И это можно понять: JavaScript — это практически весь front end и немножко back end. Правда, в back end его совсем чуть-чуть, это Node.js, но он там есть.

Все попытки делать front end на каких-то других языках настолько ничтожны, что и говорить о них не будем. Зато во front end вместе с JavaScript обитает его идейный брат-близнец и его надстройка, это TypeScript. Мне он нравится куда больше, я привык к языкам со строгой типизацией, и языки с динамической типизацией мне не по душе.

Если вам нравится JavaScript и вы идете на фронтендера, хочу предупредить вас о двух вещах. Во-первых, front end разработчик — это человек, который работает с версткой, хочет он этого или нет. Так что вместе с основами JavaScript изучите HTML и CSS, потому что работать с ними все равно придется. HTML неплохо знать и бекэндерам, даже если они пишут не на JavaScript, а вот CSS для них лишний.

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

Java

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

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

Java — достаточно старый язык. И хотя он моложе того же Python лет на 10, создается впечатление, что он стар как мир, и на нем очень много чего написано. И это правда. Например, на Java написаны все банки мира, все финансовые и страховые системы, большая часть телекома. Java — это то, что находится под капотом самых старых и дорогих вещей. Замены не будет, скорее всего, никогда, в этом просто нет смысла — заменять то, что работает.

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

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

Python

Следующий язык — это суперпопулярный сейчас Python. Язык это довольно старый, кажется, он появился аж в 1989 году. Его внезапная популярность имеет много причин, но главная из них — Python это удобный инструмент автоматизации для профессий, не связанных с разработкой. Оказалось, на Python можно легко и быстро склепать какой-то скриптик. Поэтому им пользуются и DevOps инженеры, и Automation QA, и специалисты по Machine Learning, и Data Science, — словом, все, что сейчас автоматизируется, делается на Python.

Как вы поняли, Python — язык гибкий и простой. Именно поэтому на нем так удобно писать скрипты для автоматизации. Увы, но именно поэтому на нем можно писать очень говняный код. В результате разрабатывать на Python большие системы можно, но больно. Нет, они существуют, но выбирая Python в качестве первого языка, будьте готовы к работе с небольшими приложениями.

В 2022 Python остается на хайпе. Причем этот хайп не у заказчиков, они в восторге от совсем других технологий. Python на хайпе у молодых разработчиков, в это направление двинулось очень много народу. Поэтому, прежде чем выбирать этот язык, пять раз подумайте. Если вы сделали этот выбор, глядя на других, одумайтесь и выберите другой. В Python сильно повысился порог входа за счет огромного количества новичков. А как директор учебной компании, могу сказать, что за выпускниками Python к нам никто не обращался. Если же именно этот язык вам очень нравится, тогда выбирайте Python.

PHP

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

— Да PHP давно умер, вот есть прекрасный язык, Python!

Есть суровые цифры, которые показывают, что на PHP разрабатывается почти в два раза больше проектов, чем на Python. Плюс к тому, PHP был создан в середине девяностых, и значит, он моложе Python лет на 10. Еще плюс, примерно восемьдесят процентов всех сайтов в интернете создано на PHP. Видимо, не так уж и плох этот язык!

Мне синтаксис PHP нравится гораздо больше, чем у Python, хоть он и более многословный. Но это из-за того, что на PHP я работал, а на Python нет. А вам придется подумать самостоятельно.

Спрос на PHP-разработчиков выше, чем на специалистов по Python. По задачам, по наличию фреймворков, по возможности где-то что-то доучить PHP от Python не отстает. У Python множество библиотек для автоматизации вещей, не связанных с программированием — Data Science, распознавание образов, и так далее. Но если вы web-разработчик, вам это особо не нужно, так что web-разработчикам и на PHP отлично.

C#

Следующий язык нашего обзора — Си Шарп (C#). Надо отдать должное, компания Microsoft осознала свои ошибки и выпустила .Net Core, с которым можно раскручивать приложения на Unix-like (читай Linux) системах. В результате дела C# последние несколько лет идут в гору.

Главное преимущество C# перед Java –на нем можно писать не только большие корпоративные системы. Кроме Enterprise soft, на C# можно писать приложения под Windows, причем довольно неплохие. Очень здорово, когда на одном языке можно и сайт написать, и приложение под него, причем хорошее и красивое. Говорят, еще приложения по Linux можно делать, но я сам не пробовал.

У C# есть и отдельная ниша — разработка игр под Unity. Но про геймдев я скажу пару слов в конце. Ещё у этого языка хороший и приятный синтаксис, он динамично развивается, быстрее ОJava.

Но есть у него и недостатки, например, его авторы отказываются от обратной совместимости. Это останавливает заказчиков: мы создадим проект, а Microsoft выпустит обновление, и что же, все переделывать? Таким образом, C# проигрывает Java, в котором обратная совместимость есть всегда, и код, написанный в начале 2000-х, с большой вероятностью будет работать под современной версией. А в C# оно наверняка не запустится.

C\C++

Языки C\C++ идут парой, потому что С++ является наследником и логичным продолжением языка С. Язык С процедурный, он не умеет работать с объектами. Зато он позволяет писать небольшие, но очень мощные программы, которые работают непосредственно с железом.

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

Кстати о разработке игр 

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

Один из самых популярных энжинов сейчас это Unreal, у нас по нему есть курс. А еще у нас есть курс по Unity, это еще один движок, под него пишут игры на C#. Это тоже хороший движок, но Unreal его обходит, потому что обращается непосредственно к железу, и следовательно, тянет более нагруженные игры. Так что если вы мечтаете работать в гейм девелопменте, выбор языка очевиден: это С\С++.

Swift и Kotlin

Переходим к языкам мобильной разработки, и первый из них — это Swift, а второй Kotlin. Как выбрать между ними? Очень просто. Возьмите в руки свой телефон. Если у вас iPhone, вам нужен Swift. Если телефон на Android — это Kotlin.

Я недолюбливаю Apple, но ценю в них стабильность. Это не Google, который меняет ведущие языки по десять раз. Если Apple сказала, что у них ведущих язык Swift, то это будет Swift, и если вы хотите разрабатывать под Apple, выбора у вас нет. Учите Swift и пишите код под MacOS и iOS.

Предполагать, что компания Apple куда-то исчезнет, нет никаких оснований. Язык программирования они менять не намерены. И даже если они решат это сделать, новый язык будет рассчитан на то, что им будут пользоваться разработчики Swift. Но пока что перспектив смены языка я не вижу. Swift стал официальным языком Apple всего несколько лет назад, это очень современный язык, приятный в компоновке. Скорее, они будут развивать его, чем заменят чем-то другим. Так что это направление надежно, всерьез и надолго.

Второй язык мобильной разработки это Kotlin. На этот язык сделал ставку Google, объявив, что вся Android-разработка у них теперь на Kotlin. Раньше я говорил, что учить Kotlin как первый язык сложно и не нужно. Теперь это стало проще, все еще тяжеловато, но можно. 

Так что если вы хотите заниматься мобильной разработкой не под iOS, учите Kotlin. Правда, Google может в любой момент перейти на другой язык. Позаботится ли он при этом о разработчиках Kotlin? Не знаю. Хотелось бы в это верить.

Go

В этом году я добавляю к обзору два новых языка, которые не упоминал раньше. Первый из них это Go Lang. Этот язык себя хорошо зарекомендовал для работы с микросервисами. Объяснить начинающему разработчику, как это работает, довольно сложно. Но если при разработке на высокоуровневых языках, том же PHP, нужно что-то сделать очень быстро, обычно используют Go Lang.

Этот язык сейчас довольно популярен, спрос на разработчиков большой, так что можно успешно вскочить в эту нишу. Язык занимает большое место в экосистеме Google, на нем написано уже довольно много кода, который нуждается в поддержке, так что спрос на разработчиков останется. Даже если Google откажется вдруг от этого языка — вы знаете Google, они умеют мгновенно отказываться от самых неожиданных вещей — то спрос останется. Так что если вы влюблены в этот язык и не хотите знать ничего другого, Go — ваш выбор.

Apex

Apex — это внутренний язык самой популярной в мире CRM-системы Salesforce. Постоянные читатели сейчас вздохнут и скажут:

— Ну вот, Немчинский опять нам впаривает свой Salesforce.

Во-первых, он не мой. Во-вторых, к нам постоянно приходят из разных компаний и просят:

— У вас есть курс по разработке на Salesforce, отдайте нам выпускников, мы заберем всех.

Но уговорить ребят учить этот язык очень сложно. А ведь язык этот сходен по синтаксису с Джава, на нем можно делать разные вещи, простые и сложные. Работа практически гарантирована: этот язык недавно появился на рынке, и опытных разработчиков на Apex фактически нет. У синиорных разработчиков стаж 3-5 лет, это вам не Java, где может быть и 15, и 20 лет опыта, как у меня. 

Из-за того, что спрос большой, а предложение маленькое, разработчиков на Apex отрывают с руками. Поэтому через эти двери можно успешно войти в IT, при этом имея очень небольшой уровень знаний. Даже если вы умеете просто настраивать Salesforce, вы уже будете востребованным специалистом.

С другой стороны, если вы опытный специалист, скажем, по Java, но не хотите идти в Enterpise лопатить газилионы кода, и мобильная разработка вам не очень по душе, вам тоже подойдет этот вариант. Подумайте в эту сторону.

Всегда ваш Сергей Немчинский.