Выбор языка программирования для реализации алгоритмов распределенной передачи сообщений - PullRequest
6 голосов
/ 21 августа 2011

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

  • Протокол сплетен
  • Несколько человек
  • Последовательное хеширование

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

Какой язык выбрать? Java, Scala, Erlang или что-нибудь еще.

В настоящее время я знаю Java и C ++.

Ответы [ 4 ]

8 голосов
/ 21 августа 2011

Вы можете попробовать реализовать протоколы на Erlang.

  • Процессная коммуникация очень элегантно встроена в язык и виртуальную машину.Асинхронная передача сообщений между двумя процессами elrang, будь то в одной и той же виртуальной машине или между виртуальными машинами в семантически эквивалентном.
  • Кодирование в аспектах отказоустойчивости / логики повторов и т. Д. Алгоритма - это бриз в эрланге.Инкапсулируйте все в легковесные процессы и используйте специальные процессы, называемые супервизорами, для их перезапуска.
  • Сериализация объектов Erlang действительно проста.Вам не нужно явно кодировать логику сериализации (например, реализовать Serializable в Java).
  • В дистрибутив Erlang входит модуль rpc , который позволяет вызывать функции на удаленных виртуальных машинах.
  • Оболочка Эльранга - настоящий посланник бога.Вы можете прикрепить оболочку к любой удаленной виртуальной машине.Оболочка позволяет вам профилировать внутренние таблицы / структуры данных.Виртуальная машина также обладает чрезвычайно сложными функциями отладки и трассировки, которые доступны вам через оболочку.
  • Вы можете взглянуть на Riak , с открытым исходным кодом NoSQL хранилище данных, написанное на Erlang, смоделированное на Amazon Dynamo.Он реализует как согласованное хеширование, так и протокол Gossip.
4 голосов
/ 23 августа 2011

О да!Вы можете начать программирование на Erlang, взглянув на них:

  1. Научите вас немного Erlang для хорошего блага
  2. Книга Erlang, часть 1
  3. Учебник по программированию Эрланга Ориелли (Франческо Чезарини и Саймон Томпсон)
  4. Учебное пособие по программированию на языке Erlang Джо Армстронга

Эти ссылки выше предоставят вам ресурсы для всех программ на Erlang, которые могут вам понадобиться.Тем не менее, я предлагаю вам начать с Joe Armstrongs Programming Erlang Text Book и, читая его, использовать веб-сайт: Learn you some erlang for great good (ссылка № 1 выше) в качестве справочного материала для дальнейшего понимания структур данных.

Вы можете скачатьErlang отсюда: Erlang Загрузить официальную страницу .

Вам могут понадобиться другие ссылки и ресурсы (приложения, библиотеки и т. Д.), Большинство из которых проиндексированы здесь: Erlang / OTP. Com веб-сайт .

Иногда вы всегда можете задать любой вопрос о Stackoverflow или поискать инструменты и библиотеки из sourceforge.

2 голосов
/ 22 августа 2011

Все эти протоколы уже были реализованы в различных проектах Erlang. Увидеть Mnesia , Riak , CouchDB , Scalaris для получения дополнительной информации (не все протоколы в каждом проекте). Я не могу представить более дружественную среду для такого рода протокольных экспериментов, чем Эрланг.

0 голосов
/ 21 августа 2011

Вы уже определились со своей библиотекой для передачи сообщений? Если вы заинтересованы в MPI, вы можете использовать как версии Java, так и версии C ++.

MPI выполняет для вас множество заданий, таких как рассылка сообщений и получение ответов, что важно в ваших алгоритмах. В результате я рекомендую вам найти подходящую версию MPI для C ++ или Java и начать работу.

Взгляните на:

...