ПЗ

Языки программирования: какой выбрать для изучения в 2021 году?

0

О том, как найти курсы прогамирования и какой именно язык программирования правильнее и полезнее всего выбрать для изучения, написан уже не один десяток статей – но выводы многих авторов выглядят более чем странными. Да и поисковые системы удивляют. Например, если обратиться к Google, среди наиболее востребованных вариантов будет предложен… HCL. Позвольте, но подобный ответ лишь рождает дополнительные вопросы. Как? Ведь он, как минимум, создавался для конфигурации, а значит, не может находиться в одном ряду с языками, имеющими общее назначение. И тем более страшно представить себя на месте мало соображающего новичка, пытающегося освоить программирование с использованием вот таких горе-советов. Кстати, по запросу «учить HCL» вылезает ряд текстов, посвященных… о соляной кислоте.

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

Проблемы, с которыми чаще всего приходится сталкиваться

Размещаемые на различных ресурсах тексты с рассуждениями на тему «какие языки программирования лучше изучать сегодня» подчас откровенно слабы – опытные разработчики посмеялись бы над ними и разнесли все «доводы» в пух и прах. Но читают их чаще всего именно новички, пытающиеся «докопаться до правды», а они заметить подвоха не в состоянии. Дальше все растет как снежный ком: новые люди читают старые тексты и делают те же ошибки. Авторы, несмотря на некомпетентность, довольны, проблемы при этом не решаются. Кстати, а в чем именно они состоят?

Итак, чем грешат тексты об актуальности языков программирования?

1. Отсутствие каких либо здравых мыслей и информации

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

Для примера возьмем следующий «шедевр»: «Сегодня большинство учащихся в высших учебных заведениях в качестве пропуска в мир высоких технологий выбирают JavaScript. Это говорит о том, что человек, знающий данный язык программирования, без работы не останется. Популярность варианта позволяет ему по праву занять одну из лидирующих позиций среди языков, которые было бы неплохо изучить. Конечно, JavaScript – это яркий представитель популярнейших языков, используемых программистами. Благодаря этому формируется и спрос, и разумное число предложений. Если вы собираетесь освоить данный язык, то лучше разобраться в нем». Вопрос один: где во всем этом смысл и что хотел донести автор?

2. Освещение множества мелочей, не объясняя главного

Представим: человек впервые решил приобрести автомобиль. И он еще далеко от того, сколько это будет стоить, какие существуют коробки передач, варианты кузовов и пр. Ему просто хочется купить машину. И тут потенциальному покупателю предлагают пару десятков вариантов, среди которых и внедорожники, и грузовики и микролитражки. Неподготовленному человеку можно описать любые «преимущества» каждого из авто вроде наличия автоматических стеклоподъемников и защиты картера. Только вот вопрос: а сильно ли ему это поможет при выборе?

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

3. Информация, которая начинающим не скажет абсолютно ничего

Допустим, школьник Ваня Иванов пытается понять, какой именно язык выбрать для изучения. Прочитав очередное описание, он начинает рассуждать: «ну раз в этом языке нет того, о чем говорят в статьях, то я предпочту другой». Но что ему при этом действительно нужно – непонятно. А хочет Ваня просто создать приложение, но что для этого требуется, понятия не имеет. Ответов на вопросы школьник, скорее всего, так и не получит, даже проштудировав кучу текстов. В результате выбор делается практически наобум, а не исходя из ключевых особенностей.

4. Следование рейтингам без логики и анализа.

Рейтинги являются руководством для большинства лиц, заинтересовавшихся программированием. Для многих это аксиома: если Go прибавил в индексе TIOBE, то его нужно изучать, причем срочно! Но верное ли это утверждение – исходя из таких рассуждений, можно дойти и до весьма абсурдных результатов.

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

5. Не добравшись до сути

Увлекаясь перечислением достоинств, авторы часто забывают про сферу применения. Между тем для тех, кто только осваивает сферу программирования, это крайне важно. Там, где один язык очевидно проигрывает, другой позволит отработать «на пятерку».

Итак, попробуем разобраться в сути вопроса, не совершая подобных ошибок.

Вместо вступления

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

То есть для начала необходимо именно понимание круга поставленных задач, их области и сложности. Для чего вообще выбирать язык? Нужно сделать что-то определенное – игру, сайт компании, приложение? Или принцип изучения сводится к «откроем, посмотрим, а дальше будь, как будет»?

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

Если же язык изучается с перспективой в дальнейшем получить работу, то тут также важнее не теоретические изыскания. Лучше посмотреть на любом сайте, где выкладывают вакансии потенциальные работодатели: а какой именно язык сегодня наиболее востребован? Изучив один можно быстро найти работу, другой станет просто очередным пополнением копилки знаний.

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

То есть разработчик-фронтендер должен задуматься о том, как будет выглядеть интерфейс с точки зрения пользователя. Все мысли бэкендера сосредоточены непосредственно на коде. Люди разные – кому-то хочется работать с визуальной стороной, а кто-то предпочитает «невидимый труд» общению «с кнопочками». И именно понимание, что ближе и что предстоит в дальнейшем, становится основой выбора языка для изучения.

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

С# (1972 г) и С++ (1985 г)

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

Сегодня эти языки совсем не те, что в момент выхода. У С++ не так давно был введен стандарт С++20, в среднем обновления выходят раз в три года. Со временем различия становятся все заметнее, но все же идеи, закладывавшиеся вначале, прослеживаются и сегодня. Когда С только создавался, компьютеры не отличались производительностью и ресурсы старались экономить. Тогда нужно было постоянно «задумываться о железе» — программисту было важно понимать, как физически работает техника. И несмотря на то что сегодня ситуация изменилась, подобный подход окажется полезным и для современных специалистов.

В результате и С, и С++ имеют репутацию требовательных к программисту, но позволяющих выжать максимум из железа. Зачастую данные языки используются там, где не требуется предельные возможности. Речь идет, например, об играх или софте не для «просто компьютеров», а для устройств с маломощными процессорами, например, автомобилей и банкоматов.

Для начала нужно прости хотя бы базовый курс C, но и он будет достаточно сложным… Вы спросите: «Но если в освоении и применении все так непросто, зачем выбирать столь «древние» языки? Не проще ли взять что-то более современное?» И тут мнения расходятся. Некоторые считают, что начинать нужно с чего-то полегче. Но имеется и совершенно другая позиция: при изучении данных языков начинаешь понимать, как именно работает ПК и как будет исполнен код – для программистов это, как ни крути, очень полезно. Вердикт очевиден: С# и С++ рекомендуется для изучения тем, кто легких путей не выискивает, а хочет «покопаться» в программировании начиная с истоков.

Python (1991)

Многие считают, что Python противоположен С. В первом случае программист сталкивается со сложностями и высокой производительностью, во втором – с простыми для понимания решениями, но при наличии вопросов к производительности. На первый взгляд данное заявление категоричное, а потому требует некоторых уточнений. Конечно, определенные сложности есть и при общении с Python, но они легко преодолеваемы, даже новичками. Часто его советуют в качестве первого языка для прохождения обучения, а потому Python крайне популярен с точки зрения образования. Начинается все с простого и понятного кода, перед человеком не выстраивается стена из непонятных терминов и действий, для многих задач предлагаются базовые варианты решения.

А что с производительностью? Тут Python, действительно, несколько проигрывает. Порой его даже называют «медленным», но это уже оговор и не более того. Вспомним: все языки хороши лишь применительно к тем или иным задачам. Так вот есть такие, для которых Python очевидно не подойдет, у него свои сферы применения.

Но что это за сферы? Не так давно Python был любимчиком ученых – и сегодня с его помощью занимаются многим из того, что «около науки», например машинным обучением. Используется он и в бэкенде веб-сервисов. Кроме того Python любят системные администраторы, поскольку он идеален для утилит.

Присутствуют ли вакансии для изучивших Python? В интернете их множество. Но есть и одно «но»: часто этот язык становится «вариантом №2», то есть удобным, но уступающим другому в чем-либо. Из-за этого язык используется не как основной, а в качестве некоего дополнения.

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

Java (1995 г.)

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

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

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

Ряд программистов говорят, что Java скучновата, и использовать ее могут только соответствующие «скучные» компании, к примеру, банки или другие финансовые организации, стартапы же возьмут что-то более динамичное и современное. Все это субъективно, а «веселых» языков программирования не бывает в принципе. Зато имеются и люди, говорящий о Java с огоньком в глазах – мол, удобен в использовании и позволяет решить массу задач.

С#

Когда Microsoft представил С#, многие посчитали данное решение просто «ответом Java», последовавшим от компании. Но различий между данными языками присутствует предостаточно, и за прошедшие 20 лет их число только увеличилось. Общее действительно тоже есть, а потому знание одного из данных языков поможет быстрее и эффективнее освоить другой.

Изначально отличие было не непосредственно в языках, а в том, для чего именно они применялись. С# был создан как часть платформы Microsoft, работающей с Windows. Если необходимо было создать программу для Windows, то логичным вариантом становилось использование .NET. А вот если требовалась программа, которая могла бы запускаться и на Windows, и на Mac, на помощь приходила «старая добрая» Java.

Со временем ситуация изменилась: у .NET возникла версия .NET Core, которая позволяла не привязываться к конкретной системе. И это в очередной раз сблизило языки – часто в вакансиях с упоминанием С# требования к соискателю те же, что и в вариантах с Java.

Switf (2014)

Из перечисленных это – самый юный язык, представленный на рынке менее шести лет назад. Как правило, за столь краткий период языки не становятся популярными и не могут попасть в подобные списки. Но эту ситуацию можно назвать особенной: Apple – компания, создававшая Switf дала всем понять: отныне все iOS-приложения разрабатываются только с его использованием. А далее будет, как скажет разработчик, поскольку собственную платформу Apple тщательно контролирует.

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

В результате выбор более чем прост. Если требуется просто написать предложение для айфона, нужно посвятить время изучению Swift. А если желания являются более масштабными и касаются создания приложений и для iOS, и для Android, то следует обратить внимание на кроссплатформенные варианты – например, Flutter. Правда, сегодня они пользуются куда меньшей популярностью.

«Молодежь» среди языков программирования: Go, Dart и пр.

Сразу оговоримся: «молодыми» являются не языки, вышедшие «позавчера» — таковыми условно признаются варианты не старше 10 лет, уже заслужившие внимание пользователей. В интернет-пространстве можно найти массу рассуждений о том, как все круто и здорово – тот или иной новый язык ошибки предшественников в состоянии исправить и времени полностью соответствует, и разработчикам нравится.

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

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

Вместо заключения

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

Comments

Comments are closed.