{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2025,9,28]],"date-time":"2025-09-28T04:15:37Z","timestamp":1759032937916},"reference-count":27,"publisher":"Sociedade Brasileira de Computacao - SB","issue":"1","license":[{"start":{"date-parts":[[2011,11,19]],"date-time":"2011-11-19T00:00:00Z","timestamp":1321660800000},"content-version":"tdm","delay-in-days":0,"URL":"https:\/\/creativecommons.org\/licenses\/by\/2.0"},{"start":{"date-parts":[[2011,11,19]],"date-time":"2011-11-19T00:00:00Z","timestamp":1321660800000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/creativecommons.org\/licenses\/by\/2.0"}],"content-domain":{"domain":["link.springer.com"],"crossmark-restriction":false},"short-container-title":["J Internet Serv Appl"],"published-print":{"date-parts":[[2012,5]]},"abstract":"<jats:title>Abstract<\/jats:title>\n          <jats:p>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\u2019s alternative programming languages could have on the future of middleware and distributed systems development.<\/jats:p>","DOI":"10.1007\/s13174-011-0042-y","type":"journal-article","created":{"date-parts":[[2011,11,18]],"date-time":"2011-11-18T14:56:36Z","timestamp":1321628196000},"page":"23-30","update-policy":"http:\/\/dx.doi.org\/10.1007\/springer_crossmark_policy","source":"Crossref","is-referenced-by-count":4,"title":["Programming language impact on the development of distributed systems"],"prefix":"10.5753","volume":"3","author":[{"given":"Debasish","family":"Ghosh","sequence":"first","affiliation":[],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Justin","family":"Sheehy","sequence":"additional","affiliation":[],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Kresten Krab","family":"Thorup","sequence":"additional","affiliation":[],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Steve","family":"Vinoski","sequence":"additional","affiliation":[],"role":[{"role":"author","vocabulary":"crossref"}]}],"member":"3742","published-online":{"date-parts":[[2011,11,19]]},"reference":[{"key":"42_CR1","unstructured":"White JE (1975) RFC 707. http:\/\/tools.ietf.org\/html\/rfc707"},{"key":"42_CR2","unstructured":"Nelson BJ (1981) Remote procedure call. PhD Dissertation, Carnegie Mellon Univ, Pittsburgh, PA, USA. AAI8204168"},{"key":"42_CR3","series-title":"Lecture notes in computer science","first-page":"343","volume-title":"Distributed systems\u2014methods and tools for specification","author":"B Liskov","year":"1985","unstructured":"Liskov B (1985) The Argus language and system. In: Paul M, Siegert HJ (eds) Distributed systems\u2014methods and tools for specification, Lecture notes in computer science, vol\u00a0190. Springer, Berlin, pp 343\u2013430"},{"issue":"1","key":"42_CR4","doi-asserted-by":"publisher","first-page":"43","DOI":"10.1109\/TSE.1985.231536","volume":"SE-11","author":"G Almes","year":"1985","unstructured":"Almes G, Black A, Lazowska E, Noe J (1985) The Eden system: a technical review. IEEE Trans Softw Eng SE-11(1):43\u201359","journal-title":"IEEE Trans Softw Eng"},{"issue":"1","key":"42_CR5","doi-asserted-by":"publisher","first-page":"65","DOI":"10.1109\/TSE.1987.232836","volume":"SE-13","author":"A Black","year":"1987","unstructured":"Black A, Hutchinson N, Jul E, Levy H, Carter L (1987) Distribution and abstract types in Emerald. IEEE Trans Softw Eng SE-13(1):65\u201376","journal-title":"IEEE Trans Softw Eng"},{"key":"42_CR6","volume-title":"Network computing architecture","author":"L Zahn","year":"1990","unstructured":"Zahn L, Dineen T, Leach P, Martin E, Mishkin N, Pato J, Wyant G (1990) Network computing architecture. Prentice-Hall, New York"},{"key":"42_CR7","unstructured":"Sun Microsystems (1988) RPC: remote procedure call protocol specification. Technical Report RFC-1057, Sun Microsystems, Inc, June"},{"key":"42_CR8","unstructured":"Object Management Group (1991) The common object request broker: architecture and specification (CORBA). OMG document number 91-12-1"},{"key":"42_CR9","unstructured":"Waldo J, Wyant G, Wollrath A, Kendall S (1994) A note on distributed computing. Technical Report SMLI TR-94-29, Sun Microsystems Laboratories, Inc"},{"key":"42_CR10","volume-title":"Object oriented programming: an evolutionary approach","author":"BJ Cox","year":"1991","unstructured":"Cox BJ (1991) Object oriented programming: an evolutionary approach. Addison Wesley, Reading"},{"key":"42_CR11","volume-title":"Object-oriented programming and the objective C language","author":"NeXT Computer, Inc","year":"1993","unstructured":"NeXT Computer, Inc (1993) Object-oriented programming and the objective C language. Addison Wesley, Reading"},{"key":"42_CR12","unstructured":"Gosling J, McGilton H (1995) The Java language environment\u2014a\u00a0white paper"},{"key":"42_CR13","unstructured":"Java remote method invocation over IIOP. http:\/\/en.wikipedia.org\/wiki\/RMI-IIOP"},{"key":"42_CR14","unstructured":"Let it crash. http:\/\/c2.com\/cgi\/wiki?LetItCrash"},{"key":"42_CR15","first-page":"235","volume-title":"Proceedings of the 3rd international joint conference on artificial intelligence (IJCAI\u201973)","author":"C Hewitt","year":"1973","unstructured":"Hewitt C, Bishop P, Steiger R (1973) A universal modular ACTOR formalism for artificial intelligence. In: Proceedings of the 3rd international joint conference on artificial intelligence (IJCAI\u201973). Morgan Kaufmann, San Francisco, pp 235\u2013245"},{"key":"42_CR16","unstructured":"http:\/\/www.cs.berkeley.edu\/~matei\/spark\/"},{"key":"42_CR17","unstructured":"Finagle, implementing asynchronous clients and servers. http:\/\/twitter.github.com\/finagle\/"},{"key":"42_CR18","unstructured":"JBoss Netty, the Java NIO client server framework. http:\/\/www.jboss.org\/netty"},{"key":"42_CR19","unstructured":"Akka\u2014simpler concurrency. http:\/\/akka.io"},{"key":"42_CR20","unstructured":"Erlang programming language. http:\/\/www.erlang.org\/"},{"key":"42_CR21","unstructured":"A taste of 2.8: continuations. http:\/\/www.scala-lang.org\/node\/2096"},{"key":"42_CR22","unstructured":"The Mozart programming system. http:\/\/www.mozart-oz.org"},{"key":"42_CR23","unstructured":"Agents and asynchronous actions. http:\/\/clojure.org\/agents"},{"key":"42_CR24","unstructured":"Software transactional memory. http:\/\/dl.acm.org\/citation.cfm?id=224987"},{"key":"42_CR25","unstructured":"Erjang. https:\/\/github.com\/trifork\/erjang\/wiki"},{"key":"42_CR26","volume-title":"DSLs in action","author":"D Ghosh","year":"2010","unstructured":"Ghosh D (2010) DSLs in action. Manning, Shelter Island"},{"key":"42_CR27","volume-title":"Restful web services","author":"L Richardson","year":"2007","unstructured":"Richardson L, Ruby S (2007) Restful web services. O\u2019Reilly, Sebastopol"}],"container-title":["Journal of Internet Services and Applications"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/link.springer.com\/content\/pdf\/10.1007\/s13174-011-0042-y.pdf","content-type":"application\/pdf","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/link.springer.com\/article\/10.1007\/s13174-011-0042-y\/fulltext.html","content-type":"text\/html","content-version":"vor","intended-application":"text-mining"},{"URL":"http:\/\/www.springerlink.com\/index\/pdf\/10.1007\/s13174-011-0042-y","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"},{"URL":"https:\/\/link.springer.com\/content\/pdf\/10.1007\/s13174-011-0042-y.pdf","content-type":"application\/pdf","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2022,2,9]],"date-time":"2022-02-09T22:14:45Z","timestamp":1644444885000},"score":1,"resource":{"primary":{"URL":"https:\/\/jisajournal.springeropen.com\/articles\/10.1007\/s13174-011-0042-y"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2011,11,19]]},"references-count":27,"journal-issue":{"issue":"1","published-print":{"date-parts":[[2012,5]]}},"alternative-id":["42"],"URL":"https:\/\/doi.org\/10.1007\/s13174-011-0042-y","relation":{},"ISSN":["1867-4828","1869-0238"],"issn-type":[{"value":"1867-4828","type":"print"},{"value":"1869-0238","type":"electronic"}],"subject":[],"published":{"date-parts":[[2011,11,19]]},"assertion":[{"value":"2 November 2011","order":1,"name":"received","label":"Received","group":{"name":"ArticleHistory","label":"Article History"}},{"value":"7 November 2011","order":2,"name":"accepted","label":"Accepted","group":{"name":"ArticleHistory","label":"Article History"}},{"value":"19 November 2011","order":3,"name":"first_online","label":"First Online","group":{"name":"ArticleHistory","label":"Article History"}}]}}