Привет, Хабр! Мы на курсах веб-разработки в Практикуме учим студентов писать код на HTML, CSS и JavaScript. С помощью этих языков можно делать практически всё: HTML отвечает за структуру, CSS — за внешний вид, а JavaScript — за функциональность сайта или приложения. Но подходит ли JavaScript в качестве первого языка программирования? Мы решили разобрать этот вопрос по косточкам вместе с экспертами курса, и вот что у нас получилось.

За что любят JavaScript
JavaScript — самый популярный язык программирования в мире, если судить по опросам разработчиков. Ведь только его можно использовать в браузере. Есть ещё альтернатива — WebAssembly (или Wasm), но его нельзя считать полноценной заменой.
JavaScript широко применяется в веб-разработке для создания браузерных приложений, на нём можно писать полезные инструменты, консольные приложения и даже компиляторы, хоть это и не популярно. А ещё его можно запускать на сервере с помощью Node.js. Поэтому JavaScript применяют и в серверной разработке — и для полноценных, и для так называемых промежуточных серверов. Вторые общаются с реальным бэкендом, написанным на Java, Kotlin или другом языке, и агрегируют данные в правильной форме, чтобы отправить их на фронтенд.
Преимущества JavaScript для новичков
Выбор первого языка зависит от бэкграунда новичка и опыта, который он хочет получить. Но у этого языка есть особенности, которые облегчают его изучение:
Популярность. Благодаря популярности у языка огромное комьюнити. Если новичку нужна помощь, ему не составит труда её найти. Это могут быть каналы в Telegram и Discord, форумы, Stack Overflow, где разобрано бесчисленное множество вопросов разного уровня сложности по JavaScript. Решение большинства проблем новичков можно найти именно там.
Количество инструментов и библиотек. Это означает, что решение проблемы вы, скорее всего, найдёте в виде библиотеки — готового кода, который можно скачать и использовать в проекте. Но иногда это может и навредить, потому что качество кода в этих библиотеках бывает сомнительным. С опытом вы научитесь определять качество кода «на глаз» и понимать, какое решение можно задействовать, а что лучше написать самому. Готовые библиотеки помогают быстрее выполнять практические задачи — главное, использовать их с умом и не создавать дыры в безопасности.
Удалённость от железа. Чем больше необходимо знать и понимать с самого начала, тем сложнее эффективно работать с языком. Например, в C, C++, Go, Rust нужно предварительно изучить слишком много сложных концепций. А ещё благодаря близости к железу неумелым кодом проще что-то поломать.
В JavaScript нет управления памятью. Не нужно вручную определять память для наших данных, всё это автоматизировано. В самом языке нет статической типизации. На продвинутом уровне статическая типизация пригодится, но для этого существует надстройка в виде Typescript. Новички могут сосредоточиться на самом программировании, где типы не так важны.
Используется в единой веб-экосистеме. А значит, код на этом языке можно запускать везде. По сути, это единственный язык, который работает в браузерах. Благодаря Node.js его можно запускать на сервере и писать на нём полноценные серверные приложения. Если сильно упростить, можно сказать, что серверные приложения, написанные на Node.js, ничем не уступают остальным — написанным на Python, Ruby или других популярных языках.
Моментальное исполнение. Из-за того, что код можно запускать прямо в браузере, у JavaScript нет стадии компиляции. А значит, то, что вы написали в консоли браузера, сразу же исполнится. Вы сразу видите результат, впрочем, как и допущенные ошибки.
Такая наглядность — особенность фронтенда в целом. JavaScript стал помощником для разработчиков, которые лучше воспринимают информацию визуально. А ещё это хороший способ обучения для новичков, особенно тех, кто приходит в программирование без опыта.
Достаточно браузера. В Unix-системах по умолчанию встроены Python или Ruby. Однако, чтобы начать программировать на большинстве других языков — C, Go, Rust и так далее, — нужно установить их исходники себе на компьютер. Только так вы сможете использовать команды для сборки и запуска своего проекта. Для JavaScript этого не требуется. Если вы не собираетесь создавать серверные приложения, всё можно делать прямо в браузере. Для этого существует много сайтов, где можно писать полноценные приложения, не устанавливая себе редакторов кода.
Количество фреймворков. Концептуально все фреймворки решают одну задачу: создавать веб-приложения в браузере, — но подходят к решению по-разному. Поэтому разработчик может найти удобный и комфортный способ — в стиле React, View, Angular или чего-то ещё. Все эти фреймворки отлично подходят для написания приложений и постоянно развиваются.
Три самых популярных фреймворка — Angular, React и Vue. Чуть реже упоминаются Svelte, Preact.
-
Angular изначально предлагает больше средств для написания приложений. В нём есть не только возможность писать компоненты и отрисовывать их в браузере, но и встроенные инструменты для работы с сетью, для получения данных, управления состоянием. Этот фреймворк подходит тем, кто хочет взять готовое решение и не думать об установке дополнительных компонентов.
-
React — самое популярное решение для написания приложений. Он не содержит готовых инструментов для работы с сетью, с управлением глобальным состоянием или чем-то ещё. Но из-за популярности фреймворка на нём решено много проблем, и на его основе создано несколько других фреймворков, уже содержащих эти инструменты.
Например, Next.js даёт возможность сразу же писать код с рендерингом приложения на сервере. Большинство продуктов Яндекса сделано на базе React — Яндекс Недвижимость, Яндекс Маркет и другие. Визуально это не определить, потому что по готовому приложению не понять, на чём оно было написано. Весь смысл фреймворков в том, чтобы выбирать удобные инструменты в процессе разработки — исходя из того, какие проблемы понадобится решать.
-
Vue популярен в PHP-сообществе. У одного из самых распространённых PHP-фреймворков Laravel удобная интеграция с View. Также View любят Python-разработчики. Django и Flask — популярные фреймворки для написания веб-приложений на Python, и они часто идут в паре с View.
Много вакансий. Популярность языка приводит к постоянному появлению большого числа вакансий на рынке — да, конкуренция высокая, но работы и правда много. Вакансии разнообразны, на любой вкус — есть предложения и от стартапов, и от цифровых гигантов, и от аутсорсинговых компаний с постоянной сменой бизнес-проектов.
Специфика JavaScript
JavaScript — язык, на котором легко начать программировать, но добиться настоящего мастерства сложнее. Чем дальше вы углубляетесь в продвинутые концепции, тем больше трудностей встречаете на пути.
Погружение в асинхронное программирование. Оно широко применяется в JavaScript, поэтому разработчику необходимо разобраться, как это работает. Есть много разных способов асинхронной работы: Callbacks, Promises и Async/Await. С другой стороны, асинхронность — продвинутый уровень работы в большинстве языков. Когда вы сможете усвоить этот концепт, на каком именно языке вы это сделаете, будет уже не так важно.
Сложнее писать в ООП. В отличие от языков с полноценным ООП, например Java или C++, в JavaScript ООП отличается от классического понимания. Там нет статических типов, всё построено через прототипы. Для разработчиков, которые переходят в JavaScript из языков с сильной ООП-базой, в JavaScript сложнее писать в ООП-стиле.
Кроссбраузерная совместимость как камень преткновения — ещё одна самобытная особенность языка. Несмотря на то что JavaScript доминирует в вебе, у каждого браузера свой движок, и не все фичи языка доступны в браузере сразу же после появления. Обычно нововведение можно использовать в одном-двух браузерах, а потом спецификацию постепенно добавляют в остальные. Опытным разработчикам, создающим более сложные приложения, кроссбраузерная совместимость порой вставляет палки в колёса, так как не во всех браузерах код может работать одинаково.
Замыкание и использование ключевого слова this — самые сложные концепции для новичков. Замыкание обычно сложно понять тем, кто только пришёл в программирование: почему одна переменная видна в одном месте и не видна в другом? Чтобы вникнуть в особенности применения this, нужно время.
Что происходит на рынке и сложности поиска работы
Конкуренция для джунов в любой сфере примерно одинакова. Чтобы точно найти работу, помимо полученных во время обучения знаний нужно выделиться на фоне остальных. На рынке JavaScript-разработки нет чрезмерной конкуренции между кандидатами. Кандидатов много, но и вакансий примерно столько же.
Есть мнение, что для повышения шансов на трудоустройство нужно знать больше фреймворков. Но на наш взгляд, их количество не слишком повлияет, если только в описании вакансии не указано именно это требование.
Преимущества новичку даёт написание пет-проектов или вклад в разработки формата open source. Но если вы в самом начале пути, это может быть сложно:
1. Нужно найти популярные репозитории на GitHub.
2. В зависимости от инструментов, которые хорошо умеете использовать, выбрать Issues, которые вам под силу решить. Хорошие мейнтейнеры библиотек думают о новичках и даже помечают Issues, подходящие для первых шагов.
Ежегодно проводится Hacktoberfest — месяц, во время которого разыгрываются призы от GitHub за участие в open source проектах. Это делается в первую очередь для того, чтобы стимулировать сообщество и привлечь помощь в те разработки, где она особенно нужна. В этот период на сайте и в соцсетях публикуют подборки Issues для новичков, распределённые по языкам и фреймворкам. Начинающие разработчики могут найти что-то по душе и предоставить свою помощь. То, что написано для open source проекта, остаётся в нём навсегда, поэтому эти достижения удобно показывать на интервью.
Пет-проекты пишут для себя, чтобы потренироваться в применении технологии, пробовать новые подходы. Даже самый простой сайт-визитка или блог поможет на собеседовании. Особенно если разработчик выкладывает код в открытый доступ, чтобы показать его будущим коллегам. Иногда этим даже можно заменить тестовое задание.
Выводы
-
JavaScript — отличный язык для старта в программировании, даже с нуля. С него легко начать, для этого нужен только браузер.
-
Разработчик получает визуальный фидбек того, что он делает, если программирует фронтенд. При этом можно переключиться и на серверную разработку, для этого не нужно переходить на другой язык.
-
Благодаря популярности языка вы всегда сможете получить помощь от сообщества. Ответы практически на любые вопросы уже можно найти в Cети с помощью соответствующих запросов.
-
А ещё у языка несколько популярных фреймворков с большим комьюнити и множество доступных инструментов и библиотек.
-
Работы много, но и конкуренция тоже есть. Чтобы стать привлекательнее для работодателей, стоит прокачивать пет-проекты и участвовать в open source разработке.
ссылка на оригинал статьи https://habr.com/ru/companies/yandex_praktikum/articles/735238/
Добавить комментарий