Возможности реального времени? - PullRequest
7 голосов
/ 10 августа 2011

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

Ответы [ 3 ]

7 голосов
/ 10 августа 2011

Что касается Clojure , он может обеспечить столько же возможностей в реальном времени, сколько и базовый Java VirtualMachine.

Вы МОЖЕТ создать жесткую систему реального времени с JVM, но это должно выходить за рамки только синтаксиса языка, который обеспечивает Clojure.

В зависимости от ваших требований в реальном времени, похоже, что вам потребуется настроить JVM (вот хорошая статья IBM Works или использовать конкретную JVM, такую ​​как Fiji JVM

Что касается Эрланда, то уже есть вопросы по SO

Приложения чата и тикера могут быть реализованы на обоих языках, но я лично подозреваю, что будет проще развернуть их с Clojure, особенно если смотреть на предложения в облаке ( Heroku ) и обычные услуги хостинга.

6 голосов
/ 10 августа 2011

оба обращаются к параллельному программированию, хотя в разных средах:

  • Clojure действительно хорош в параллельном программировании с общей памятью .Там, где есть много потоков, все работают над одним большим куском памяти (кучей), и им нужно координировать доступ к общим объектам в этой памяти.
  • Эрланг действительно хорош в , не разделяя распределенные вычисления , где процессы должны иметь возможность работать на многих компьютерах и работать в независимых пространствах памяти.Они не координируют общий доступ к объектам.

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

1 голос
/ 10 августа 2011

Да, Clojure - очень жизнеспособный вариант для (мягких) приложений реального времени.

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

Clojure особенно хорош для оченьпараллельные приложения, которые получают доступ к общему состоянию , поскольку у него очень хорошая модель программной транзакционной памяти , которая особенно хорошо масштабируется с большим количеством потоков / большим количеством ядер.Я считаю, что где-то есть видео Рича Хики, демонстрирующее параллельное приложение Clojure на 768-ядерном системном блоке Azul без каких-либо проблем.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...