Рубріки: Мнение

«Какой язык программирования выбрать в 2022 году? Плохой вопрос» — мнение разработчика из Google

Богдан Мирченко

Senior-разработчика из сингапурского офиса Google и бывшего сотрудника Microsoft под ником Minhaz часто спрашивают: «какой язык программирования изучать?». Неудивительно, ведь от выбора зависит то, чем именно в отрасли будет заниматься человек, какую зарплату он будет получать и много другое. Чтобы поставить все точки над «i» и ответить разом всем, кто еще находится в поисках «своего» языка, специалист написал пост. 

Далее с его слов. 

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

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

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

Я начал свой путь с C++, причем еще в средней школе. Затем, поступив в университет, много времени уделял JavaScript. В Microsoft пришлось много работать с C#/.NET и TypeScript, а когда я перешел в Google, то начал работать над приложением для камеры Android, поэтому был вынужден освоить Java. Вскоре я переключился на изучение методов вычислительной фотографии и сейчас очень много пишу на C++ (для продакшена) и на Python (для создания прототипов). И на протяжении всего этого пути изучение нового языка не было чем-то непосильным. 

Правда, стоит отметить, что со временем айтишники стали подразделять языки программирования на разные «виды» в зависимости от того, как они используются. Некоторые языки используются исключительно для разметки — HTML или XML, поэтому не считаются языками программирования, другие используются только для создания сценариев — shell-скрипты или bat-скрипты, какие-то функциональны по своей природе, другие — нет, и так далее. 

«Стоп. Тогда на чем сосредоточиться?»

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

  • Нужно разработать веб-приложение — сможете ли вы его создать?
  • У вас есть приложения на Android — сможете ли вы улучшить его производительность?
  • У вас есть проблема, но для ее решения нужно обучить нейросеть — сможете взяться за дело, даже если никогда не сталкивались с Machine Learning?

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

«Хорошо. Но хотелось бы более конкретные рекомендации»

У меня есть ряд рекомендаций, которые могут помочь программистам на разных этапах карьеры. Давайте по порядку. 

Для новичков

Советую выбрать технологию, над которой хотите работать — это может быть веб, мобильная (Android/iOS) разработка, геймдев, создание десктопных приложений, обучение ML-моделей и так далее. Суть в том, чтобы выбрать технологию и изучить соответствующие языки. Если есть возможность — учитесь, создавая программы, разработка которых будет приносить вам удовольствие и в то же время пользу. 

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

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

Например, определенное требование, скажем, «увеличить каждое значение массива на 1», может быть обработано различными синтаксисами: 

На Python:

y = [i + 1 for i in x]
## or
for i in range(0, len(x)):
  x[i] = x[i] + 1

На JavaScript:

for (var i = 0; i < x.length; ++i) x[i]++;
// Or
var y = x.map(val => ++val);
// Or
var y = Array.from(x, val => ++val);

На Go:

for i:= range x {
  x[i]++
}

Все вышеописанное, так или иначе, сводится к чему-то вроде:

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

Для бывалых

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

Например, во время работы над приложением «Камера» мне довелось поработать над ночным режимом, который должен был захватывать серию изображений и надежно объединять их для получения хорошо экспонированного изображения с низким уровнем шума. Это требует больших вычислительных затрат, и нашей команде нужно было, чтобы алгоритмы работали на ограниченном по ресурсам оборудовании в рамках определенного бюджета. 

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

Останні статті

Обучение Power BI – какие онлайн курсы аналитики выбрать

Сегодня мы поговорим о том, как выбрать лучшие курсы Power BI в Украине, особенно для…

13.01.2024

Work.ua назвал самые конкурентные вакансии в IТ за 2023 год

В 2023 году во всех крупнейших регионах конкуренция за вакансию выросла на 5–12%. Не исключением…

08.12.2023

Украинская IT-рекрутерка создала бесплатный трекер поиска работы

Unicorn Hunter/Talent Manager Лина Калиш создала бесплатный трекер поиска работы в Notion, систематизирующий все этапы…

07.12.2023

Mate academy отправит работников в 10-дневный оплачиваемый отпуск

Edtech-стартап Mate academy принял решение отправить своих работников в десятидневный отпуск – с 25 декабря…

07.12.2023

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

Служба безопасности Украины задержала в Киеве 46-летнего программиста, который за деньги устанавливал шпионские программы и…

07.12.2023

Как вырасти до сеньйора? Девелопер создал популярную подборку на Github

IT-специалист Джордан Катлер создал и выложил на Github подборку разнообразных ресурсов, которые помогут достичь уровня…

07.12.2023