Open Access

Programming language impact on the development of distributed systems

  • Debasish Ghosh1,
  • Justin Sheehy2,
  • Kresten Krab Thorup3 and
  • Steve Vinoski2Email author
Journal of Internet Services and Applications20113:42

DOI: 10.1007/s13174-011-0042-y

Received: 2 November 2011

Accepted: 7 November 2011

Published: 19 November 2011

Abstract

Programming languages have long impacted the development of distributed systems. While much middleware and distributed systems code continues to be developed today using mainstream languages such as Java and C++, several forces have recently combined to drive a renewed interest in other programming languages. The result of these forces has been an increase in the use of programming languages such as Erlang, Scala, Haskell, and Clojure that allow programming at a higher level of abstraction affording better modularity, enhanced speed of development, and added power of reasoning about systems being developed. Such languages can also be used to develop embedded domain specific languages that can expressively and succinctly model issues inherent in distributed systems including concurrency, parallelism, and fault tolerance. In this paper, we first present a history of programming languages and distributed systems, and then explore several alternative languages along with modern systems built using them. We focus on language and application features, how problems of distribution are addressed, concurrency issues, code brevity, extensibility, and maintenance concerns. Finally, we speculate about the possible influences today’s alternative programming languages could have on the future of middleware and distributed systems development.

Keywords

Distributed systems Middleware Erlang Scala RPC Java C++ Interoperability Portability Programming languages Functional programming