Лучший язык для вашей карьеры

Какой язык программирования стоит выучить в 2022 году?

Руководство для будущих разработчиков, которые ищут свой первый, второй или третий язык.

Сегодня для разработчиков, включая меня, Python или JavaScript — это первый язык программирования. Может быть, это потому, что вы прошли Bootcamp, перешли от роли аналитика больших данных или научились сами. Но как только вы становитесь более опытным, возникает вопрос — что дальше? Да, оба языка прекрасны и, вероятно, еще не достигли своего пика. Тем не менее, есть преимущества в изучении дополнительных языков. Изучение строго объектно-ориентированного языка, такого как Java или C++, поможет вам лучше понять ООП. Языки более низкого уровня, такие как C или Rust, могут помочь вам получить представление о таких понятиях, как управление памятью.

На данный момент мы уже говорили о 6 разных языках, и их гораздо больше. Итак, какой должен быть ваш выбор? Это зависит. В этой статье я группирую языки по двум осям: в какой области вы хотите работать и в какой компании вы хотите работать. По каждому пункту дам одну-две рекомендации. Я считаю, что первое из них принесет вам наибольшую ценность, но всегда есть второе место и, возможно, несколько почетных упоминаний. Давайте приступим прямо к делу:

Какая инженерная область вас больше всего интересует?

Хотя языки общего назначения, такие как C, C++, Python и т. д., могут делать все, что угодно, все они демонстрируют свою силу в разных областях. Исходя из этого, мы можем сгруппировать их по профессиям и инженерным дисциплинам.

Фронтенд-инжиниринг: JavaScript и TypeScript

Когда дело доходит до разработки внешнего интерфейса, JavaScript и, соответственно, TypeScript не имеют себе равных. JS — это язык, на котором работает современная сеть, какой мы ее знаем. Работая в каждом браузере, разработчики используют JavaScript с начала 2000-х годов. Ранние выпуски библиотек, таких как jQuery (15 лет назад), были ориентированы на добавление анимации к статическим веб-сайтам HTML. С тех пор появление таких фреймворков, как React, перевернуло этот порядок с ног на голову. Современные веб-сайты сначала пишутся на JavaScript, который затем генерирует HTML-код, который предоставляется пользователю. Сейчас все основные интерфейсные фреймворки используют JavaScript. Таким образом, это язык выбора для всех, кто пытается проникнуть в разработку интерфейса.

Доминирование JavaScript не означает, что все довольны этим языком. За последние годы появилось много «разновидностей» JS, которые пытаются решить предполагаемые проблемы. Их всех объединяет то, что в конце дня код компилируется обратно в JavaScript. Бесспорным победителем в этой категории является TypeScript. Впервые выпущенный в 2012 году и теперь поддерживаемый Microsoft, TypeScript добавляет статическую типизацию в JS. Функция, которая делает разработку более безопасной, а язык лучше подходит для крупномасштабных проектов. Как строгий надмножество, каждая допустимая программа JS также является допустимой программой TypeScript. В результате перейти с JavaScript на TypeScript и наоборот гораздо проще, чем осваивать совершенно новый язык.

Если вам этого недостаточно, я также хочу особо отметить Dart. Как язык, лежащий в основе структуры Flutter, Dart — это объектно-ориентированный язык, поддерживаемый Google. Используя Flutter, вы можете разрабатывать программы, которые компилируются в собственные мобильные приложения, а также в веб-приложения.

Бэкенд-разработка: Go и Python

Серверная разработка имеет, вероятно, самый большой набор разумных опций в языках. В классе высокопроизводительных языков самым интересным является Go (или Golang). Что отличает Go, так это то, что Google разработал его для решения задач современной облачной среды.

Что это значит? Go занимает промежуточное положение между языками высокого уровня, такими как Python, и языками системного уровня, такими как C++ и Rust. С одной стороны, Go является скомпилированным языком и может обеспечить молниеносную производительность. Это также дает вам обнаружение ошибок во время компиляции. Кроме того, Go содержит сильную и строгую систему типов, что позволяет сохранять типы. Эти два умения вместе могут предотвратить многие производственные ошибки уже во время разработки. С другой стороны, Go также предлагает множество наворотов языков высокого уровня. Язык предлагает, среди прочего, встроенную модель параллелизма для каналов и сборки мусора.

Если все, что имеет значение, — это скорость разработки, Python — мой выбор. В настоящее время преобладающий во всех областях, Python имеет большой опыт работы на стороне сервера. Дело в том, что серверная часть Instagram написана на Python. Сочетание управляемых сообществом платформ, таких как Django и FastAPI, в сочетании с обширными стандартными библиотеками позволяет вам сосредоточиться на основной логике приложения. А в последние годы были добавлены такие функции, как (необязательные) подсказки типов и протоколы, что сделало Python актуальным и более подходящим для крупномасштабных проектов. Тем не менее, вы жертвуете производительностью. Поскольку это интерпретируемый язык, процесс компиляции должен происходить во время выполнения, что делает Python примерно в 10 раз медленнее во многих типичных случаях использования по сравнению с Go.

Разработка блокчейна: Solidity и Rust

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

Вернемся к языкам общего назначения. В мире блокчейнов Rust в основном известен тем, что поддерживает Solana. Будучи скомпилированным языком системного уровня, Rust может архивировать скорости, о которых другие языки более высокого уровня, такие как Python и JS, могут только мечтать. Таким образом, это также более мощный, всесторонний язык по сравнению с Solidity.

Выбор между этими двумя сводится к вашим целям. Если ваша главная цель — прямо сейчас заняться разработкой Blockchain-/Smart Control, Solidity — ваш лучший выбор. Однако, если вы планируете сначала выучить новый язык, а применить его к смарт-контрактам — задним числом — выберите Rust.

Разработка системы: Rust и C++

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

Хорошей и современной отправной точкой в ​​2022 году является Rust. Как упоминалось ранее, Rust используется для разработки современных платформ, таких как блокчейн Solana. По сравнению с другими низкоуровневыми языками, такими как C++, Rust более удобочитаем и обеспечивает безопасность памяти. Это огромное преимущество, которое заставило Microsoft переписать некоторые подпрограммы самого низкого уровня Windows на Rust. Еще одним примером из практики является AWS Firecracker, система, которая обеспечивает назначение арендаторам небольшого инструмента под названием AWS Lambda.

Где C++ полностью превосходит Rust, так это в том, насколько он распространен. ОС Windows, MySQL, серверная часть Spotify и YouTube — все системы написаны на C++. Первоначально разработанный как «Си с объектами», C++ появился в 80-х и 90-х годах. Целый набор новых инструментов и библиотек сделал его привлекательным для всех, кому нужно было писать высокопроизводительные приложения. Являясь строгим надмножеством C, единственное ожидание, чтобы приблизиться к тому, как работает компьютер, — это написать ассемблер. При этом C++ по-прежнему остается популярным выбором, когда речь идет о разработке встраиваемых систем. Например, когда вы захотите написать для популярного микроконтроллера Arduino, вы столкнетесь с этим. Arduino IDE использует C++ в качестве языка по умолчанию.

На кого вы хотите работать?

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

Стартапы: JavaScript

В стартапах все, что имеет значение, — это скорость. Чем быстрее вы напишете MVP и доработаете его, тем быстрее вы найдете подходящий для себя рынок. Во-вторых, большую роль играет кадровый резерв. Компания с 5–10 инженерами не может позволить себе тратить свое время на обучение людей языку, с которым они не знакомы. Языком выбора для большинства стартапов на ранних стадиях является JavaScript. JS идеален, потому что он позволяет небольшой команде или даже одному разработчику с полным стеком писать интерфейс на React, а сервер — на NodeJ. При этом оставаясь на одном языке, избегая переключения контекста. В том же духе разработчики JavaScript также могут переключаться между различными ролями и частями продукта, когда это необходимо. Наконец, у JavaScript есть непревзойденная экосистема библиотек. Их использование может сэкономить драгоценное время при написании кода и, опять же, увеличить вашу скорость.

Крупные корпорации: Java

Java – это язык, который выбирают некоторые из крупнейших корпораций мира. Разработанная (и интенсивно продаваемая) SunMicrosystems в 1990-х годах, Java теперь принадлежит Oracle. Это обещало переносимость и простоту обслуживания больших кодовых баз. Теоретически использование виртуальной машины Java означает, что один и тот же код будет выполняться в любой среде. Это вместе с целенаправленным маркетингом для ИТ-руководителей и университетов сделало Java одним из самых используемых языков программирования в мире. Вот где это сохраняется сегодня. Правда, жалобы на Java относятся к 25-летней давности. Тем не менее, продолжающаяся разработка Oracle и пользовательская база означают, что даже в эпоху облачных вычислений Java оставалась эффективным вариантом.

FAANG, Microsoft и Tesla: проведите исследование

Масштабы, в которых работает FAANG, означают, что у них есть совсем другие варианты, чем у вашего типичного стартапа или корпорации. Google заслуживает особого внимания, поскольку в 2007 году он даже разработал свой собственный язык для Go. Он также является основным драйвером Dart, языка, используемого во Flutter от Google. Но они не единственная компания со своим языком — у Apple есть SWIFT и Microsoft .NET. Более того, большинство компаний с небольшой командой разработчиков (до нескольких сотен человек) в целях эффективности останавливаются на двух-трех языках. Apple, основываясь на их сообщениях о вакансиях, использует как минимум 7 с Python, JavaScript. C++, Java, Objective-C, Swift и даже Perl.

С другой стороны, этим компаниям гораздо проще найти сообщения в блогах, описывающие их деятельность. Так что, если ваша главная цель — FAANG (+M), проведите собственное исследование. Слушайте выступления на их конференциях, читайте их сообщения в блогах или даже объявления о вакансиях. Что отличает эти компании, так это то, что они думают о более длительных временных горизонтах. Если вы замечательный Java-разработчик, но Google ищет работу в Golang, вы сможете опережать посредственного Go-разработчика. Стартап не может выделить вам 3 месяца на изучение синтаксиса нового языка — Google может.

Заключительные замечания

До сих пор мы затронули шесть различных языков, которые, ИМХО, являются наиболее важными вариантами на 2022 год. Конечно, существует множество других языков, и многие из них, которые я не упомянул, широко используются. Например, возьмите C, PHP или даже COBOL. С другой стороны, каждый год появляются новые языки, которые в ближайшие годы будут формировать свои ниши. Возьмем, к примеру, Джулию в сфере научных вычислений.

Мой личный совет — что бы вы ни выбрали, убедитесь, что ваш следующий язык попадает в другую категорию, чем ваш первый. Если вы уже знаете Python (язык высокого уровня, отлично подходит для прототипирования), не учите JavaScript. Лучше начать с Rust или C++, чтобы начать изучать управление памятью и иметь альтернативу, когда производительность имеет значение.

Что бы вы ни выбрали — изучение другого языка расширит ваш кругозор и сделает вас лучшим инженером. Удачи!