Я задал этот вопрос на SO, но мне предложили попробовать здесь. Так что вот так:
До сих пор я понимал Javascript, что это клиентский язык, который фиксирует события и делает веб-страницу динамичной.
Но, читая сравнение между MongoDB и CouchDB, я заметил, что оба используют Javascript. Это заставляет меня задуматься о причине выбора JavaScript по сравнению с другими традиционными языками.
Думаю, я пытаюсь понять роль JavaScript и его преимущества перед другими языками.
Обновление: я не спрашиваю о языках / драйверах, поддерживаемых двумя базами данных. Сравнение говорит:
И CouchDB, и MongoDB используют Javascript. CouchDB широко использует Javascript, включая создание представлений .
MongoDB также поддерживает запуск произвольных функций JavaScript на стороне сервера и использует JavaScript для операций отображения / сокращения.
Мое непонимание относится к тому, почему Javascript вообще используется для серверной работы. Почему он предпочтителен для построения представлений в CouchDB или для использования операций map / Reduce? Почему C / C ++ или Java не использовались? Каковы преимущества использования Javascript для такой серверной работы?
источник
Ответы:
Мобильный код и кроссплатформенность
JavaScript - это то, что называется мобильным кодом , код передается с сервера (в данном случае MongoDB и CouchDB) на клиент (веб-браузер) и выполняется на клиенте без процесса установки.
Среды выполнения JavaScript (веб-браузеры) также широко доступны на многих платформах. Это делает JavaScript хорошим кроссплатформенным языком.
JavaScript не используется в качестве основного фонового языка
Серверная часть MongoDB реализована на C ++, а CouchDB реализована на Erlang. Таким образом, JavaScript не используется в качестве основного языка для серверной части этих систем.
От mongodb.com :
От couchdb.apache.com :
источник
Потому что JavaScript это язык сценариев.
Это гибкий и динамичный язык, который знаком людям.
Другая причина использования JavaScript в том, что он хорошо согласуется с форматом JSON, который используют эти базы данных.
И, наконец, эти базы данных нуждаются в языке, который можно интерпретировать. Потому что код для этих запросов отправляется по сети.
Так что вам нужно
язык. Я не думаю, что JavaScript это плохой выбор здесь. Вероятно, он выбран из-за наличия синтаксиса в стиле C.
Теперь, почему JavaScript был выбран по сравнению с другим языком сценариев, это хороший вопрос.
источник
Now why JavaScript was chosen over another scripting language
Я могу предположить, что это потому, что JavaScript является наиболее широко используемым языком сценариев, чрезвычайно хорошо протестирован благодаря использованию в браузерах, и существует довольно много отличных реализаций интерпретатора с открытым исходным кодом. CouchDB используетuneval()
намек на то, что они построили свой интерпретатор поверх SpiderMonkey .Нам всем придется съесть скромный пирог, когда мы поймем, что JS используется для записи:
Базы данных
Серверы
Операционная система
и множество библиотек, фреймворков, движков рендеринга и компиляции языков,
... потому что это лучше.
Серьезно, пожалуйста ... выслушай меня. Не стреляйте в курьера.
Спросите Microsoft, почему они создают Windows 8 с JS как гражданин первого класса. Либо новая мобильная ОС Mozilla, либо IBM Rivertrail, PhoneGap, ExtJS или WebGL.
Но лучше субъективно: поэтому мы должны углубиться и сравнить. Что лучше?
Это началось с AJAX ... и это не остановилось.
Неблокирующая IO. Это действительно большое дело и стоит знать. В JS это шаблон обратного вызова. Оказывается, с помощью обратных вызовов можно включить неблокирующий сервер: Node.js ~ около 8 строк кода. setTimeout () является обратным вызовом. Однопоточная асинхронная обработка.
Гибкость. Какая? -Java и C имеют классы и интерфейс, но называются объектно-ориентированными. В JavaScript есть только объекты. Но это называется ... что-то еще.
Наличие только объектов - хорошая вещь для гибкости, потому что члены и методы полностью динамичны во время выполнения. -Прототипное наследование не страшно. Некоторые эксперты описывают это как объект-пачка. -JS дружит с ошибками. -Код может смешиваться друг с другом, в результате чего получаются составные компоненты без особых усилий или знания ... «интерфейсов», «абстракций», «наследования», «инкапсуляции», «полиморфизма». Хорошие вещи, но, как Nike, в JS; ты просто делаешь это.
Данные переводы. С помощью JSON объекты могут передаваться спереди назад, спереди назад. Нет перевода данных XML. JSON явно прост.
Низкая кривая обучения. Можно вырезать и вставить чрезвычайно сложный код, а затем пошагово отладить его. Я слышу коллегу ... "нубс". Но это не только для нубов.
- Оказывается, это действительно хорошая функция для быстрого прототипирования. И сайты появляются повсюду, которые используют эту конструкцию в браузере, и более широко; выполнения-прототипирования. Оформить заказ JSFiddle и CodePen, а также MicroJS. GitHub.
ОБНОВЛЕНИЕ: так как эта публикация JavaScript в настоящее время широко используется другими языками.
источник
Вы можете сделать меньше с большим - Есть несколько школ по этому вопросу. Школа многословия хочет, чтобы все было прописано в мельчайших деталях, понятных любому идиоту. JS является членом противоположной школы, где вы можете разбить сложность на слои так, чтобы легче было понять общую картину, прежде чем понять, как работают более мелкие детали. Писать в интерфейс в JS намного проще, чем в большинстве языков, IMO.
Функции первого класса, замыкания, наследование прототипов - это действительно очень гибкая комбинация. Мы можем подражать классам, если мы хотим. Но те, кто действительно хорошо понимают JS, считают это несколько бессмысленным делом. Компоновка подходит JS намного лучше, чем цепное наследование.
Блокировка полезна на более высоком уровне. Да, вы слышали меня. Это помогает вам сосредоточиться на JS как на мессенджере, а не на рабочей лошадке, и процессы в значительной степени ставят себя в очередь, допуская прерывания из-за асинхронного поведения между вызовами функций.
Я бы сказал, что кривая обучения на самом деле немного крута для написания мощного JS, но как только вы там, это крик. Однако совсем не сложно реализовать готовые вещи в JS на более низком уровне квалификации.
источник
Этот вопрос немного устарел, но причина использования JavaScript против Java / C ++ состоит в том, что ни Java, ни C ++ не поддерживают фрагменты кода.
Даже если бы JavaScript никогда не изобретался, Java или C ++ были бы хорошим выбором для фрагментов исходного кода, которые будут выполняться на стороне сервера. Они бы выбрали другой язык или изобрели свой собственный. Раньше продукты использовались для создания собственного языка, определения своих собственных правил производства, AST, переводчика и т. Д., Которые специализировались в своей области.
Но с помощью JavaScript очень просто создать домен-специфический язык (DSL) для вашего продукта и встроить движок, не беспокоясь о создании всей другой не связанной с доменом инфраструктуры.
источник
Событийная модель программирования
JavaScript был создан с использованием подхода к вычислениям, основанного на событиях без разделяемой памяти. В разработке пользовательского интерфейса это полностью старая шляпа. Не предполагается, что ваше «приложение» контролирует процесс. Нет никакого API процесса. И при этом нет основной функции.
Ваше «приложение» представляет собой набор сценариев, которые будут выполняться, когда происходит определенная вещь, такая как
Это очень хорошо согласуется с небольшими порциями логики обработки, необходимой для преобразования данных.
Язык сценариев
Возможность выполнения без этапа компиляции означает, что инструкции по обработке могут быть легко сохранены. Вы можете легко сохранить сценарий в виде текста и передать его без каких-либо специальных типов данных или знаний.
Довольно простой, стабильный и обратно совместимый
Код, который вы пишете сегодня, не сильно отличается от того, что было 10 лет назад. Управление версиями вряд ли станет большой проблемой для людей, внедряющих его.
производительный
Есть несколько хороших движков с открытым исходным кодом, в которые вложена тонна работы. Он выполняется немного быстрее, чем многие альтернативы.
Фигурные скобки
Многие люди ограничены в своем комфорте с рядом языков программирования. Например, они знают, как программировать на Java или C #. Поэтому они ожидают легко выучить JavaScript, потому что он выглядит знакомым. Это конечно иллюзия. Когда я изучал Python, это было примерно в том же темпе, что и изучение JavaScript. Синтаксис только эмоционально значим, если он не совсем неясен.
источник