Параллелизм Erlang-стиля для других языков

Первый импорт NumberFormat. Затем добавьте это:

NumberFormat currencyFormatter = NumberFormat.getCurrencyInstance();

Это даст вам два десятичных знака и пометит знак доллара, если он имеет дело с валютой.

import java.text.NumberFormat;
public class Payroll 
{
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) 
    {
    int hoursWorked = 80;
    double hourlyPay = 15.52;

    double grossPay = hoursWorked * hourlyPay;
    NumberFormat currencyFormatter = NumberFormat.getCurrencyInstance();

    System.out.println("Your gross pay is " + currencyFormatter.format(grossPay));
    }

}
19
задан 4 revs, 2 users 100% 20 October 2008 в 13:26
поделиться

12 ответов

Интерфейс передачи сообщений (MPI) ( http://www-unix.mcs.anl.gov/mpi/ ) является хорошо масштабируемой и устойчивой библиотекой для параллельного программирования, приспособленного исходный к C, но теперь доступный в нескольких разновидностях http://en.wikipedia.org/wiki/Message_Passing_Interface#Implementations . В то время как библиотека не представляет новый синтаксис, она предоставляет протокол связи для организации совместного использования данных между стандартными программами, которые parallelizable.

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

Другим интересным решением проблемы параллельного программирования является OpenMP, который является попыткой обеспечить портативное расширение на различных платформах для обеспечения подсказок компилятору о том, какие разделы кода легко parallelizable.

, Например ( http://en.wikipedia.org/wiki/OpenMP#Work-sharing_constructs ):

#define N 100000
int main(int argc, char *argv[])
{
  int i, a[N];
  #pragma omp parallel for
  for (i=0;i<N;i++) 
     a[i]= 2*i;
  return 0;
}

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

7
ответ дан 30 November 2019 в 02:10
поделиться

у Ulf Wiger недавно было большое сообщение по этой теме - вот свойства, которые он определяет как требуется, прежде чем можно будет назвать что-то "Параллелизмом Стиля Erlang":

  • Быстрое создание/разрушение процесса
  • Способность поддерживать>> 10 000 параллельных процессов с в основном неизменными характеристиками.
  • Быстрая асинхронная передача сообщений.
  • Копирование семантики передачи сообщений (доля - ничто параллелизм).
  • контроль Процесса.
  • Выборочный прием сообщений.

Номер 2 выше является самым трудным поддерживать в VMs и реализациях языка, которые не были первоначально разработаны для параллелизма. Это не должно пробивать реализации параллелизма Erlang-выхода в другие языки, но много значения Erlang прибывает из способности создать миллионы из процессов, который довольно чертовски труден, если абстракция процесса имеет отношения 1-1 с потоком уровня ОС или процессом. Ulf имеет намного больше на этом в ссылке выше.

14
ответ дан 30 November 2019 в 02:10
поделиться

Mike Rettig создал библиотеку.NET, названную Retlang и порт Java под названием Jetlang, который вдохновлен моделью параллелизма Erlang.

5
ответ дан 30 November 2019 в 02:10
поделиться

Параллелизм Microsoft и Время выполнения Координации для.NET.

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

6
ответ дан 30 November 2019 в 02:10
поделиться

Scala поддерживает агентов. Но я не назвал бы scala намеренно подобным Erlang.

, Тем не менее, scala абсолютно стоит смотреть!

7
ответ дан 30 November 2019 в 02:10
поделиться

Также kilim является библиотекой для Java, который приносит передачу сообщений стиля erlang / агенты на язык Java.

6
ответ дан 30 November 2019 в 02:10
поделиться

Для Python можно попытаться использовать модуль обработки .

3
ответ дан 30 November 2019 в 02:10
поделиться

Предупреждение: бесстыдный разъем!

я разработал библиотеку для этого вида передачи сообщений в Haskell: Erlang-style Distributed Haskell .

Volker

2
ответ дан 30 November 2019 в 02:10
поделиться

термит для схемы гамбита.

3
ответ дан 30 November 2019 в 02:10
поделиться

Microsoft's Not-Production-Ready Answer to Erlang: Microsoft Axum

4
ответ дан 30 November 2019 в 02:10
поделиться

If you are using Ruby, take a look at Revactor: [http://revactor.org/][1]

Revactor is an Actor model implementation for Ruby 1.9 built on top of the Rev high performance event library. Revactor is primarily designed for writing Erlang-like network services and tools.

Take a look at this code sample:

  myactor = Actor.spawn do
    Actor.receive do |filter|
      filter.when(:dog) { puts "I got a dog!" }
    end
  end

Revactor only runs on Ruby 1.9. I believe the author of the library has discontinued maintaining it but the documentation on their site is very good.

You might also want to take a look at Reia: a ruby-like scripting language built on top of the Erlang VM. Reia is the new project of the creator of Revactor: Tony Arcieri.

3
ответ дан 30 November 2019 в 02:10
поделиться

JoCaml расширяет OCaml с вычислением соединений для параллельного и распределенного программирования.

2
ответ дан 30 November 2019 в 02:10
поделиться
Другие вопросы по тегам:

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