JavaScript для чайников - Часть 1

JavaScript (« / ˈdʒɑːvəˌskrɪpt / ), часто сокращенно JS, представляет собой высокоуровневый, динамический, слабо типизированный, объектно-ориентированный, многопарадигмальный и интерпретируемый язык программирования». - Википедия. Позвольте мне перевести это для вас: JavaScript - это язык программирования, который позволяет веб-разработчикам создавать интерактивные веб-сайты или приложения, а характеристики, перечисленные в Википедии, определяют, как программисты могут использовать этот язык для этого. Поскольку я недавно начал изучать JavaScript, я погрузился в определение Википедии, чтобы понять, что такое JavaScript на самом деле.

Что это за чудесный JavaScript?

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

Высокий уровень

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

Динамический

Языки динамического программирования выполняют многие задачи во время выполнения, в то время как статический язык выполняет это во время компиляции (читайте: до выполнения). Это означает, например, что типы переменных динамического языка можно изменять во всем коде, в то время как в статическом языке программирования это было бы невозможно. Вы можете вспомнить пример из реальной жизни. Статический язык программирования - это человек, надевающий штаны. Динамический язык программирования - это когда женщина переодевается с брюк на платье, на юбку и обратно, чтобы одеваться в течение дня. Динамическое программирование (DP) имеет как преимущества, так и недостатки. Во-первых, это обеспечивает большую гибкость, поскольку типы не нужно указывать, что также делает код более компактным. DP также позволяет программам генерировать типы (и функциональность) на основе данных времени выполнения, что полезно, когда вы хотите использовать пользовательский ввод в своем коде. Наконец, DP обеспечивает лучшее взаимодействие с системами с непредсказуемым выводом данных, что удобно для крупных проектов. Однако динамическое программирование очень неэффективно во время выполнения, поскольку средство проверки типов должно проверять все классы во время выполнения. Кроме того, DP позволяет присваивать переменной любой тип, и неправильные типы не обнаруживаются как ошибки, что затрудняет устранение неполадок.

Слабый тип

Все переменные в языках программирования имеют такие типы, как число, строка или логическое значение. Есть много, немного разных мнений по поводу определения слабо типизированного, но я иду: слабо типизированный означает, что несоответствие типов может иногда проскальзывать без ошибок и давать непредсказуемые результаты, в то время как строго типизированные языки просто отказываются компилироваться. Примечание: разница между динамической типизацией и слабой типизацией заключается в том, что динамическая типизация касается получения информации о типе, тогда как слабо типизированная означает четкость различения типов. Давайте посмотрим на пример, где ‘1’ имеет строку типа, а 1 - число:

'1'==1

На языке со слабой типизацией результатом этой строки кода будет истина, потому что в ней указано, что 1 равно 1, что верно. Однако на строго типизированном языке результатом будет false, поскольку "1" имеет тип string, а 1 - тип number, что явно соответствует не соответствует. Таким образом, слабо типизированные языки могут давать неожиданные результаты, из-за которых программистам может быть очень сложно отладить свой код, потому что большая часть его поведения скрыта в неявных преобразованиях типов. Но преимущество слабо типизированного программирования заключается в что вам нужно писать меньше кода.

Объектно-ориентированный (или объектно-ориентированный)

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

Мультипарадигма

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

Интерпретировано

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

Итак, что мы на самом деле узнали здесь?

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

Теперь, когда ясно, что у JavaScript есть ряд недостатков, почему программисты до сих пор так часто его используют?

Эта тема будет обсуждаться во второй части этого блога, так что следите за обновлениями!