Node.js или Erlang

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

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

Но что мне выбрать? Какой из них лучше в краткосрочной /долгосрочной перспективе?

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

86 голосов | спросил user80805 10 J0000006Europe/Moscow 2010, 06:46:44

9 ответов


0

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

ответил Justin Ethier 10 J0000006Europe/Moscow 2010, 06:56:04
0

Я не могу говорить за Эрланга, но несколько вещей, которые не были упомянуты об узле:

  • Узел использует движок Google V8 для фактической компиляции javascript в машинный код. Так что узел на самом деле довольно быстрый. Так что это помимо преимуществ скорости, предлагаемых программированием на основе событий и неблокирующим вводом-выводом.
  • У Node довольно активное сообщество. Перейдите к их группе IRC на freenode, и вы поймете, что я имею в виду.
  • Я заметил, что вышеупомянутые комментарии толкают Эрланга на том основании, что будет полезно изучить функциональный язык программирования. Хотя я согласен с тем, что важно расширить свой набор навыков и получить один из них за плечами, вы не должны основывать проект на том факте, что вы хотите изучить новый стиль программирования
  • С другой стороны, в Javascript уже есть парадигма, в которую вы можете писать! Кроме того, это JavaScript, поэтому, когда вы пишете код на стороне клиента, он будет выглядеть и чувствовать себя согласованным.
  • Сообщество
  • уже выкачало тонны модулей ! Есть модули для redis, mongodb, couch и что там у вас. Еще один хороший модуль для изучения - это Express (например, Синатра для узла)

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

Имейте в виду, что узел все еще находится на поздних стадиях разработки и поэтому претерпел немало изменений - изменений, которые нарушили предыдущий код. Тем не менее, предположительно, это тот момент, когда вы можете ожидать, что API не изменится слишком сильно. Так что если вы ищете что-то веселое, я бы сказал, что node - отличный выбор.

ответил Jarsen 24 J0000006Europe/Moscow 2010, 21:08:32
0

Я давний программист на Erlang, и этот вопрос побудил меня взглянуть на node.js. Это выглядит чертовски хорошо.

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

Я также заметил, что поддержка платформы может быть немного слабее. В частности, похоже, что вам нужно будет работать под Cygwin для поддержки Windows.

Выглядит хорошо, хотя.


Изменить

Node.js теперь имеет встроенную поддержку Windows.

ответил dsmith 25 J0000006Europe/Moscow 2010, 00:21:41
0

Я смотрю на те же две альтернативы, что и вы, для нескольких проектов.

До сих пор лучшая бритва, которую я придумал, чтобы решить между ними для данного проекта, - нужно ли мне использовать Javascript. Одна существующая система, которую я хочу перенести, уже написана на Javascript, поэтому ее следующая версия, скорее всего, будет сделана в node.js. Другие проекты будут реализованы в некоторой веб-инфраструктуре Erlang, потому что нет существующей базы кода для миграции.

Другое соображение заключается в том, что Erlang масштабируется намного дальше нескольких ядер, он может масштабироваться до целого центра обработки данных. Я не вижу встроенного механизма в node.js, который позволял бы мне отправлять другому JS-процессу сообщение, не заботясь о том, на какой машине он находится, но он встроен прямо в Erlang на самых низких уровнях. Если ваша проблема недостаточно велика для того, чтобы требовать нескольких компьютеров, или если для этого не требуется нескольких взаимодействующих процессов, это преимущество вряд ли будет иметь значение, поэтому вы должны его игнорировать.

Эрланг - действительно глубокий бассейн, в который можно погрузиться. Я бы предложил сначала написать автономную функциональную программу, прежде чем начинать создавать веб-приложения. Еще более простой первый шаг, так как вам кажется, что вы знакомы с Javascript, - это попробовать программировать JS в более функциональном стиле. Если вы используете jQuery или Prototype, вы уже пошли по этому пути. Попробуйте отскочить между чисто функциональным программированием на Erlang или одним из его родственников (Haskell, F #, Scala ...) и функциональным JS.

Как только вы освоитесь с функциональным программированием, найдите одну из многих веб-фреймворков Erlang; Вы, вероятно, не должны писать свое приложение напрямую на что-то низкоуровневое, например inets на этой поздней стадии. Посмотрите, например, на азот .

ответил Warren Young 14 J0000006Europe/Moscow 2010, 18:14:18
0

Хотя я лично пойду на Эрланга, я признаю, что немного склонен к JavaScript. Мой совет, что вы оцениваете несколько баллов:

  1. Вы повторно используете существующий код на любом из этих языков (как с точки зрения исходного кода, так и опыта программиста!)
  2. Нужны ли вам /нужны оперативные обновления без остановки приложения (в этом случае Erlang побеждает по умолчанию - его среда выполнения была разработана для этого случая, а OTP содержит все необходимые инструменты)
  3. Насколько велик ожидаемый трафик с точки зрения отдельных параллельных операций, а не пропускной способности?
  4. Насколько "параллельны" операции, которые вы выполняете для каждого запроса?

Эрланг действительно настроил параллелизм & прозрачная для сети параллельная распределенная система. В зависимости от того, чем конкретно является проект, наличие зрелой реализации такой системы может перевесить любые проблемы, связанные с изучением нового языка. Есть также два других языка, которые работают на Erlang VM, которые вы можете использовать, Ruby /Python-подобный Reia и ароматизированный с помощью Lisp Erlang .

Еще один вариант - использовать оба, особенно с использованием Erlang в качестве своего рода «хаба». Я не уверен, что в Node.js есть система интерфейса с внешними функциями, но если у него есть, Erlang имеет библиотеку C для внешних процессов для взаимодействия с системой, как и любой другой процесс Erlang.

ответил p_l 25 J0000006Europe/Moscow 2010, 00:50:27
0

Похоже, что Erlang лучше работает при развертывании на относительно низком уровне (412-ядерная виртуальная машина AMD с тактовой частотой 2,4 ГГц, 512 МБ). Это из опыта SyncPad по сравнению Erlang с Реализации Node.js их серверного приложения виртуальной доски.

ответил adib 7 AM000000100000000731 2011, 10:17:07
0

На той же виртуальной машине есть еще один язык, которым является erlang -> эликсир

Это очень интересная альтернатива Erlang, зацените ее.

Также у него есть быстрорастущий веб-фреймворк, основанный на нем-> Phoenix Framework

ответил NoDisplayName 13 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowSun, 13 Sep 2015 11:36:48 +0300 2015, 11:36:48
0

WhatsApp никогда не сможет достичь уровня масштабируемости и надежности без erlang https://www.youtube. com /watch? v = c12cYAUTXXs

ответил Henry H. 15 FebruaryEurope/MoscowbSun, 15 Feb 2015 00:02:26 +0300000000amSun, 15 Feb 2015 00:02:26 +030015 2015, 00:02:26
0

Я предпочитаю Erlang, чем Node. Если вы хотите параллелизма, Node может быть заменен Erlang или Golang из-за их легких процессов.

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

ответил Sumit Pugalia 9 PM00000040000003831 2017, 16:33:38

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132