Языки программирования для распределенной системы [закрыто]

Я некоторое время занимался программированием сокетов на C++ и устал писать один и тот же код для обработки ошибок, сериализации / десериализации данных и т. д.

существуют ли языки программирования, которые имеют первоклассную поддержку распределенной системы?

5 ответов


Эрланг, как описал Википедия:

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

вы также можете прочитать Распределенные Эрланг раздел их руководства.

однако обратите внимание, что Erlang является функциональное язык и потребует гораздо другой парадигмы мысль по сравнению с C++.


Go-Lang от Google-довольно новый язык. Кажется, что среди его многих атрибутов он может когда-нибудь пригодиться для больших распределенных систем, требующих много очередей сообщений для достижения масштабируемого согласованного и надежного поведения, по крайней мере, в соответствии с эти люди в в Heroku.

Go, похоже, сосредоточен на проблемах параллелизма, потоковых примитивах на языке и т. д., И это, возможно, необходимая, но не совсем достаточная отправная точка для распределенная система. Возможно, их мысли помогут вам. Я бы не назвал поддержку GO-lang для распределенных систем "первоклассной", а скорее сказал, что можно было бы построить фреймворк распределенных систем первого класса, используя библиотеку Go и языковые примитивы.

Update: Я менее впечатлен Go несколько лет спустя. Я думаю, что он страдает от некоторого грустного и ограниченного мышления со стороны его авторов. Я думаю, что его решения по вине и обработке исключений ретроградный и сделать язык непригодным для использования.

Update-2016: я действительно впечатлен Go снова. Теперь я думаю с точки зрения развития большой команды, где наличие N-факториальных вариантов реализации приводит к N-факториальным различным кодировкам. По крайней мере, у Go, похоже, нет брезентов labrea, только некоторые обычные грязевые валы. Они абсолютно любят вкладки и вставят их в ваш код для вас, если вы не любите их достаточно.


Блум новый предметно-ориентированный язык для распределенного программирования. Текущий альфа-релиз встроен в Ruby и предназначен для ранних пользователей. Bloom использует новые исследования по" спокойному " анализу, чтобы предоставить инструменты, которые точно определяют распределенные проблемы согласованности и координации в вашем коде.


Параллельный Python - модуль python, который обеспечивает механизм параллельного выполнения кода python на SMP (системах с несколькими процессорами или ядрами) и кластерах (компьютеры, подключенные через сеть):

характеристики:

  • параллельное выполнение кода python на SMP и кластерах
  • легкий для того чтобы понять и снабдить работ-основанный метод распараллеливания (легкий для того чтобы преобразовать серийное применение внутри параллель)
  • автоматическое определение оптимальной конфигурации (по умолчанию количество рабочих процессов задается ряд эффективных процессоров)
  • распределение динамических процессоров (количество рабочих процессов может быть изменено во время выполнения)
  • низкие накладные расходы для последующих заданий с той же функцией (прозрачное кэширование реализовано для уменьшения накладных расходов)
  • динамическая балансировка нагрузки (задания распределяются между процессорами в во время выполнения)
  • отказоустойчивость (если один из узлов терпит неудачу, задачи переносятся на другие)
  • автоматическое обнаружение вычислительных ресурсов
  • динамическое распределение вычислительных ресурсов (следствие автоматического обнаружения и отказоустойчивости)
  • проверка подлинности на основе SHA для сетевых подключений
  • кросс-платформенная переносимость и совместимость (Windows, Linux, Unix, Mac OS X)
  • межплатформенную переносимость и совместимость (x86, x86-64 и т. д.)
  • открыть источник

можно получить быстрое представление о том, как код может выглядеть глядя на краткое руководство для кластеров.


Ина - это язык сценариев для распределенной системы:

Reia стремится разоблачить мощный возможности Erlang в пути который проще для среднего программиста взять в толк. Оно направляет принести красота и простота Ruby, a язык, который легко и весело программы, в Эрланг язык что очень немногие будут думать, как легко или весело использовать.