Является ли Javascript лучше, чем раньше, как упоминалось в книге O’Reilly Javascript Patterns для замыканий и анонимных функций?

#javascript

#javascript

Вопрос:

Это цитата из книги O’Reilly Javascript Patterns:

JavaScript также необычный язык. В нем нет классов, а функции — это объекты первого класса, используемые для многих задач. Первоначально язык считался несовершенным многими разработчиками, но в последние годы эти настроения изменились. Интересно, что такие языки, как Java и PHP, начали добавлять такие функции, как замыкания и анонимные функции, которые разработчики JavaScript наслаждались и принимали как должное некоторое время.

и это все. Я действительно не понимаю, почему Javascript раньше считался «несовершенным», а теперь нет, потому что другие языки, такие как Java или PHP, добавили замыкания и анонимные функции? Разве это не просто общие концепции вычислений? Разве они не доступны на других языках, таких как Ruby? Итак, я действительно не знаю, как Javascript теперь не «дефицитный», потому что Java и PHP добавили замыкания и анонимные функции в качестве своих функций? Почему это?

Комментарии:

1. Он считался «несовершенным», потому что он отличался от доминирующих языков программирования и отсутствия в Javascript определенных «функций», к которым привыкли эти программисты, которых у Javascript не было. За последние десять лет многое изменилось, и Javascript созрел вместе с Интернетом. В то же время многие очень хорошие «программисты» начали серьезно относиться к веб-сценариям или приняли Javascript как серьезный язык для работы. Браузер вырос, веб стал прибыльным, и прогресс произошел. Я все еще знаю некоторых программистов на C, которые издеваются над ним (и PHP, и Ruby). Кого это волнует?

2. Кроме того, «считается недостаточным» ! = «фактически недостаточным». Многие конструкции C совершенно не нужны в среде браузера, но Javascript в них «недостаточен». На самом деле это не имеет значения для браузера, но для программиста на C / C / Java это может показаться так.

Ответ №1:

Я думаю, что это означает, что в прошлом многие разработчики считали JavaScript «игрушечным» языком и использовали его только для выполнения быстрых задач веб-интерфейса, таких как проверка и т. Д. не потрудившись понять, как на самом деле работает язык.

В последние годы «скрытые» функции JavaScript, такие как замыкания, прототипное наследование и т. Д., Вышли на первый план, И люди теперь гораздо серьезнее относятся к JavaScript как к «реальному» языку.

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

Комментарии:

1. Я думаю, это может иметь смысл, если мы скажем, что у Javascript есть некоторые расширенные функции… но все же «недостатку» не помогают расширенные функции, просто мы не можем просто добавлять замыкания и анонимные функции к любым плохим языкам и называть это «теперь это хорошо»

Ответ №2:

Я лично считаю, что это плохая работа по редактированию.

Абзац должен был гласить (жирное дополнение мое и это просто предложение о том, как его читать):

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

Интересно, что такие языки, как Java и PHP, начали добавлять такие функции, как замыкания и анонимные функции, которые разработчики JavaScript наслаждались и принимали как должное некоторое время.

Ответ №3:

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

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

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

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

Популярность JavaScript растет и на стороне сервера (node.js ), и оказывается простым, быстрым и достаточно мощным языком для выполнения (практически) любой работы. Узел широко «злоупотребляет», вероятно, своей лучшей особенностью — асинхронным характером JavaScript. Это не ново, многие языки имеют асинхронные библиотеки, но, как сказал Райан Дал в одном из своих первых выступлений на node, JS идеально подходит для этого. И в основном из-за замыканий и других концепций, встроенных в него.

Таким образом, окончательный ответ будет заключаться в том, что автор книги, которую вы цитируете, плохо выразил свои мысли или просто ошибается. Это был игрушечный язык, и он не предназначался для использования в таких разнообразных вариантах использования, как сегодня. Но он развивался так же, как Java или PHP (не забывайте, что у PHP не было поддержки ООП, которая кажется такой очевидной до версии 5). Другие языки только набирают плюсы, что JavaScript оказался более эффективным для определенных случаев использования. В целом, я думаю, что JavaScript не использовался должным образом с самого начала, и именно в этом случае его назвали «несовершенным». Теперь разработчики получили возможность исследовать его великолепие.

Комментарии:

1. Я бы не сказал, что другие языки переняли преимущества Javascript (такие как замыкания и анонимные функции). То, что они также есть в Javascript, не означает, что их создал Javascript. Как насчет того, чтобы мы пересматривали и пересматривали Javascript, чтобы, наконец, он стал Ruby?

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