2010-07-23 27 views
9

que he estado haciendo la programación del zócalo por un tiempo en C++, y el tipo de cansé de tener que escribir el mismo código de manejar para los errores, la serialización/deserialización de datos, etc.Los lenguajes de programación para el sistema distribuido

Son hay lenguajes de programación que tienen soporte de primera clase para el sistema distribuido?

Respuesta

17

Erlang, como se describe por Wikipedia:

Fue diseñado por Ericsson para apoyar distribuida, tolerante a fallos, en tiempo no real suave, aplicaciones sin parar.

Es posible que también desee leer la sección Distributed Erlang de este manual.

Sin embargo, tenga en cuenta que Erlang es un functional language y requerirá un paradigma de pensamiento muy diferente en comparación con C++.

+2

Erlang es definitivamente el niño del póster. Si bien hay literalmente miles de idiomas que están específicamente diseñados para la programación distribuida, Erlang es por lejos el más común (y de hecho prácticamente el único). –

+0

Opté por aceptar esta respuesta porque Erlang se usa en los sistemas del mundo real y es general, aunque, como señala Jorg, hay otros miles construidos para el sistema distribuido. – sivabudh

+0

¿Qué hay de Scala? –

0

Reia es un lenguaje de programación para el sistema distribuido:

Reia tiene como objetivo exponer las potentes capacidades de Erlang de una manera que es más fácil para el programador medio de entender. Su objetivo es traer la belleza y simplicidad de Ruby, un lenguaje que es fácil y divertido para el programa en, a Erlang, un lenguaje que muy pocos considerarán fácil o divertido de usar.

+3

Tenga en cuenta que Reia todavía se encuentra en etapas muy tempranas de desarrollo. Diablos, todavía está en las primeras etapas de * diseño *. No hace mucho tiempo, Tony arrancó la sintaxis completa, por ejemplo. –

1

Parallel Python es un módulo de Python que proporciona mecanismo para la ejecución en paralelo de código pitón en SMP (sistemas con múltiples procesadores o núcleos) y clusters (ordenadores conectados a través de la red):

Características:

  • ejecución paralela de código Python en SMP y grupos
  • fácil de entender y poner en práctica la técnica de paralelización basada en el trabajo (fácil de convertir applicat serie ion en paralelo)
  • detección automática de la configuración óptima (por defecto el número de procesos de trabajo se establece en el número de procesadores eficaces)
  • asignación procesadores dinámicos (número de procesos de trabajo se puede cambiar en tiempo de ejecución)
  • baja sobrecarga para los trabajos posteriores con la misma función (caché transparente se implementa para reducir la sobrecarga)
  • carga dinámica de equilibrado (puestos de trabajo se distribuyen entre los procesadores en tiempo de ejecución)
  • la tolerancia a fallos (si uno de los nodos falla tareas se reprogramada en otros)
  • auto-descubrimiento de recursos computacionales
  • asignación dinámica de los recursos computacionales (consecuencia de auto-descubrimiento y la tolerancia a fallos)
  • SHA autenticación basada en las conexiones de red
  • entre plataformas portabilidad e interoperabilidad (Windows, Linux, Unix , Mac OS X)
  • Cruz-arquitectura de la portabilidad e interoperabilidad (x86, x86-64, etc.)
  • de código abierto

se puede obtener una idea rápida de cómo el co de might look by looking at the quick-start guide for clusters.

+0

Parece que esto todavía existe en 2017. Una actualización, si la ha estado usando, podría ser una buena edición. –

+1

Ni siquiera recuerdo haber escrito esta respuesta; p –

4

Bloom es un nuevo lenguaje específico de dominio para programación distribuida. La versión alfa actual está integrada en Ruby y está dirigida a los primeros usuarios. Bloom aprovecha las nuevas investigaciones sobre el análisis "CALM" para proporcionar herramientas que identifiquen la consistencia distribuida y los problemas de coordinación en su código.

11

Go-Lang de Google es un lenguaje bastante nuevo. Parece que entre sus muchos atributos, algún día puede ser adecuado para grandes sistemas distribuidos que requieren una gran cantidad de colas de mensajes para lograr comportamientos consistentes y confiables escalables, al menos según these folks en heroku.

Go parece centrarse en problemas de concurrencia, enhebrar primitivas en el lenguaje, y así sucesivamente, y este es quizás un punto de partida necesario pero no suficiente para los sistemas distribuidos. Quizás sus pensamientos te serán útiles. No llamaría a la compatibilidad de Go-lang para los sistemas distribuidos como "de primera clase", sino que sería posible construir una infraestructura de sistemas distribuidos de primera clase utilizando la biblioteca y las primitivas de lenguaje de Go.

Actualización: Estoy menos impresionado con Go varios años después. Creo que adolece de un pensamiento triste y limitado por parte de sus autores. Creo que sus decisiones sobre el manejo de fallas y excepciones son retrógradas y hacen que el lenguaje sea inutilizable.

Actualización-2016: Estoy realmente impresionado con Go nuevamente. Ahora pienso en términos del desarrollo de un gran equipo donde contar con opciones de implementación N-factoriales lleva a tarpits de codificación N-factoriales diferentes. Al menos Go no parece tener tarpits a escala labrea, solo ciertos mudwallows convencionales. Les encantan las pestañas y las insertarán en su código si no las amas lo suficiente.

+0

Las actualizaciones sobre su forma de pensar sobre Ir por un lapso de tiempo tan largo junto con las razones son muy interesantes. Gracias. – masterxilo

Cuestiones relacionadas