¿Por qué los lenguajes de programación distribuidos (p. Ej., Linda, Orca, Emerald) no se utilizan en la construcción de sistemas distribuidos populares / comunes a pesar de que muchos se propusieron desde los años 80?

Tengo cierta experiencia con Linda Tuplespaces (como estudiante de pregrado) y un proyecto posterior en IBM Almaden llamado T-Spaces (como pasante / diseñador de investigación). La interfaz es realmente excepcionalmente fácil e intuitiva. El problema es que a medida que el hardware avanza rápidamente con el tiempo, las diferencias de velocidad entre la memoria distribuida local y compartida siguen creciendo. Las implementaciones originales de los sistemas tipo tuplespace no fueron terriblemente eficientes. Esa falta de eficiencia es mucho más costosa ahora debido a la discrepancia entre la memoria local y la compartida. Eso significa que las implementaciones tradicionales de estos sistemas funcionarán muy mal y no se adaptarán bien al hardware actual.

Dicho esto, la falta de una forma intuitiva de hacer programación concurrente es un problema lo suficientemente crítico como para que muchas personas regresen y echen un vistazo más de cerca a los espacios tuples. Si alguien puede hacer una implementación mucho más eficiente de estos sistemas, podría hacerlo bastante bien en los sistemas actuales.

Una buena programación distribuida usa los mismos principios que una buena programación concurrente y agrega una buena dosis de tolerancia a fallas y compensación de fallas. El único lenguaje que mencionó que he escuchado (antes de su pregunta) es Linda, y el IIRC se centró en la programación concurrente (SMP más que distribuido), pero los conceptos se llevan bien.

No obstante, según tengo entendido, el modelo de estado accesible compartido de Linda es un modelo de programación distribuida de propósito general relativamente pobre, mientras que los modelos de transmisión de mensajes y / o basados ​​en actores son (al menos desde mi propia experiencia) excelentes modelos de programación distribuida de propósito general . Creo que esto explica por qué Erlang ha tenido un resurgimiento bastante saludable, por ejemplo, y por qué los marcos como Akka (¡hola Jonas!) También están recibiendo bastante atención.

La mayoría de las personas solo construirán sistemas grandes con lenguajes de propósito general establecidos.

Resulta que incluso cuando se construye un sistema distribuido, debe hacer muchas de las mismas cosas que los sistemas secuenciales deben hacer. Los lenguajes estrechamente enfocados como Linda y Orca son generalmente mucho peores para hacer esas cosas que los lenguajes modernos de propósito general como C # y Scala.

Aunque los lenguajes de uso general no se destacan en las preocupaciones distribuidas, generalmente es más manejable recibir un impacto de productividad en un área que recibir el mismo impacto con el resto del código.

¡Explosión del pasado! Utilicé a Linda para hacer una simulación molecular en el pasado, con visualización en tiempo real.

La Ley de Moore los mató. Las computadoras experimentaron un crecimiento tan rápido que para la mayoría de los desarrollos, las mejoras en el hardware superaron los incrementos en la imaginación. ¿Por qué esforzarse, si para cuando haya terminado, probablemente sería más fácil comprar una computadora nueva?

Ahora que el interés ha vuelto, la cara de la programación ha cambiado, y esas cosas viejas en su mayor parte parecen polvorientas, lo sean o no.

Además, había mucho dinero para la investigación.

$ / programmer es una función de cuántas personas conocen un lenguaje de programación particular. Si pocas personas lo saben, es costoso, por lo que las empresas no lo usarán. Sin embargo, las ideas de esos idiomas migran a idiomas más utilizados. Por ejemplo, mire la relación entre Linda y Jini Spaces.