Escher: A language for programming in pure metaphors
Escher is a simple syntax for representing generic labeled graphs called circuits, much like XML is a (not-so-simple) syntax for representing generic labeled trees.
Escher graphs can also be interpreted as executable circuits of independent processing units. In this way, Escher circuits (used as code) can manipulate Escher circuits (representing data), thus achieving linguistic uniformity between algorithm and data.
Escher was designed to enable a new programming paradigm for software that needs to control large heterogenous distributed systems consisting of failing components and connections.
With Escher, one views the entire technology stack of a typical Internet company (backend services, mobile apps, outsourced cloud apps, and so on) within a single program.