6 сентября 2016

И это все о нём, или снова JavaScript — проверенный десятилетиями разработки

В какие рейтинги языков программирования ни загляни, JavaScript стабильно входит в топ-10. Успех, как известно, всегда обсуждаем: как и любой популярный язык, JavaScript регулярно становится объектом восхваления или, наоборот, жестокого неодобрения.  Нам стало интересно, что думают о JavaScript’е наши ребята, и попросили старшего разработчика Константина поделиться своим мнением об инструменте, который он использует каждый день.JS

Костя работает с JavaScript’ом уже больше 10 лет. Еще самый первый его проект, в рамках бакалаврского диплома, был реализован на PHP + JavaScript.

— В JavaScript’е меня еще тогда привлекла интерактивность. Не нужно долго настраивать эмулятор web-девайсов, поднимать библиотеки и запускать и перезапускать компиляцию, чтобы посмотреть, как работает написанный тобой код. Сделал — тут же посмотрел на страничке, как оно работает. Быстро и наглядно.

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

В работе с JS есть и минусы. Раньше особо ярко выраженным недостатком была поддержка большого количества браузеров. Да, есть единый стандарт, но все же в каждом браузере он реализуется по-разному. И вроде бы код для всех браузеров один — но там что-то одно не работает, тут что-то другое… Наиболее красноречивым примером был IE6 и классический случай с выпадающим списком меню (Select Drop Down) — он отображался поверх всего всегда, вот просто всегда, и ему было совершенно все равно, что вы хотите вывести поверх него какой-нибудь поп-ап, например. Все это убиралось разнообразными хаками, но на дебаг порой приходилось тратить часы и часы —  дольше, чем писать сам код.

68747470733a2f2f7261772e6769746875622e636f6d2f766f6f646f6f74696b69676f642f6c6f676f2e6a732f6d61737465722f6a732e706e67

Сейчас ситуация выравнивается, хотя как посмотреть… С одной стороны, браузеры развиваются, пользователи отказываются от несовременных версий в пользу самых последних, и количество поддерживаемых браузеров в проектах ощутимо сокращается. И IE8-то сейчас редко встретишь, а уж о IE6, к счастью, только в ретроспективе и вспоминаешь. С другой стороны, все равно написанный код нужно перепроверить во всех нужных в проекте браузерах — мало ли что?.. К тому же “исправляющиеся” десктопные браузеры компенсируют сегодня браузеры для телефонов и планшетов: 10 лет назад практически никто не смотрел веб-сайты с телефона, а сейчас, если ваш сайт не открывается на смартфоне, вы гарантированно теряете пользователей. И в мобильных  браузерах вылазят порой довольно странные баги :)

Это, конечно, слабое место, но на мой взгляд, не самого языка, а скорее системы web-разработки в целом. У языка недостатки, разумеется, тоже есть: проблемы с памятью, например, или та самая свобода, с которой легко наплодить большое количество ошибок… Но ведь язык — это инструмент: как будешь его использовать, такой и будет результат. Любые недостатки — это плата за гибкость. Если пользоваться JS аккуратно, то его минусы можно свести к минимуму.

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

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

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

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

JavaScript_780x420

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

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Читайте в нашем блоге

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: