Programación distribuida
La programación distribuida es un paradigma de programación enfocado en desarrollar sistemas distribuidos, abiertos, escalables, transparentes y tolerantes de fallos. Este paradigma es el resultado natural del uso de las computadoras y las redes.
Casi cualquier lenguaje de programación que tenga acceso al máximo al hardware del sistema puede manejar la programación distribuida, considerando una buena cantidad de tiempo y código.
En la programación distribuida, cada computadora dentro del sistema (llamada nodo del sistema) tiene su propia memoria local (memoria privada) la cual se puede utilizar para realizar procesos internos, ya sea manera secuencial y/o paralela. Una de las características importantes de este paradigma, es que todas las computadoras tienen en común una Memoria compartida que les permite sincronizar procesos mediante mecanismos de coordinación como relojes o Semáforo (informática), y permite coordinar de manera eficiente todo lo anterior para distribuir la carga de trabajo de todo el sistema y dar resultados más eficientes.
La programación distribuida típicamente cae en alguna de las varias arquitecturas básicas o arquitecturas: cliente-servidor, 3-tier, n-tier, objetos distribuidos, entre otras además de ser base para la pragmaticidad. Los lenguajes específicamente diseñados para programación distribuida son: Ada, Alef, E, Erlang, Limbo y Oz.