твой родной язык джава скрипт что ли

Руководство по JavaScript, часть 1: первая программа, особенности языка, стандарты

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

твой родной язык джава скрипт что ли. jfeo1s pygp9g5pazca5kjwvwoa. твой родной язык джава скрипт что ли фото. твой родной язык джава скрипт что ли-jfeo1s pygp9g5pazca5kjwvwoa. картинка твой родной язык джава скрипт что ли. картинка jfeo1s pygp9g5pazca5kjwvwoa. Недавно мы провели опрос, посвящённый целесообразности перевода этого руководства по JavaScript. Как оказалось, около 90% проголосовавших отнеслись к данной идее положительно. Поэтому сегодня публикуем первую часть перевода.

Это руководство, по замыслу автора, рассчитано на тех, кто уже немного знаком JavaScript и хочет привести свои знания в порядок а также узнать о языке что-то новое. Мы решили немного расширить аудиторию этого материала, включить в неё тех, кто совершенно ничего не знает о JS, и начать его с написания нескольких вариантов «Hello, world!».

Hello, world!

Программа, которую по традиции называют «Hello, world!», очень проста. Она выводит куда-либо фразу «Hello, world!», или другую подобную, средствами некоего языка.

JavaScript — это язык, программы на котором можно выполнять в разных средах. В нашем случае речь идёт о браузерах и о серверной платформе Node.js. Если до сих пор вы не написали ни строчки кода на JS и читаете этот текст в браузере, на настольном компьютере, это значит, что вы буквально в считанных секундах от своей первой JavaScript-программы.

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

твой родной язык джава скрипт что ли. image loader. твой родной язык джава скрипт что ли фото. твой родной язык джава скрипт что ли-image loader. картинка твой родной язык джава скрипт что ли. картинка image loader. Недавно мы провели опрос, посвящённый целесообразности перевода этого руководства по JavaScript. Как оказалось, около 90% проголосовавших отнеслись к данной идее положительно. Поэтому сегодня публикуем первую часть перевода.

Первая программа в консоли браузера — вывод сообщения в консоль

Ещё один вариант браузерного «Hello, world!» заключается в выводе окна с сообщением. Делается это так:

Вот результат выполнения этой программы.

твой родной язык джава скрипт что ли. image loader. твой родной язык джава скрипт что ли фото. твой родной язык джава скрипт что ли-image loader. картинка твой родной язык джава скрипт что ли. картинка image loader. Недавно мы провели опрос, посвящённый целесообразности перевода этого руководства по JavaScript. Как оказалось, около 90% проголосовавших отнеслись к данной идее положительно. Поэтому сегодня публикуем первую часть перевода.

Вывод сообщения в окне

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

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

Источник

JavaScript — лучший язык программирования для начинающих. Так это или нет?

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

твой родной язык джава скрипт что ли. 010940646558db9b66344dac5db8c0cd. твой родной язык джава скрипт что ли фото. твой родной язык джава скрипт что ли-010940646558db9b66344dac5db8c0cd. картинка твой родной язык джава скрипт что ли. картинка 010940646558db9b66344dac5db8c0cd. Недавно мы провели опрос, посвящённый целесообразности перевода этого руководства по JavaScript. Как оказалось, около 90% проголосовавших отнеслись к данной идее положительно. Поэтому сегодня публикуем первую часть перевода.

Шёл 2007 год. Отличное издательство технических книг O’Reilly Media обратилось ко мне, предложив одну идею. Они спросили меня о том, хотел бы я написать книгу о JavaScript, которая предназначалась бы для абсолютных новичков в программировании. «С какой стати?», — тут же задал я встречный вопрос.

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

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

твой родной язык джава скрипт что ли. image loader. твой родной язык джава скрипт что ли фото. твой родной язык джава скрипт что ли-image loader. картинка твой родной язык джава скрипт что ли. картинка image loader. Недавно мы провели опрос, посвящённый целесообразности перевода этого руководства по JavaScript. Как оказалось, около 90% проголосовавших отнеслись к данной идее положительно. Поэтому сегодня публикуем первую часть перевода.

Самым очевидным способом использования JavaScript, как мне, по наивности, тогда казалось, было примерно следующее: большой серверный фреймворк должен сформировать весь необходимый JS-код и встроить его в страницу, предназначенную специально для вашего браузера. JavaScript-код, формируемый сервером, мог бы оказаться слишком громоздким, но он был бы предназначен для конкретной версии браузера. А учитывая то, что JS играл лишь роль вспомогательного механизма, при этом всё работало бы как надо даже в том случае, если бы посетитель сайта полностью отключил бы JavaScript.

Затем произошло нечто странное.

JavaScript буквально «взлетел».

Я всё ещё не думаю, что JavaScript заслуживает чести называться лучшим в мире языком программирования. Я даже, если уж совсем честно, не считаю его очень хорошим языком. Но кое-в чём я своё мнение поменял. Теперь я считаю, что JavaScript, вероятно, является лучшим первым языком для детей и начинающих программистов. Всё дело в том, что у JavaScript есть одно серьёзнейшее преимущество перед всеми остальным языками программирования.

Потрясающая распространённость JavaScript — его главное преимущество

Одним из уникальных преимуществ JavaScript является его распространённость.

Этот язык можно встретить буквально повсюду. Он поддерживается на всех операционных системах, во всех видах браузеров, и на настольных компьютерах, и на мобильных устройствах. Очень важно ещё и то, что JavaScript-приложения работают без установки их на компьютеры пользователей. На самом деле, уже сложно вспомнить не такие уж и давние времена, когда компании, развёртывая клиент-серверные приложения в своих внутренних сетях, тратили недели, борясь с проблемами настройки этих приложений и с неожиданными ошибками. Столкнувшись с подобными кошмарами, вы вполне можете оценить привлекательность JavaScript.

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

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

Предположим, вы разрабатываете замечательное приложение, которое, задавая пользователю вопросы, определяет его личностный профиль. Настроить среду разработки довольно просто. Но что произойдёт, когда вы захотите отправить свою программу товарищу? Понадобится ли ему устанавливать у себя среду времени выполнения или воссоздавать ту же среду разработки, что и у вас? Нужно ли будет «подкрутить» настройки безопасности его компьютера прежде чем он сможет загрузить и установить вашу программу? Может быть, ваш товарищ использует операционную систему, которая попросту не поддерживает вашу программу, или мобильную платформу, на которую, если не вдаваться в детали, можно устанавливать только профессиональные приложения, распространяемые через iTunes или Google Play? Если же вы, для разработки программы, используете JavaScript, а для её распространения — простой веб-сайт (например, GitHub позволяет бесплатно создавать подобные сайты), то все эти проблемы попросту исчезнут.

А если наш будущий программист — ребёнок, то вот вам неопровержимый факт: дети и браузеры очень сильно связаны. Если вы наблюдали за ребёнком, который работает на компьютере (не на мобильном устройстве), то вы, возможно, заметили, что он как минимум 98% времени тратит на работу с браузером. Дети играют в браузерные игры, используют социальные сети, занимаются школьными делами в Google Classroom и Google Docs. И если код, который пишут дети, будет работать в родном для них браузерном мире, это будет совершенно естественно.

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

Недостатки JavaScript

Как насчёт проблем JavaScript? У этого языка есть серьёзные недостатки, его причуды, противоречия и ограничения могут быть крайне неприятными для того, кто только начинает изучать программирование. К счастью, существуют современные решения, которые могут сгладить большинство недостатков JavaScript.

Разберём четыре основные претензии, предъявляемые к этому языку.

▍1. Проблема работы с типами данных в JavaScript

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

Вот пример кода, который обречён на провал:

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

Один из моих любимых редакторов кода, который подходит и для изучения программирования, и для профессионального использования — это Visual Studio Code. Он бесплатен, нетребователен к ресурсам, его код открыт, его можно практически до бесконечности расширять. Одна из его самых замечательных возможностей заключается в поддержке организации проверки JavaScript-кода на наличие в нём распространённых проблем средствами TypeScript. Включить такую проверку можно, воспользовавшись соответствующим конфигурационный файлом или вставив следующий комментарий в верхнюю часть JavaScript-файла:

Вот пример, в котором имеются две ошибки, ни одна из которых, с точки зрения JavaScript, ошибкой не является.

твой родной язык джава скрипт что ли. image loader. твой родной язык джава скрипт что ли фото. твой родной язык джава скрипт что ли-image loader. картинка твой родной язык джава скрипт что ли. картинка image loader. Недавно мы провели опрос, посвящённый целесообразности перевода этого руководства по JavaScript. Как оказалось, около 90% проголосовавших отнеслись к данной идее положительно. Поэтому сегодня публикуем первую часть перевода.

Проблемы, которые JavaScript не считает ошибками

твой родной язык джава скрипт что ли. image loader. твой родной язык джава скрипт что ли фото. твой родной язык джава скрипт что ли-image loader. картинка твой родной язык джава скрипт что ли. картинка image loader. Недавно мы провели опрос, посвящённый целесообразности перевода этого руководства по JavaScript. Как оказалось, около 90% проголосовавших отнеслись к данной идее положительно. Поэтому сегодня публикуем первую часть перевода.

Выделенные строки кода

Если навести указатель мыши на выделенную строку, появится всплывающее окно, содержащее объяснение проблемы.

твой родной язык джава скрипт что ли. image loader. твой родной язык джава скрипт что ли фото. твой родной язык джава скрипт что ли-image loader. картинка твой родной язык джава скрипт что ли. картинка image loader. Недавно мы провели опрос, посвящённый целесообразности перевода этого руководства по JavaScript. Как оказалось, около 90% проголосовавших отнеслись к данной идее положительно. Поэтому сегодня публикуем первую часть перевода.

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

▍2. JavaScript не поддерживает ООП

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

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

К счастью, существуют красивые решения, обеспечивающие поддержку ООП в JavaScript. Моё любимое решение такого рода — это TypeScript — опенсорсный проект, запущенный Microsoft в 2012 году. TypeScript представляет собой нечто вроде улучшенной разновидности JavaScript, которая поддерживает ООП (а также многие другие полезные возможности вроде строгой проверки типов).

Кто-то может сказать, что мы говорим о JavaScript, и что TypeScript — это, всё же, не JavaScript. И, на самом деле, это так. Но вот одна интересная деталь. Код пишут на TypeScript, а затем конвертируют его в JavaScript перед тем, как он будет выполняться. Это позволяет пользоваться всем лучшим из миров TypeScript и JavaScript. Если вы выберете TypeScript, то у вас будет современный язык программирования, на котором вы сможете писать свой код, и та широчайшая поддержка, которой пользуется обычный JavaScript.

И, что приятнее всего, преобразование TypeScript-кода в JavaScript производится автоматически. Конечно, в сгенерированном компьютером JavaScript-коде используются, для отражения в нём концепций, реализованных средствами TypeScript, довольно громоздкие конструкции, но это ничего не меняет. Программист изучает концепции ООП, а готовый код правильно работает, без проблем обрабатываясь средствами современных компьютеров.

Не верите? Тогда подумайте о том, что некоторые из самых современных инновационных настольных приложений используют комбинацию из TypeScript и Electron — фреймворка, который позволяет выполнять JavaScript-код за пределами традиционного браузера (хотя надо отметить, что Electron пользуется браузерными возможностями). Один из наиболее впечатляющих примеров подобного приложения — это редактор VS Code. Получается, что тот самый инструмент, с помощью которого очень удобно писать JavaScript-код, сам написан на JavaScript. Правда, если говорить точнее, то VS Code написан на TypeScript, но код, написанный на этом языке, всё равно, преобразуется в JavaScript-код.

Конечно, изучая программирование вовсе необязательно использовать TypeScript, и новые JavaScript-программисты, если решат так поступить, смогут сделать очень многое, не изучая принципы ООП. Это, на самом деле, вопрос выбора. В любом случае, можно отметить, что JavaScript — язык динамично развивающийся, и в него постепенно добавляются возможности, сближающие его со всем тем ценным, что есть в TypeScript.

▍3. Вокруг полно некачественного JavaScript-кода

Что тут сказать. Некачественный код можно написать на любом языке программирования. Слышали когда-нибудь про Visual Basic?

▍4. Для JavaScript-разработки нужны дополнительные библиотеки и фреймворки

Для того чтобы получить доступ к более широкому, чем есть в языке, набору функциональных возможностей (и не изобретать велосипеды), JavaScript-программистам нужно использовать библиотеки и фреймворки сторонних разработчиков. Выбор правильных ингредиентов, используемых при создании некоего проекта — это не так просто, как может показаться на первый взгляд. Речь идёт, в частности, о том, что выбранные дополнительные инструменты должны правильно решать поставленные перед ними задачи, нужно, чтобы у программиста была бы уверенность в том, что они ещё долго будут пользоваться поддержкой своих разработчиков, нужно, чтобы они не конфликтовали друг с другом.

С некоей разновидностью этой проблемы сталкиваются и разработчики, использующие другие языки. Однако надо отметить, что немногие языки страдают от этой проблемы так же сильно, как JavaScript. Для того чтобы стать серьёзным программистом в открытом для всех JavaScript-мире, нужно собрать собственный набор инструментов разработки. При этом каждый из возможных вариантов выбора настолько сложен и многогранен, что понять, подходит ли вам, скажем, какая-то библиотека, можно только очень хорошо её изучив (а когда вы её изучите, может оказаться так, что она уже потеряет актуальность и на её место придёт что-то новое, притягивающее, возможно — на короткое время, всеобщий интерес).

Каким бы печальным всё это ни было, эти проблемы, на самом деле, не влияют на новичков. Если некто изучает программирование с использованием JavaScript, то ему лучше всего держаться в стороне от фреймворков и библиотек, идёт ли речь о чём-то широко известном, вроде jQuery, Angular, React или Vue, или о чём-то изобретённом в тот момент, когда было написано это предложение, или в ту секунду, когда была опубликована эта статья. Конечно, новичок, хорошо освоив фундаментальные вещи, вероятно, захочет ознакомиться, как минимум, с одним из популярных дополнительных инструментов. Но это — уже совсем другая история.

Итоги

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

Уважаемые читатели! Согласны ли вы с тем, что JavaScript — это, в современных условиях, самый лучший язык для обучения программированию? Если не согласны — тогда, может быть, вы знаете какой-нибудь язык, который лучше подойдёт для этой цели?

Источник

Каково ваше мнение: сложен ли JavaScript?

Говорят, что ЖС лёгкий, и одновременно учит программированию на более сложных языках.

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

Одна из сложностей связана с тем, что за свою 25-летнюю историю JavaScript дорабатывался с учётом обязательной обратной совместимости. То есть, любой код, написанный на JS двадцать лет назад, должен точно так же работать на современных JS-движках.

Это привело к тому, что в языке по историческим причинам существует некоторое количество нелогичностей, сохранённых из соображений совместимости. Похожая проблема есть и в других веб-технологиях, например в CSS.

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

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

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

Источник

Вы до сих пор не любите JavaScript?

С началом эпохи HTML5, рынку понадобилось большое количество JavaScript программистов. Многие специалисты по другим языкам, начали массово переориентироваться на JavaScript. Я много раз видел, как программисты с большим опытом ругали этот, один из самых гибких и могучих, язык, не понимая его принципов. В этой статье я постараюсь рассказать суть и философию JavaScript. Здесь будет всего 4 строчки кода и много-много того, что не напишут в учебниках. Обещаю, что вы полюбите этот язык, или по крайней мере, станете эффективнее в нём. Итак, поехали!

Я по очереди буду рассматривать основные особенности языка и следствия из них. Например, JavaScript обладает очень низким порогом входа. Если вы знакомы с C++ или Java, то можете начать вполне сносно программировать на нём уже через 15 минут после знакомства. Однако, для того, чтобы делать профессиональные вещи, нужно читать документацию, книги по паттернам JavaScript, общаться с более опытными коллегами. Большинство «пузатых и маститых джедаев программирования», конечно же, этого не делают и ругают себя язык. Может, было бы лучше, если бы порог входа был выше? Думаю, что нет (хотя критики было бы меньше). Согласитесь, гораздо проще постигать нюансы, когда вы уже можете написать работоспособный код.

Как же удалось добиться такой скорости разработки? Большинство языков ставят ограничения, якобы для нашего же блага. JavaScript не признаёт ограничений, вы можете менять код где угодно и когда угодно, в том числе гибко патчить чужой код. Если сравнивать языки программирования с политическими системами, то, скажем VBA — это тоталитаризм, вы поставлены в жёсткие рамки и даже не можете посмотреть все исходники. C++ — это демократия, ваша свобода махать руками заканчивается там, где начинается нос вашего собеседника. Это хороший, сильный язык программирования, ограничивающий свободу личности ради общего блага. JavaScript — это анархия, вы можете менять всё что угодно и никто вам не помешает, не ограничит вашу свободу. Проблема в том, что не все могут жить при полной свободе. Нужна высокая внутренняя культура, чтобы не украсть у соседа трактор, даже если тебе за это ничего не будет. То же самое и в коде, например, распространённая практика в JavaScript, не делать приватные свойства истинно приватными. Создаются обычные (публичные) свойства и к их имени просто дописывается знак подчёркивания. Считается, что другие программисты увидят это и не будут использовать это свойство без особой необходимости. Бывают ситуации, когда заложиться на значения приватного свойства или даже модифицировать его, является самым прямым и правильными путём. Да, везде бывают исключения, и JavaScript позволяет нам их делать. В таких случаях, программист разбирается в чужом коде и берёт на себя ответственность за последствия. «Он же может всё сломать!?» — негодуют адепты других языков. Об этом следующий пункт.

В JavaScript нет защиты от дурака. Мы считаем, что все, кто работают над кодом — профессионалы и доверяем им. (пауза) В хорошей JavaScript команде все программисты одного уровня. Он может быть низким или высоким, но не должен слишком сильно отличаться. Так же, как в стране, где все воруют, честному человеку приходится сложно, или в обществе порядочных людей, негодяй сразу получает по заслугам, так же и в анархическом и бесконтрольном JavaScript джуниоры будут ломать код джедаев, а джедаи будут использовать абсолютно не понятные для джуниоров (но понятные для любого профессионала) архитектурные ходы, невольно снижая их продуктивность. Так нужно ли перестраховываться через язык, или лучше просто набирать правильных людей? Некоторые ругают JavaScript за то, что они называют «баги» и «нелогичность». Например:

Это как раз то, для чего после быстрого старта желательно всё-таки прочитать про преобразование типов. Для любого, даже начинающего программиста на JavaScript, приведённые выше примеры тривиальны и абсолютно предсказуемы. За 10 лет подобные вещи ни разу не вызывали у меня проблем. Ещё одна интересная задачка, что вернёт этот код:

Немного про обработку ошибок — она в JavaScript молчаливая. Это значит, что если программа может продолжаться — она с большой вероятностью продолжится. Скажем, вы поделили на нуль, большинство языков выбросит ошибку и завершит работу, а JavaScript покажет Infinity и, возможно, даже выведет его в интерфейс пользователю в виде строки, если так задумана логика программы. Хорошо это или плохо? Я бы сказал, это позволяет создавать программы с высочайшим уровнем стабильности. Выход из строя одного элемента не выводит из строя всю систему. Конечно, плохо показывать пользователю NaN или undefined, но это гораздо лучше, чем аварийно завершиться, как все мы много раз видели у многих нативных прогамм под Windows (и не только). Мы доверяем программистам и считаем их профессионалами, поэтому в идеальном мире такие ситуации не должны появляться. Если же проблема всё-таки возникла — у нас есть страховка, некоторый запас прочности языка. И, конечно же, в особо важных местах программы мы можем вручную проверять значения на NaN, null, undefined, создавая абсолютно строгий код.

На десерт расскажу видение самой неоднозначной особенности JavaScript — прототипного наследования. Если говорить об Объектно Ориентированном Программировании, то вообще говоря, оно не требует, чтобы объекты обязательно были объявлены через классы. Более того, часто нам нужен какой-то объект в единственном экземпляре, либо нужно создать несколько однотипных объектов, но отличающихся какими-то нюансами — дополнительные поля, флаги, методы и т.п… Часто, классы создавать совсем не обязательно, это излишний уровень абстракции, и прототипное наследование, или даже создание объектов на лету, прекрасно справляется с такими задачами. Согласно принципу бритвы Оккама, не стоит плодить лишний код, если задачу можно решить проще. Такой подход требует не только меньше текста, но и меньше оперативной памяти и процессорного времени. Классы не поставляются из коробки, но если вы пишете большое enterprise-приложение — написать 20 строчек своей реализации классов для вас не составит труда. Если нет — воспользуйтесь одной из многочисленных библиотек, в таких языках как C++ без библиотек придётся гораздо сложнее. Хотя некоторые предпочитают писать на чистом JavaScript, это не так сложно и имеет дополнительные преимущества.

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

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

Чтобы быть совсем честным, скажу так же о пожалуй самом существенном минусе JavaScript: профессиональное программирование на нём во многих аспектах сложнее, чем на Java или C#. Если в строго типизированных языках вы видите хотя бы типы аргументов, которые вы принимаете в функцию, то в JavaScript нужно все эти данные держать в голове. Порой вы не можете быть уверены даже в том, какие методы имеет тот или иной объект. Это требует высокого уровня концентрации и хорошего понимания архитектуры. Если вы готовы на это и готовы честно изучить язык, а не слепо кодить с места в карьер — вы получите поистине один из самых мощных инструментов, для создания гибкого и кроссплатформенного программного обеспечения с высокой скоростью.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *