Declarative and finite state machine approaches to Cloud programming

Perter Alvaro, Tyson Condie, Neil Conway, Khaled Elmeleegy, Joseph M. Hellerstein, Russell Sears, “BOOM Analytics: Exploring Data-Centric, Declarative Programming for the Cloud,” EuroSys, 2010. [PDF]

Joe Armstrong, “Erlang: A Survey of the Language and Its Industrial Applications,” Ninth Exhibition and Symposium on Industrial Applications of Prolog, 1996. [PDF]


BOOM or Berkeley Orders-Of-Magnitude adopts a data-centric approach to system design and ties it up with a declarative programming language (Overlog) to allow designing compact distributed systems that are easy to build and debug. This paper focuses on reimplementing Hadoop MapReduce engine and HDFS using BOOM to show that Overlog programs can be really tiny. How BOOM can help in making distributed systems verifiable or easier to debug is not that clear though.


Erlang is a declarative functional programming language specially designed for concurrent, distributed, real-time systems. It takes a finite state machine (FSM) approach in the sense that each node runs individual Erlang processes (using the Actor model), and they communicate between themselves using message passing without any shared state. This makes Erlang suitable for implementing complex distributed algorithms and protocols. The sequential code in Erlang borrows a lot from Prolog due to its logic programming roots. Erlang has many OS-like features, e.g., concurrent processes, scheduling, garbage collection etc.


In both BOOM and Erlang, the high-level goal is to simplify the way verifiable distributed systems can be developed without large SLOCs. The tiny programs, however, are very complex to understand, IMO. Instead of trying to impose one specific paradigm, I think it is better to allow programmers use whichever way they want to code. My personal choice would be Scala.

Leave a Reply

Your email address will not be published. Required fields are marked *