Выразительный джава скрипт: Introduction — Выразительный Javascript

Читать онлайн «Выразительный JavaScript» — Хавербеке Марейн — RuLit

Марейн Хавербеке

Выразительный JavaScript

Введение

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

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

Для простого взаимодействия с компьютером это неплохо подходит.

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

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

За последние 20 лет работа с компьютером стала очень распространённым явлением, и интерфейсы, построенные на языке (а когда-то это был единственный способ общения с компьютером) почти вытеснены графическими. Но они всё ещё есть – если вы знаете, где их искать. Один из таких языков, JavaScript, встроен почти в любой веб-браузер, и потому доступен почти на каждом вычислительном устройстве.

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

О программировании

Я не просвещаю тех, кто не жаждет учиться, и не побуждаю тех, кто не хочет искать ответы самостоятельно. Если я покажу один угол квадрата, и они не приходят ко мне с остальными тремя – мне не нужно давать повторных объяснений.

Конфуций

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

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

Вы сами должны обосновать необходимость этих усилий. Если вам тяжело продираться через книгу, не нужно думать о себе плохо. С вами всё в порядке – вам нужно просто продолжать движение. Сделайте перерыв, вернитесь назад – и всегда удостоверяйтесь, что вы прочли и поняли примеры программ. Обучение – это сложная работа, но раз вы что-то выучили, оно уже принадлежит вам, и облегчает дальнейшие шаги.

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

Джозеф Вайзенбаум, «Сила компьютеров и Разум людей»

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

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

650 грн.| Выразительный JavaScript. Современное веб-программирование, 3-е издание

650 грн.

Автор: Марейн Хавербеке
Страниц: 480
Издательство: Питер
Обложка: мягкая
Язык: русский
Формат: 165х233 мм

Количество 650 грн | Выразительный JavaScript. Современное веб-программирование. 3-е издание, Хавербеке М.

Артикул: pit0790 Категория: JavaScript / jQuery Метки: Internet Web Browsers, JavaScript, JavaScript Programming (Books), Programming (Books), Programming Languages (Books), веб-программирование, обучение программированию, Учебно-практические пособия, языки программирования

  • Описание
  • Отзывы (0)

Описание

Выразительный JavaScript.

Современное веб-программирование. 3-е издание, Марейн Хавербеке купить книга Україна

Пресс
n
n
n
nОбкладинка — м»яка
n
nРік видання — 2019
n
nКількість сторінок — 480
n
nISBN — 978-5-4461-1226-5
n
nБумага — біла, офсет
n

Про книгу Выразительный JavaScript. Современное веб-программирование. 3-е издание, Марейн Хавербеке


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

Выразительный JavaScript. Современное веб-программирование, 3-е издание оглавление

nВведение
n
nО программировании
n
nПочему так важен язык программирования
n
nЧто такое JavaScript
n
nКод и что с ним делать
n
nОбзор этой книги
n
nУсловные обозначения
n
nГлава 1. Значения, типы и операторы
n
nЗначения
n
nЧисла
n
nАрифметика
n
nСпециальные числа
n
nСтроки
n
nУнарные операции
n
nЛогические значения
n
nСравнение
n
nЛогические операторы
n
nПустые значения
n
nАвтоматическое преобразование типов
n
nУпрощенное вычисление логических операторов
n
nРезюме
n
nГлава 2. Структура программы
n
nВыражения и инструкции
n
nПривязки
n
nИмена привязок
n
nОкружение
n
nФункции
n
nФункция console.log
n
nВозвращение значений
n
n7Последовательность выполнения
n
nУсловное выполнение
n
nЦиклы while и do
n
nКод с отступами
n
nЦиклы for
n
nПринудительный выход из цикла
n
nБыстрое обновление привязок
n
nДиспетчеризация по значению с помощью switch
n
nИспользование прописных букв
n
nКомментарии
n
nРезюме
n
nУпражнения
n
nПостроение треугольника в цикле
n
nFizzBuzz
n
nШахматная доска
n
nГлава 3. Функции
n
nОпределение функции
n
nПривязки и области видимости
n
nВложенные области видимости
n
nФункции как значения
n
nДекларативная запись
n
nСтрелочные функции
n
nСтек вызовов
n
nНеобязательные аргументы
n
nЗамыкание
n
nРекурсия
n
nРазрастание функций
n
nФункции и побочные эффекты
n
nРезюме
n
nУпражнения
n
nМинимум
n
nРекурсия
n
nПодсчет букв
n
nГлава 4. Структуры данных: объекты и массивы
n
nБелка-оборотень
n
nНаборы данных
n
nСвойства
n
nМетоды
n
nОбъекты
n
nИзменяемость
n
nДневник оборотня
n
nВычисление корреляции
n
n8Перебор массива в цикле
n
nОкончательный анализ
n
nДальнейшая массивология
n
nСтроки и их свойства
n
nДополнительные параметры
n
nОбъект Math
n
nДеструктурирование
n
nJSON
n
nРезюме
n
nУпражнения
n
nСумма диапазона
n
nМассив в обратном порядке
n
nСписок
n
nГлубокое сравнение
n
nГлава 5. Функции высшего порядка
n
nАбстракции
n
nАбстрагирование повторов
n
nФункции высшего порядка
n
nНабор данных о шрифтах
n
nФильтрация массивов
n
nПреобразование и отображение
n
nСуммирование с помощью reduce
n
nКомпонуемость
n
nСтроки и коды символов
n
nРаспознавание текста
n
nРезюме
n
nУпражнения
n
nСвертка
n
nВаш собственный цикл
n
nМетод every
n
nДоминирующее направление письма
n
nГлава 6. Тайная жизнь объектов
n
nИнкапсуляция
n
nМетоды
n
nПрототипы
n
nКлассы
n
nЗапись классов
n
nПереопределение производных свойств
n
nСловари
n
nПолиморфизм
n
nСимволы
n
nИнтерфейс итератора
n
n9
n
nГеттеры, сеттеры и статические методы
n
nНаследование
n
nОператор instanceof
n
nРезюме
n
nУпражнения
n
nТип вектора
n
nГруппы
n
nИтерируемые группы
n
nЗаимствование метода
n
nГлава 7. Проект: робот
n
nДеревня Медоуфилд
n
nЗадача
n
nПостоянные данные
n
nМоделирование
n
nМаршрут почтового грузовика
n
nПоиск пути
n
nУпражнения
n
nИзмерение параметров робота
n
nЭффективность робота
n
nПостоянная группа
n
nГлава 8. Ошибки и дефекты
n
nЯзык
n
nСтрогий режим
n
nТипы
n
nТестирование
n
nОтладка
n
nРаспространение ошибок
n
nИсключения
n
nПодчищаем за исключениями
n
nВыборочный перехват исключений
n
nУтверждения
n
nРезюме
n
nУпражнения
n
nПовторная попытка
n
nЗапертый ящик
n
nГлава 9. Регулярные выражения
n
nСоздание регулярных выражений
n
nПроверка на соответствия
n
nМножества символов
n
nПовторяющиеся части шаблона
n
nГруппировка подвыражений
n
n10Соответствия и группы
n
nКласс Date
n
nГраницы слов и строк
n
nВыбор шаблонов
n
nМеханизм поиска соответствия
n
nПоиск с возвратом
n
nМетод replace
n
nО жадности
n
nДинамическое создание объектов RegExp
n
nМетод search
n
nСвойство lastIndex
n
nЦиклический поиск соответствий
n
nАнализ INI-файла
n
nИнтернациональные символы
n
nРезюме
n
nУпражнения
n
nСтиль цитирования
n
nСнова числа
n
nГлава 10. Модули
n
nЗачем нужны модули
n
nПакеты
n
nИмпровизированные модули
n
nВыполнение данных как кода
n
nCommonJS
n
nМодули ECMAScript
n
nСборка и комплектация
n
nСтруктура модулей
n
nРезюме
n
nУпражнения
n
nМодульный робот
n
nМодуль Roads
n
nЦиклические зависимости
n
nГлава 11. Асинхронное программирование
n
nАсинхронность
n
nТехнологии воронов
n
nОбратные вызовы
n
nПромисы
n
nСбои
n
nСетевые трудности
n
nКоллекции промисов
n
nЛавина в сети
n
nМаршрутизация сообщений
n
nАсинхронные функции
n
n11Генераторы
n
nЦикл событий
n
nДефекты асинхронного программирования
n
nРезюме
n
nУпражнения
n
nГде скальпель?
n
nПостроение Promise.all
n
nГлава 12. Проект: язык программирования
n
nСинтаксический анализ
n
nИнтерпретатор
n
nСпециальные формы
n
nСреда выполнения
n
nФункции
n
nКомпиляция
n
nНемного мошенничества
n
nУпражнения
n
nМассивы
n
nЗамыкание
n
nКомментарии
n
nИсправление области видимости
n
nГлава 13. JavaScript и браузер
n
nИнтернет и другие сети
n
nWeb
n
nHTML
n
nHTML и JavaScript
n
nВ «песочнице»
n
nСовместимость и браузерные войны
n
nГлава 14. Объектная модель документа
n
nСтруктура документа
n
nДеревья
n
nСтандарт
n
nПеремещения по дереву
n
nПоиск элементов
n
nИзменение документа
n
nСоздание узлов
n
nАтрибуты
n
nРазметка
n
nСтили
n
nКаскадные стили
n
nСелекторы запросов
n
nПозиционирование и анимация
n
nРезюме
n
n12Упражнения
n
nПостроение таблицы
n
nЭлементы по имени тега
n
nКошка и ее шляпа
n
nГлава 15. Обработка событий
n
nОбработчики событий
n
nСобытия и DOM-узлы
n
nОбъекты событий
n
nРаспространение событий
n
nДействия по умолчанию
n
nСобытия клавиш
n
nСобытия мыши
n
nЩелчки кнопкой мыши
n
nДвижения мыши
n
nСенсорные события
n
nСобытия прокрутки
n
nСобытия фокуса
n
nСобытие загрузки
n
nСобытия и цикл событий
n
nТаймеры
n
nУстранение повторных срабатываний
n
nРезюме
n
nУпражнения
n
nВоздушный шарик
n
nСлед мыши
n
nВкладки
n
nГлава 16. Проект: игровая платформа
n
nИгра
n
nТехнология
n
nУровни
n
nЧтение уровня
n
nАкторы
n
nИнкапсуляция как бремя
n
nРисование
n
nДвижение и столкновения
n
nИзменение акторов
n
nОтслеживание нажатий клавиш
n
nИгра в действии
n
nУпражнения
n
nИгра окончена
n
nПриостановка игры
n
nМонстр
n
n13Глава 17. Рисование на холсте
n
nSVG
n
nЭлемент canvas
n
nЛинии и поверхности
n
nПути
n
nКривые
n
nРисование круговой диаграммы
n
nТекст
n
nИзображения
n
nПреобразования
n
nСохранение и отмена преобразований
n
nВозвращаясь к игре
n
nВыбор графического интерфейса
n
nРезюме
n
nУпражнения
n
nФигуры
n
nКруговая диаграмма
n
nПрыгающий шарик
n
nЗаранее рассчитанное зеркальное отражение
n
nГлава 18. HTTP и формы
n
nПротокол
n
nБраузеры и HTTP
n
nFetch
n
nHTTP-«песочница»
n
nЦените HTTP по достоинству
n
nHTTPS и безопасность
n
nПоля форм
n
nФокус
n
nОтключенные поля
n
nФорма в целом
n
nТекстовые поля
n
nФлажки и переключатели
n
nПоля выбора
n
nПоля выбора файлов
n
nХранение данных на стороне клиента
n
nРезюме
n
nУпражнения
n
nСогласование содержимого
n
nСреда выполнения JavaScript
n
nИгра «Жизнь» Конвея
n
nГлава 19. Проект: растровый графический редактор
n
nКомпоненты
n
nСостояние
n
n14Построение DOM
n
nХолст
n
nПриложение
n
nИнструменты рисования
n
nСохранение и загрузка
n
nИстория действий
n
nДавайте порисуем
n
nПочему это так сложно?
n
nУпражнения
n
nКлавиатурные привязки
n
nЭффективное рисование
n
nКруги
n
nПравильные линии
n
nГлава 20. Node.js
n
nОсновы
n
nКоманда node
n
nМодули
n
nУстановка с помощью NPM
n
nФайлы пакетов
n
nВерсии
n
nМодуль файловой системы
n
nМодуль HTTP
n
nПотоки
n
nФайловый сервер
n
nРезюме
n
nУпражнения
n
nИнструмент поиска
n
nСоздание каталога
n
nПубличное пространство в сети
n
nГлава 21. Проект: сайт по обмену опытом
n
nСтруктура
n
nДлительный опрос
n
nHTTP-интерфейс
n
nСервер
n
nМаршрутизация
n
nОбслуживание файлов
n
nБеседы как ресурсы
n
nПоддержка длительных опросов
n
nКлиент
n
nHTML
n
nДействия
n
n15Визуализация компонентов
n
nОпросы
n
nПриложение
n
nУпражнения
n
nХранение на диске
n
nСброс поля комментариев
n
nСоветы по выполнению упражнений
n
nСтруктура программы
n
nПостроение треугольника в цикле
n
nFizzBuzz
n
nШахматная доска
n
nФункции
n
nМинимум
n
nРекурсия
n
nПодсчет букв
n
nСтруктуры данных: объекты и массивы
n
nСумма диапазона
n
nМассив в обратном порядке
n
nСписок
n
nГлубокое сравнение
n
nФункции высшего порядка
n
nМетод every
n
nДоминирующее направление письма
n
nТайная жизнь объектов
n
nТип вектора
n
nГруппы
n
nИтерируемые группы
n
nЗаимствование метода
n
nПроект: робот
n
nИзмерение параметров робота
n
nЭффективность робота
n
nПостоянная группа
n
nОшибки и дефекты
n
nПовторная попытка
n
nЗапертый ящик
n
nРегулярные выражения
n
nСтиль цитирования
n
nСнова числа
n
nМодули
n
nМодульный робот
n
nМодуль Roads
n
nЦиклические зависимости
n
n16Асинхронное программирование
n
nГде скальпель?
n
nПостроение Promise. all
n
nПроект: язык программирования
n
nМассивы
n
nЗамыкание
n
nКомментарии
n
nИзменение области видимости
n
nОбъектная модель документа
n
nПостроение таблицы
n
nЭлементы по имени тега
n
nКошка и ее шляпа
n
nОбработка событий
n
nВоздушный шарик
n
nСлед мыши
n
nВкладки
n
nПроект: игровая платформа
n
nПриостановка игры
n
nМонстр
n
nРисование на холсте
n
nФигуры
n
nКруговая диаграмма
n
nПрыгающий шарик
n
nЗаранее рассчитанное зеркальное отражение
n
nHTTP и формы
n
nСогласование содержимого
n
nСреда выполнения JavaScript
n
nИгра «Жизнь» Конвея
n
nПроект: растровый графический редактор
n
nКлавиатурные привязки
n
nЭффективное рисование
n
nКруги
n
nПравильные линии
n

ode.js
n
nИнструмент поиска
n
nСоздание каталога
n
nПубличное пространство в сети
n
nПроект: сайт по обмену опытом
n
nХранение на диске
n
nСброс поля комментариев
n

Також ви можете залишити питанная або відгук про книгу: Выразительный JavaScript.

Современное веб-программирование. 3-е издание, Марейн Хавербеке

Возможно Вас также заинтересует…

  • 309 грн | Асинхронная обработка и оптимизация. Вы не знаете JS, Кайл Симпсон

    309 грн. В корзину
  • 309 грн | Типы и грамматические конструкции. Вы не знаете JS, Кайл Симпсон

    309 грн. В корзину
  • 309 грн | ES6 и не только. Вы не знаете JS, Кайл Симпсон

    Оценка 5.00 из 5

    309 грн. В корзину
  • 1000 грн.| JavaScript. Подробное руководство. 6 издание Дэвид Флэнаган

    1000 грн. В корзину
  • Как устроен JavaScript, Дуглас Крокфорд

    450 грн. В корзину
  • 309 грн | Замыкания и объекты. Вы не знаете JS, Кайл Симпсон

    Оценка 5.00 из 5

    309 грн. В корзину

JavaScript невыразителен

28 мая 2016 г. | Гдыня, Польша

Режим Rant: Задействован.

Слово «выразительный» часто используется при описании особенностей язык. Точно так же, как каждый новый CSS-фреймворк, попавший на первую полосу Hacker News — «легкий», «модульный» и «современный», всеми любимый язык будет в какой-то момент описан ими как выразительный .

Является ли язык выразительным или нет, это относительная мера. Быть выразительным заключается в том, чтобы эффективно передать мысль или чувство. Есть несколько языков, которые настолько выразительно, что сразу понимаешь замысел автора без нужно знать синтаксис. Возьмите, например, следующие строки Ruby:

 # "Как давно?"
10 лет назад
# "Я ожидаю, что мой список автомобильных марок будет включать лучшую"
expect(car_brands).включить "Porsche" 

Я чувствую себя уверенно, предлагая эти строки Ruby для обсуждения, потому что они действительно идиоматично. Я также хочу утверждать, что Haskell — выразительный язык. (и это, безусловно, так и есть), но я признаю, что буду выбирать из хорошие части, и действительно есть некоторый синтаксис, который нужно изучить в первую очередь.

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

Если это звучит неловко, потому что это. Вот как это выглядит:

 экспортная константа ADD_TODO = 'ADD_TODO'
экспортировать константу DELETE_TODO = 'DELETE_TODO'
экспортировать константу EDIT_TODO = 'EDIT_TODO'
константа экспорта COMPLETE_TODO = 'COMPLETE_TODO'
константа экспорта COMPLETE_ALL = 'COMPLETE_ALL'
константа экспорта CLEAR_COMPLETED = 'CLEAR_COMPLETED' 

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

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

данных Действие = ДобавитьЗадание | УдалитьTodo | ПравитьTodo | ЗавершитьЗадание | ЗавершитьВсе | Клиркомпилед

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

Почему в Redux есть сумасшедшая export const… конвенция? Я единственный тот, кто неудобен с этим? Оказывается, я не такой. предлагаемые оправдания, по сути, сводятся к «всем названиям действий в одном место» и «пожалуйста, защитите меня от опечаток». Если проблема действительно является одной из организация и вы хотите, чтобы все названия ваших действий были в одном месте, то почему бы не массив строк?

Если использование const должно передать намерение, не может ли это намерение также быть общались с документацией? Или тесты? Если аргумент против документации и/или тестов в том, что со временем они станут неверными, тогда, возможно, пришло время отказаться от JavaScript в пользу какого-либо языка, который фактически обеспечивает гарантии правильности вы, казалось бы, жаждете?

Я слышал, как некоторые из наиболее видных защитников JavaScript не советуют использование const , потому что, хотя цель, которую он должен передать, — это «это значение не изменится», это на самом деле не имеет ничего общего с неизменностью. Хотя const не позволит разработчику присвоить какое-либо другое значение, исходное значение все еще может быть изменено.

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

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

При поиске мыслей других людей о том, является ли JavaScript выразительно, я наткнулся на эту строку Дугласа Крокфорда:

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

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

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

Я скажу, что JavaScript — это многое, но он не выразительный .

Что вы подразумеваете под выразительностью языка программирования?

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

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


ВОПРОС: Многословность/краткость? Я имею в виду, если один язык может написать что-то короче, чем другой, означает ли это выразительность?

Нет. Например, является ли язык Brainfuck выразительным? Я так не думаю. Посмотрите на пример Hello World в Brainfuck:

 ++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+ .++++++++..+++.>++.<<++++++++++++++++.>.+++.------.- -------.>+.>.
 

Или: язык hq9plus. Привет Мировой код:

 H
 

ВОПРОС: Это сила языка? Пол Грэм говорит, что один язык мощнее другого в том смысле, что один язык может делать то, что не может другой язык (например, LISP может делать что-то с помощью макросов, чего не может другой язык).

Я не согласен с Полом. Как вы видите в приведенных выше примерах, язык hq9plus выполняет Hello World с одной буквой: H . Принимая во внимание, что большинство других языков сделают это с гораздо большим количеством букв. Но вы можете создавать компонуемый и легко читаемый код на других языках. Если hq9plus выполняет Hello World с H , значит ли это, что он мощный? Я считаю, что нет.


ВОПРОС: Это просто облегчает жизнь? Регулярные выражения могут быть одним из примеров.

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


ВОПРОС: Есть ли другой способ решения той же проблемы: что-то вроде SQL для решения задачи поиска?

Половина Да.

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

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