Java Script: зачем он нужен и почему полезно его учить

Java Script: зачем он нужен и почему полезно его учить

https://t.me/htmlcssjavas


Данный текст рассматривает вкратце следующие очень важные для начинающих вопросы:

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

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

  1. Что понимать под языком программирования. Место JS среди них и программирование для веба

Интернет в настоящее время стал основной средой обмена информационными потоками, а неотъемлемой составной частью любого общения являются веб страницы, воспроизводимые на экранах компьютеров пользователей с использованием специальных программ - браузеров. Основной задачей любого браузера является воспроизведение различных веб-страниц и веб-документов, по факту именно на уровне этого прикладного программного обеспечения происходит обработка всего программного кода на стороне пользователей.

И тут важно понять, что именно здесь может обрабатываться. В основе любых веб-конструкций лежат т.н. “языки разметки”, наиболее распространенным среди них является язык HTML. Именно он определяет структуру и основные элементы веб-страниц, именно html (или xhtml) код интерпретируется браузерами и отображается на экранах компьютеров или мобильных устройств пользователей. Итак, структуру любого веб-документа в глобальной сети определяет в первую очередь код, оформленный в форме текстового документа и предназначенный для обработки (интерпретации) с использованием браузеров (их иногда еще называют веб-обозревателями). Далее, разметка HTML определяет лишь основные элементы и базовую структуру веб-страниц. Для того, чтобы просматриваемая страница приобрела достойный внешний вид, используется, совместно с HTML, инструментарий каскадных таблиц стилей (CSS) формального описания внешнего вида и оформления документа.

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

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

Итак, языки разметки если и можно считать языками программирования, то они какие-то неполноценные языки - программировать на них вроде бы и можно, а вот получить сложные алгоритмы -уже нет.. Возникает вопрос - что же можно считать (полноценным) языком программирования, а что - нет.

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

А всё то, что такому требованию не удовлетворяет, должно быть лишено права называться языком программирования в широком смысле. В частности, все языки разметки, в том числе и различные сочетания HTML/CSS, языками программирования мы признавать не можем - это всего лишь некие декларативно-описательные наборы инструкций, облегчающие жизнь разработчика, но не позволяющие получить сколь-либо сложные конструкты.

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

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

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

Да, конечно, есть другие языки, которые способны решать тот же самый круг задач, а многие из них - и более эффективно, нежели JavaScript. Нет смысла перечислять здесь все языки, которые могут эффективно использоваться в веб-разработках, достаточно упомянуть такие замечательные и широко распространенные проекты, как Python или Ruby-on-Rails. Однако именно JavaScript является единственным языком, который обязан поддерживаться всеми браузерами.

Итак, JavaScript можно позиционировать как универсальный встраиваемый язык для программного доступа к объектам приложений. Наиболее широкое применение JavaScript находит в браузерах как язык сценариев для придания интерактивности веб-страницам, но может использоваться и в самостоятельных проектах, даже и не связанных никак с работой в интернет. Мы имеем по факту широко распространенный язык программирования высокого уровня с хорошо развитым синтаксисом, пригодный для решения любых задач программирования, но при этом еще поддерживаемый всеми браузерами с удобной технологией внедрения в HTML-код, что при использовании языка позволяет обойтись минимальным “джентльменским набором” разработчика - блокнотом и браузером, и можно даже не выходить в интернет (если, конечно, техническое задание не предусматривает иного :)).

2. Возможности JavaScript. Вопросы распространенности

Отметим основные особенности языка JavaScript и вытекающие из них возможности и недостатки языка в целом. Основные его существенные признаки могут быть выражены в следующей краткой форме:

JavaScript – это высокоуровневый интерпретируемый объектно-ориентированный язык программирования, разработанный специально для ведения веб-разработок.

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

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

В случае получения ошибки или синтаксически некорректного программного кода интерпретатор прекращает дальнейшее выполнение программы.

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

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

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

Поскольку основной практической задачей языка JavaScript является работа с веб-страницами, то программы, написанные на языке JavaScrip (которые при этом принято называть скриптами) подключаются напрямую к html-страницам при помощи html-тега 'script' и такие внедренные в базовую разметку страницы скрипты могут выполняться как в процессе загрузки страницы, так и в процессе взаимодействия страницы с пользователем. Поскольку такие скрипты (сценарии) JavaScript исполняются в первую очередь именно на клиентском компьютере в браузере, а не на веб-сервере, то JavaScript следует рассматривать прежде всего как инструмент для создания клиентских приложений.

Хотелось бы отметить, что клиентский подход для JavaScript не является исчерпывающим, и данный язык может быть использован и на стороне сервера, причем использован весьма эффектно и эффективно. JavaScript позволяет создавать полноценные серверные приложения, поддерживающие в том числе и работу с реляционными базами данных (в первую очередь SQL/MySQL). Правда, такой функционал напрямую реализовать довольно-таки трудоемко и для эффективной работы на стороне сервера нужны дополнительные библиотеки для JavaScript. самой известной такой библиотекой, обеспечивающий богатый функционал для создания и отладки серверных приложений, является библиотека Node.js.

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

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

Для успешной работы с веб-ресурсами и браузерами JavaScript включает в себя, помимо ядра (ECMAScript), обеспечивающего базовую функциональность языка, две программные модели:

  • объектная модель браузера BOM (Browser Object Model), предоставляющую средства для взаимодействия с браузером;
  • объектная модель документа DOM (Document Object Model), предоставляющую средства для работы с содержимым веб-страниц.

Данные модели относятся к клиентскому JavaScript и позволяют эффективно организовывать взаимодействие программного кода с элементами веб-страницы и окном браузера.

В общем случае язык JavaScript предоставляет возможность выполнять над веб-структурами, описанными с использованием языков гипертекстовой разметки следующие базовые операции:

  • создавать и удалять теги, а также их атрибуты;
  • изменять содержимое тегов, а также значения их атрибутов;
  • изменять стили элементов;
  • реагировать на действия пользователя, обрабатывая клики мыши, перемещения курсора, нажатия на клавиатуру, заполнение полей формы и т.д.;
  • получать и устанавливать cookie, т.е. специальные текстовые строки, которые используются для хранения данных на стороне пользователя;
  • посылать запросы на сервер и загружать данные без полной перезагрузки страницы (технология, известная под именем 'AJAX');
  • определять браузер пользователя;
  • а также совершать еще много других полезных и интересных вещей.

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

Основная идея использования JavaScript для нужд веб-разработки состоит в возможности изменения значений атрибутов HTML-контейнеров (тегов) и свойств среды отображения в процессе просмотра HTML-страницы пользователем без перезагрузки этой страницы в браузере.

Основные, но конечно не все, области использования языка JavaScript при создании интерактивных HTML-страниц заключаются в возможности:

  • динамического создания документа с помощью сценария;
  • оперативной проверки достоверности заполняемых пользователем полей форм HTML-документа до передачи их на сервер;
  • создания динамических HTML-страниц совместно с каскадными таблицами стилей (CSS) и объектной моделью документа;
  • взаимодействия с пользователем при решении «локальных» задач, решаемых приложением JavaScript, встроенным в HTML-страницу.

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

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

3. JavaScript - распространенность и использование Почему его полезно изучать

Для любого языка программирования важнейшим его “потребительским” свойством является распространенность. Чем в большем числе проектов язык используется, тем выше его значимость в целом, тем больше востребованы знания и навыки тех людей, которые освоили работы с данным языком. Посмотрим вкратце, какова же ситуация с JavaScript на настоящий момент. Довольно объективная оценка популярности языков программирования и объемов их использования в проектах приводится в исследовании специалистов из компании O'Reilly, основанного на опросе свыше 1300 программистов из 27 стран.

JavaScript занимает твердое первое место в рейтинге. по сравнению с предыдущем периодом количество программистов использующих JavaScript увеличилось на 6,5%.

Помимо актуальных технологий, исследователи задавали вопрос о языках программирования, которые респонденты перестали использовать из-за перехода на другие технологии. Лидерами здесь стали C/C++, PHP и Java.

Иллюстрация: O'Reilly

Кроме этого, при проведении исследования задавался и вопрос о языках программирования, которые респондент планирует изучить в ближайшее время. Здесь безоговорочным лидерами стали Go и Scala, а замыкают пятёрку перспективных технологий Python, Swift и JavaScript.

Иллюстрация: O'Reilly

В ходе исследования удалось обнаружить интересные корреляции. Так, в небольших компаниях с количеством работников от 2 до 25 человек намного чаще занимаются фронтенд-разработкой. Соответственно, в таких компаниях чаще используют CSS (47%), JavaScript (61%), HTML (61%) и PHP (26%).

С ростом размеров компании увеличивается частота упоминания Java в качестве используемой технологии. А чем дольше респондент работает на рынке, тем чаще он будет использовать C/C++. В молодых компаниях популярнее Ruby и JavaScript.

На популярность технологии влияет и образование. Специалисты с дипломом в математике и статистике чаще используют Python (41% против среднего значения в 23%) и реже — PHP (42% против 56%). К Python чаще склоняются и специалисты с степенью магистра. Образование в области компьютерных наук вызывает тягу к Java, а фронтенд-разработчики зачастую не имеют специализированного образования.

Наиболее опытными по итогам исследования оказались разработчики на Perl 5, Lua и VisualBasic .NET — их профессиональный стаж в среднем составляет 15-17 лет.

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

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

  • JavaScript имеет довольно простой и выверенный синтаксис, в основе которого лежат приемы организации кода, заимствованные из Си-образных языков, в частности - из классического Java. Это означает, что, начав работать с JavaScript , вы автоматически получаете навыки обращения с самым большим и развитым семейством языков программирования и при необходимости сможете использовать полученные навыки для успешной работы с другими языками с близким синтаксисом. Многие особенности языка JavaScript также направлены на снижение уровня формальных требований к коде (в первую очередь, это основные архитектурные черты языка - динамическая типизация, слабая типизация, автоматическое управление памятью, рассмотренное уже выше прототипное программирование, функции как объекты первого класса.
  • Т.к JavaScript с точки зрения работы в веб - в первую очередь клиентский язык, то все пользователи имеют возможность получить прямой доступ к любым исполняемым на веб-сайте скриптам. Все, что вы реализуете на JavaScript, будет открыто и любой желающий, зайдя в исходный код веб-страницы, сможет найти там все ваши скрипты и плагины на JavaScript
  • JavaScript является мультипарадигмальным языком, причем крайне терпимым к шероховатостям или даже ошибкам при оформлении кода. Скажем, JavaScript имеет объектно-ориентированную природу и позволяет достаточно на высоком уровне освоить навыки работы с классами и наследованиями, однако за счет развитого прототипирования позволяет избегать необходимости глубокого погружения в таксономические вопросы работы с классами, что очень существенно упрощает жизнь разработчикам на JavaScript;
  • JavaScript поддерживает парадигмы функционального программирования, так что его изучение широко открывает дверь в мир современных узкоспециализированных языков с высокими вычислительными мощностями.
  • наконец, JavaScript, изначально включающий в себя минимум встроенных функций (всё, что требуется для решения специальных задач, добавляется в функционал языка с помощью библиотек кода) и имеющий весьма спартанский функционал, позволяет научиться именно “чистому” программированию, без использования упрощающих жизнь фишек, когда одна встроенная функция заменяет до сотни строк кода. Это очень полезно при первом погружении в программирование, позволяя не столько освоить данный конкретный язык, но набраться опыта в работе с алгоритмами в целом, освоить основные методики и приемы построения программных алгоритмов в целом.

Заключение

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

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



Report Page