Как устроен javascript

Как устроен javascript

Рецензия на книгу Дугласа Крокфорда «Как устроен JavaScript»

Рецензия на книгу Дугласа Крокфорда «Как устроен JavaScript» главное изображение

Привет, меня зовут Сергей. Уже год я работаю верстальщиком в хостинг-провайдере REG.RU и всё это время постепенно знакомлюсь с JavaScript. Чтобы узнать что-то новое об этом языке программирования, читаю такие источники, как MDN (Mozilla Developer Network), разные статьи в Medium, Learn.javascript.ru и смотрю видео на YouTube. Мне стало интересно, как же работает JavaScript изнутри, поэтому решил прочитать «Как устроен JavaScript» Дугласа Крокфорда.

Об авторе и книге

Дуглас Крокфорд — известный американский программист, создатель текстового формата обмена данными JSON (JavaScript Object Notation). Также Крокфорд постоянно участвует в развитии языка JavaScript и является автором таких инструментов, как статический анализатор кода JSLint и минификатор JSMin.

Дуглас Крокфорд написал несколько книг по языку JavaScript. Одна из них — «Как работает JavaScript» («How JavaScript Works»).

О чём книга и кому стоит её читать?

Для начала немного расскажу о содержании книги. Автор пишет о самом языке JavaScript, а не о каких-то других более утончённых его аспектах.

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

В начале книги Крокфорд предупреждает читателя, что произведение подходит не новичкам, а специалистам, которые уже давно знакомы с JavaScript. Автор рассматривает основы языка с точки зрения их правильного использования в проектах, влияния на безопасность программы, написания практичного и понятного кода, сравнивает методы работы JavaScript с другими языками программирования.

«Эта книга написана для людей, имеющих определенный опыт работы с JаvаSсгiрt и желающих приобрести более чёткое и глубокое понимание того, как этот язык работает и как добиться от него наибольшей отдачи. Она также подойдет опытным программистам, желающим освоить еще один язык.

Издание не для начинающих. Надеюсь, что когда-нибудь напишу книгу и для них. Но эта им не подойдет. Её не назовешь легким чтивом. Беглый просмотр вам ничего не даст».

Крокфорд рассказывает о создании текстового формата обмена данными JSON. Читатель познакомится с мнением автора о том, почему именно те или иные методы и механизмы он вложил в этот формат.

Дуглас Крокфорд не обходит и отрицательные стороны JavaScript. В книге он размышляет, каким должен быть следующий язык программирования, который придёт на смену JavaScript, и какие сильные стороны ему стоит унаследовать от своего предшественника. Автор рассматривает, как работает транслируемый язык NEO, который, как считает Крокфорд, должен помочь перейти к новому языку, решив проблемы, имеющиеся в JavaScript. Также Дуглас Крокфорд рассказывает о других занимательных моментах, касающихся JavaScript.

Интересные мысли из книги

Читая книгу, я выделил несколько интересных для себя тезисов.

Именование переменных и функций

Автор считает, что использование символа подчеркивания ( _ ) в имени переменной для указания её закрытости говорит о некомпетентности программиста.

«Символ подчеркивания ( _ ) в начале или в конце имени иногда предназначается для указания общедоступного свойства или глобальной переменной, которая была бы закрытой, если бы программа была написана правильно. Следовательно, использование символа подчеркивания — признак некомпетентности программиста».

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

Далее Дуглас Крокфорд предлагает вообще отказаться от оператора new , объясняя это тем, что можно будет не использовать слова, которые начинаются с буквы в верхнем регистре.

Полезные методы

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

метод Number.isNaN() позволяет протестировать, равно ли значение NaN или нет, и является более надёжным, чем функция isNan() , так как не преобразует параметр в число;

когда оператору typeof предлагается определить тип массива, то он возвращает «object». Дуглас Крокфорд советует использовать функцию Array.isArray() , чтобы точно определить принадлежность значения к массиву;

также я узнал о работе некоторых методов работы с массивами, их достоинствах и недостатках. Для себя отметил их классификацию «чистый — нечистый», разделяющую методы на не изменяющие и изменяющие исходные данные;

Дуглас Крокфорд, рассказывая об объектах, говорит, что для создания объекта использует Object.create(null) . Автор подкрепляет свой выбор тем, что этот метод создаёт объект, который не имеет наследственности;

пожалуй, один из самых интересных моментов для меня — описание метода Object.freeze() . Метод получает объект и замораживает его, делая неизменяемым.

«К счастью, Object.create(null) создаёт объект, не обремененный наследственностью. Не возникает никакой путаницы ни с унаследованными свойствами, ни с непреднамеренным наследованием. В объекте нет ничего, кроме того, что в него помещено явным образом. Я сейчас пользуюсь Object.create(null) весьма часто».

Дуглас Крокфорд отмечает, что это положительно сказывается на безопасности и производительности проекта. Но автор предупреждает, что заморозка работает только на объектах верхнего уровня.

Привязка this довольно сложная в использовании, но Крокфорду удалось подробно и занимательно объяснить, как она работает. Автор рассказывает, каким образом она может повлиять на безопасность и надёжность проекта, и предлагает отказаться от её использования.

«Моё решение этой проблемы — полный запрет this. Аргументы: проблематичность и ненужность этой привязки. Если мы уберем this из языка, его полноценность по Тьюрингу не пострадает. Поэтому я начал программировать в диалекте, свободном от this, чтобы выяснить степень трудностей, связанных с отказом от неё.

Как же я удивился тому, что ситуация не усложнилась, а упростилась и мои программы стали меньше и качественнее».

Чистота функций

Любителей чистого кода порадует глава «Как работает чистота», где Крокфорд говорит о преимуществах чистых функций. Он советует, как добиться чистоты, и делает небольшой обзор всех компонентов языка, от которых нужно отказаться. К примеру, автор предлагает не использовать операторы присваивания, в том числе инструкции var и let , оставив только const . Оператор const позволяет инициализировать константу.

Оптимизация программ

В главе «Как работает оптимизация» ищите практические советы. Для себя я отметил, что при оптимизации нужно выбирать именно те функции, из которых получается понятная и легко обслуживаемая программа. Также я выделил принцип, которого автор советует придерживаться программистам: «Измерить, затем вырезать, затем ещё раз измерить».

Далее Дуглас Крокфорд подробнее раскрывает принцип: «Перед оптимизацией нужно измерить производительность оптимизируемого кода. Это делается, чтобы установить базовый уровень и показать, что код замедляет всю программу. Если код погоды не делает, нужно искать в другом месте. Затем проводится тщательная оптимизация кода. После чего снова выполняются измерения. Если изменения не позволяют существенно превзойти базовый уровень, они отклоняются. Они не позволили добиться ожидаемого улучшения, а сбои мы не проверяем».

Заключение

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

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

Как устроен JavaScript (pdf+epub)

Игра в программирование без правил и ограничений. Большинство языков программирования выросли из древней парадигмы, порожденной еще во времена Фортрана. Гуру Javascript – Дуглас Крокфорд – выкорчевывает эти засохшие корни, позволяя нам задуматься над будущим программирования, перейдя на новый уровень понимания требований к Следующему Языку (The Next Language). Автор начинает с основ: имен, чисел, логических значений, символов и другой базовой информации. Вы узнаете не только о проблемах и трудностях работы с типами в JavaScript, но и о том как их можно обойти. Затем вы приступите к знакомству со структурами данных и функции, чтобы разобраться с механизмами, лежащими в их основе, и научитесь использовать функции высшего порядка и объектно-ориентированный стиль программирования без классов.

Как устроен javascript

Physics.Math.Code запись закреплена

Как устроен JavaScript [2019] Крокфорд Дуглас

Большинство языков программирования выросли из древней парадигмы, порожденной еще во времена Фортрана. Гуру JavaScript Дуглас Крокфорд выкорчевывает эти засохшие корни, позволяя нам задуматься над будущим программирования, перейдя на новый уровень понимания требований к Следующему Языку (The Next Language).
Автор начинает с основ: имен, чисел, логических значений, символов и другой базовой информации.

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

Ссылка на основную публикацию