Bloom attempts to remove traditional mismatches between distributed software and platforms. Definitely a systems-oriented programming language (in the sense that this is what systems does these days). Interesting features copied and summarized from their site:
- disorderly programming: Much of the pain in traditional distributed programming comes from programmers bridging from an ordered von Neumann programming model into a disordered distributed systems reality that executes their code. Bloom was designed to matchâ€“and exploitâ€“the disorderly reality of distributed systems. Bloom programmers write programs made up of unordered collections of statements, and are given constructs to impose order when needed.
- a collected approach: Taking a cue from successfully-parallelized models like MapReduce, SQL, and Key/Value stores, the standard data structures in Bloom are disorderly collections, rather than scalar variables and structures. These data structures reflect the realities of non-deterministic ordering inherent in distributed systems. Bloom provides simple, familiar syntax for manipulating these structures.
- CALM consistency: Bloom enables powerful compiler analysis techniques to reason about the consistency of distributed code; e.g. it can point out lines of code where a coordination library should be plugged in if you want to ensure distributed consistency.
Currently realized as an embedded Ruby DSL.