Javascript как первый язык
Перейти к содержимому

Javascript как первый язык

  • автор:

С чего начать изучение JavaScript и как это делать эффективно

С чего начать изучение JavaScript и как это делать эффективно главное изображение

JavaScript (JS) — это многофункциональный язык программирования. В основном разработчики используют этот язык в вебе. По данным рейтинга W3Techs на ноябрь 2023 года, на JavaScript работает 98% всех сайтов.

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

В бэкенд-разработке программисты с помощью JavaScript создают серверные приложения на базе программной платформы Node.js. Данные об активности пользователя на сайте, файлы, которыми он делится, отправляемые запросы — все это делается на JavaScript.

Кроме того, JavaScript используют в этих областях программирования:

  • Мобильная разработка
  • Разработка игр
  • DevOps
  • Машинное обучение
  • Базы данных

Профессия «Фронтенд-разработчик»

  • Изучите востребованные JavaScript и TypeScript
  • Научитесь создавать пользовательские интерфейсы сайтов и приложений
  • Освойте самый популярный фреймворк JavaScript — React
  • Познакомьтесь с языками веб-разработки HTML и CSS

С чего начать изучать JavaScript

JavaScript — самый популярный язык среди разработчиков в 2022 году по версии исследования GitHub , база знаний у него очень большая. Важно в ней не теряться. Давайте разберемся, как начать изучать JavaScript с нуля и не запутаться в обилии информации.

Составьте план обучения

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

Изучите основы языка

  • Лексика, синтаксис и семантика — то, без чего вы не освоите ни один язык программирования. На этом этапе вы должны понять, в какой последовательности давать компьютеру инструкции, как выводить информацию на экран и писать простейшие программы на языке JavaScript.
  • Типы данных: что такое числа, строки, в чем разница между null и undefined.
  • Операторы. Здесь нужно узнать, какие бывают операции и чем они отличаются от операторов, как складывать, вычитать, умножать и делить числа на JS, и в каком приоритете это выполняет программа.
  • Переменные: что это такое, зачем они нужны, как изменять переменные и именовать их, как использовать.
  • Функции: зачем их используют разработчики, какие бывают функции, что такое их сигнатура, что такое чистая функция и какие у нее особенности.
  • Условные конструкции: как строить условия, как выполняется код в зависимости от условия и как строятся сложные условные конструкции.
  • Методы, объекты и свойства: в чем особенность каждого понятия, что такое объекты и структуры данных.
  • Циклы: для чего они нужны, как их задавать.

Описанные выше темы можно изучать по учебным пособиям, а еще можно воспользоваться бесплатными курсами в Хекслете. Вот некоторые из них:

  • «Основы JavaScript» — познакомитесь с экосистемой JavaScript, ключевыми возможностями языка, а также узнаете о чистых функциях и именовании.
  • «Основы современной верстки» — базовые представления о HTML-разметке страниц и CSS — каскадных таблицах стилей.

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

Изучите HTML и CSS

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

Лучше всего изучать HTML и CSS параллельно с основами JS. Но здесь важно не переусердствовать и не запутаться в обилии информации. Если вы чувствуете, что в голове появляется «каша» из разных понятий, отложите изучение HTML и CSS и дайте знаниям время для усвоения. Занимайтесь в удобном для вас режиме.

Читайте также:

Установите и настройте редактор кода

Кодить на JavaScript можно и в простом «Блокноте». Но программисты практически не пользуются им в повседневной практике — возможности этого редактора очень ограничены. Для полноценной работы на JavaScript лучше выбирать редакторы с более широким функционалом.

Вот примеры нескольких редакторов кода с настраиваемым интерфейсом, подсветкой синтаксиса и удобной навигацией:

  • Visual Studio Code — редактор со встроенным дебаггером, Git-командами для работы с системой управления версий GitHub.
  • Sublime Text — редактор с горячими клавишами, автосохранением, автодополнением.
  • WebStorm — редактор, который обеспечивает автодополнение, навигацию по коду, рефакторинг и отладку. Он платный, но очень популярный среди разработчиков.

О том, как настроить редакторы кода на JS, можно почитать в гайдах Хекслета.

Читайте также:

Пробуйте кодить

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

Зайдите на GitHub и найдите там открытый код на языке JS. Выберите из него самый привлекательный для вас фрагмент, скопируйте его и откройте у себя в редакторе. Изучите код, проанализируйте, почему он написан именно в таком порядке, за что отвечает каждая строка. Это хорошая практика, которая вырабатывает насмотренность и структурирует знания.

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

Углубите свои знания

По мере вашего развития в программировании вам нужно будет познакомиться с этими понятиями языка JavaScript:

  • Асинхронность и событийная модель — одна из «фишек» этого языка программирования. Кто-то ее любит, кто-то ненавидит, но у начинающих разработчиков эта концепция неизменно вызывает сложности. Чтобы стать программистом на JavaScript, нужно уметь работать с циклом событий и коллбеков, стеком вызова и промисами.
  • BOM и DOM-дерево — альфа и омега веб-разработки. BOM — объектная модель браузера, а DOM — объектная модель документа. Программист должен знать, из каких элементов состоит веб-страница, какая у нее структура и как разные части взаимодействуют между собой.
  • Объекты, классы, основы ООП — теоретический базис разработчика. ООП — это объектно-ориентированное программирование, одна из самых распространенных парадигм. Она предлагает создавать сущности в коде в виде различных объектов. А описывают их через классы — набор параметров и характеристик.
  • Помимо самого языка программирования — JavaScript разработчику необходимо освоить популярные библиотеки и фреймворки. Библиотеки — это наборы готовых кусков кода, а фреймворки — каркасы или шаблоны для создания приложений.

Также изучите фреймворки и библиотеки. В JavaScript сейчас популярны:

  • jQuery — помогает работать с событиями веб-страницы, а также содержит распространенные функции для использования в DOM, о которой говорили выше. jQuery каждый год хоронят, но за счет своей простоты библиотека не теряет актуальности.
  • React — универсальный помощник для разработки пользовательских интерфейсов. У React есть еще версии для мобильной разработки и VR.
  • AngularJS — фреймворк, который поддерживает Google. Он эффективен для разработки одностраничных приложений. AngularJS делит их на три отдельных части: модель, вид и контролер, что упрощает процесс написания кода.
  • Vue.js — фреймворк с самым высоким рейтингом среди разработчиков и прекрасной документацией. К его особенностям относят простоту шаблонов, которая избавляет программиста от необходимости прописывать каждое действие.

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

Читайте также:

Дополнительная информация

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

Также, помимо написания кода, ему необходимо разбираться в сетях, протоколах и браузерах.

Какие знания потребуются:

  • Что такое протокол TCP/IP, какие у него есть уровни и как каждый из них работает, что такое DNS-зоны и домены.
  • Сессии, куки и аутентификация — веб-разработчик должен знать, как приложения взаимодействуют с пользователями.
  • База данных — одна из основных частей любого приложения, которое загружает или хранит информацию. Все разработчики используют их в своей деятельности. Нужно понимать, что такое реляционные и нереляционные базы данных, а также понимать типы связи между ними. Рекомендуется выучить основы SQL — языка запросов к базам данных.
  • Инструменты разработчика от Chrome — помогают отслеживать маршруты и проводить отладку приложений прямо в консоли. Ими нужно научиться пользоваться.
  • TDD — популярная техника разработки. Она предполагает, что крупный проект разбивают на несколько небольших циклов. В каждом сначала создают тесты, проверяющие изменения, а потом вносят их. Нужно понимать основы тестирования и знать об основных принципах этой техники.

Сколько времени нужно, чтобы выучить JavaScript

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

Истории выпускников Хекслета

Как я пошел учиться на разработчика, пожертвовав финансовой стабильностью

Меня зовут Виталий. Расскажу, почему я ушел из нефтяной отрасли в фронтенд-разработку, как мой пет-проект придал мне уверенности на собеседованиях и тяжело ли вообще вливаться в IT после 30 лет.

Найти свою зону комфорта: как интроверт стал программистом

Меня зовут Сергей, мне 39 лет. Расскажу, как я оставил перспективную должность ради IT, почему выбрал для развития бэкенд-разработку и чем помогаю стримерам на Twitch в свободное от работы время.

Соревнуйтесь на Codebattle

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

Codebattle особенно полезен новичкам, потому что он:

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

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

Изучайте дополнительные материалы

Читайте обучающие статьи на Хабре , учебники , смотрите видеоуроки на YouTube. Есть также много хороших книг по изучению JavaScript. Будет здорово, если вы прочитаете некоторые из них:

  • Дэвид Флэнаган «JavaScript. Подробное руководство»
  • Дуглас Крокфорд «Как устроен JavaScript»
  • Алексей Васильев «JavaScript в примерах и задачах»

У Хекслета есть свой список рекомендованной литературы. Ознакомьтесь с этими книгами — они полезны для программистов любых направлений.

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

js как первый язык.

Привет ребята. Подскажите толковые книги по изучению языка. Заранее благодарен.

dmtryykiosov
09.09.18 13:55:36 MSK
1 2 →

К дяде Илюше загляни на javascript.ru он плохого не посоветует.

deep-purple ★★★★★
( 09.09.18 13:57:50 MSK )
pru-mike ★★
( 09.09.18 13:58:08 MSK )

Можешь не благодарить. А целую книгу ради этой дрысни — слишком жирно.

entefeed ☆☆☆
( 09.09.18 14:02:36 MSK )

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

anonymous
( 09.09.18 14:17:15 MSK )

Какое интересное стремление сломать себе мозг

leave ★★★★★
( 09.09.18 14:29:01 MSK )

В качестве первого языка есть смысл изучать для создания веб-страниц. Для освоения этого первоочередная задача — изучить основы HTML, CSS и JavaScript. Я сам изучал давно и не знаю, какие сейчас книги. Другое дело — если есть желание просто научиться программировать. В ответ на вопрос, с чего начать, называют самые разные языки. Большинство ответов глупые, в том числе совет начинать с JavaScript. Он — не универсальный язык программирования, то есть не лучшим образом подходит или совсем не подходит для других задач, кроме разработки веб-приложений, а простота языка не означает простоту программирования на нём. Подходящий язык для желающего просто научиться программировать — Python. Есть учебники разного уровня, в том числе для изучения в качестве первого языка программирования, в том числе на русском языке.

Partisan ★★★★
( 09.09.18 14:32:56 MSK )
Ответ на: комментарий от Partisan 09.09.18 14:32:56 MSK
anonymous
( 09.09.18 14:41:45 MSK )

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

moot ★★★★
( 09.09.18 14:43:06 MSK )
Ответ на: комментарий от moot 09.09.18 14:43:06 MSK

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

ados ★★★★★
( 09.09.18 15:14:34 MSK )
Последнее исправление: ados 09.09.18 15:14:42 MSK (всего исправлений: 1)

Ответ на: комментарий от ados 09.09.18 15:14:34 MSK

первым языком может быть только MIX-ассемблер Кнута. иначе ты не программист. а вот вторым уже можно что угодно брать.

А я у тебя точно первый? Или как выбрать (первый) язык программирования в $ году

Я часто вижу, как разработчики разного уровня «сеньёрности» доказывают, иногда аргументированно, иногда просто «авторитетно», почему стоит или не стоит выбирать определенный язык программирования в качестве первого. YouTube полон роликов по типу «Какой язык программирования учить первым», «Стоит ли учить «такой-то» язык первым», «Лучшие языки программирования для изучения в «таком-то» году» и т.д. Авторы стабильно обновляют такие видео и получают не менее стабильные просмотры. Схожая тенденция наблюдается на тематических форумах и в блогах. Из этого можно сделать вывод, что тема актуальна для сотен новичков, только начинающих разбираться в программировании.

За свой IT’шный бэкграунд (в рамках универа, работы и личного интереса) я изучил порядка 15-ти языков программирования. Пробовал функциональные, структурные, логические и объектно-ориентированные. Мне есть с чем сравнить и на основе чего делать выводы.

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

Первое – Пробудить интерес к программированию. Это однозначно Python или JS. Человеческий мозг получает удовольствие, когда у него что-то получается, когда он видит результат своего труда, причем чем быстрее, тем лучше. У Python много готовых библиотек и богатая кодовая база. Существует множество туториалов, по которым можно быстро сделать что-то рабочее и прикольное: ботов, простенькое GUI, скрипты для операционных систем и ещё множество несложных интересных проектов.

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

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

Оба языка популярные, вакансий на них немало. Отличный вариант для старта. Я думаю, что это must have языки для изучения программирования в школе. Поначалу, главное – это привить интерес к программированию, а не готовить девятилетних «сеньёров», стартующих с Erlang, которые будут обсуждать SOLID и Best practice на переменах между уроками ИЗО и Физкультуры.

Второй сценарий – это Программирование интересно само по себе и человек хочет развиваться как разработчик и инженер. Здесь однозначным решением будет C++. Это мощный универсальный язык со статической типизацией и качественным ООП. С памятью поработаете, на указатели посмотрите, поиграете с шаблонами, потыкаетесь в разного рода оптимизации. Стандарты 11-го и 14-го года призваны облегчить «мучения». Не зря в народе С++ в шутку называют «Язык языков». Однако в каждой шутке есть только доля шутки. С ним можно наработать очень хорошую программерскую базу, а потом решить, хочешь ты развиваться в нем дальше или нет. Разработчики редко учат один язык и пишут на нём всю жизнь. Если разобраться в С++ на вменяемом уровне, то изучить любой другой язык в дальнейшем не составит труда.

Следующий вариант – Человек на 100% определился со сферой, в которой хочет работать. Образно, ты горишь идеей разрабатывать мобильные приложения. Это мечта, цель и смысл жизни. Тогда можно сразу приступить к изучению соответствующего ДЛЯ ДАННОЙ СФЕРЫ языка.

Хочется писать под Android – это очевидно Kotlin, если под IOS – то Swift. Прокатиться на двух стульях сразу поможет JS с его React Native.

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

Если ты только начинаешь, то не так важно какой язык осваивать первым. Главное, чётко определиться с направлением, которое тебе интересно: frontend, backend, мобильная разработка или data science, микроконтроллеры и т.д. Так и спектр языков сузится и шанс ненавидеть свою будущую работу уменьшится.

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

Заключительный сценарий — Нужно быстро начать зарабатывать деньги. Если ты отлично знаешь любой язык программирования и разбираешься в его экосистеме – без денег ты не останешься. Но существует ряд языков, зная которые, найти работу проще. Они распространены повсеместно, вакансий на них много, глубокой спецификой не отличаются. По этой причине на них охотнее берут разработчиков без опыта, нежели на языки типа Scala, куда неопытных программистов никогда не нанимают. Кто бы что ни шутил и ни говорил, такими языками являются: PHP, Java, JavaScript и 1С (если ты некрещёный). Тема сегрегации по языкам программирования достойна отдельного обстоятельного разговора.

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

Напишите в комментариях какой язык программирования был вашим первым, и что вы думаете о нем сейчас. Мне суперинтересно об этом почитать. У меня, как и у многих, первым был Pascal 🙂

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

  • программирование
  • первый язык программирования
  • как выбрать язык программирования
  • какой язык программирования учить
  • pylounge
  • it
  • программирование для начинающих
  • язык программирования
  • обучение программированию

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

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

image

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

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

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

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

Нет нужды говорить, что тогда я книгу о JavaScript не написал. Я продолжал заниматься серверным программированием и писать о моих любимых технологиях (как правило, о языке С# и о .NET Framework). Прошло много лет.

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

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 заключается в том, что этот язык слишком вольно и неаккуратно обращается с переменными. Он позволяет делать то, что не выглядит правильным, и игнорирует очевидные нестыковки. Его халатность способна превращать незначительные опечатки в катастрофы, нарушающие работу программ.

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

var myNumber = 100; myNumber = myNumbr + 1;

Увидели ошибку? Во второй строке, на самом деле, используются две переменных: переменная myNumber , которая была объявлена в первой строке, и некая фиктивная переменная myNumbr . Мы знаем о том, что вторая переменная — это результат опечатки, но JavaScript сообщит нам об этом только во время выполнения программы, выдав сообщение об ошибке, которое выглядит как ReferenceError: myNumbr is not defined . То же самое происходит и в том случае, если при записи имени переменной перепутали большие и маленькие буквы (например, переменная из myNumber случайно превратилась в MyNumber ). Проблема, но уже другого характера, может возникнуть и в том случае, если вы, считая, что некая переменная хранит число, прибавляете к ней другое число, а эта переменная, на самом деле, содержала строку или что-нибудь другое. JavaScript в таком случае не сообщит об ошибке, но результат вычислений будет совсем не таким, какого можно ожидать от сложения двух чисел. Каждый JavaScript-разработчик может вспомнить неприятную историю такого рода, когда путаница с типами вызывала странные ошибки в программах.

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

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

// @ts-check

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

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

Если добавить в начало этого файла комментарий // @ts-check , то VS Code выделит строки кода, которые содержат потенциальные ошибки.

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

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

Объяснение проблемы

Какие из этого можно сделать выводы? Хотя 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 — это, в современных условиях, самый лучший язык для обучения программированию? Если не согласны — тогда, может быть, вы знаете какой-нибудь язык, который лучше подойдёт для этой цели?

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

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