Escher language

71 views
Skip to first unread message

Samuel Lampa

unread,
Jun 28, 2016, 12:39:59 PM6/28/16
to Flow Based Programming
Has anyone looked into the Escher language [1] by Petar Maymankouv? (see [2] for syntax examples). 

Obviously intended to be a tad more generic language, in that it describes computational networks and graph-formed data with the same notation, as reflected by this quote [2]: 

"If you view XML as a syntax that represents labeled trees, then Escher would be a syntax that represents labeled graphs."

But otherwise its primitives seem to have a pretty natural translation to FBP concepts:

Circuit ~= Network
Gate    ~= Process
Valve   ~= Port
Vector  ~= Process+Port
Link    ~= Pair of two (Process+Port)s

(Please correct me if I got some of this wrong)

It even allows sub-networks, by allowing one network ("circuit") to take the place of a process ("gate"), inside another process ("circuit").

I must say the FBP terminology is so much more natural to think about, but being very interested in the GoCircuit [4] project of which Escher is a part, I found it interesting that Escher has such a direct translation to FBP.

Best
// Samuel

Samuel Lampa

unread,
Jun 29, 2016, 12:41:03 PM6/29/16
to Flow Based Programming
Any other thoughts or comments, anyone?

(I like the kind of collaborative review often happening in this group :) )

// S

Humberto Madeira

unread,
Jun 30, 2016, 9:57:44 AM6/30/16
to Flow Based Programming
Hi Samuel,

According to what I read about Go syntax, the following code
type Circuit struct {
	Gate map[Name]Value
	Flow map[Name]map[Name]Vector
}
indicates that a Circuit has two members
1) a member called Gate which is a map of Name keys vs Value items
2) a member called Flow which is a map of Name keys vs Vector items 

This would mean that 
Value    ~= Process

Personally, I don't think that using the Go syntax is helping legibility, but I am not a Go developer.

As for Escher itself, the documentation that I have read so far seems to involve a lot of handwaving and toy examples.
The circuit index "sugar-free syntax" is terse to the point of non-comprehension, and the accompanying documentation is largely content-free.

I did see the sub-circuit thing, but their example defined the sub-circuit in the main circuit.
And maybe I missed it, but I didn't see an example of using an externally defined sub-circuit 
(and for me, if that were lacking, it would be a showstopper right there)

So maybe Escher is good or maybe it's not. 

Their documentation isn't helping me to decide (even though it refers to fairly familiar terminology)

Perhaps a deep dive into coding might help.

But from the point of view of someone not familiar with Go, there is nothing to give me confidence that, 
short of a six month training period in Go and Escher, I would have any sort of traction with it. 

I think it needs better documentation (perhaps there is some somewhere else?)

Regards,
--Bert 

Samuel Lampa

unread,
Jul 1, 2016, 6:10:54 AM7/1/16
to Flow Based Programming
On Thursday, June 30, 2016 at 3:57:44 PM UTC+2, Humberto Madeira wrote:
Hi Samuel,

According to what I read about Go syntax, the following code
type Circuit struct {
	Gate map[Name]Value
	Flow map[Name]map[Name]Vector
}
indicates that a Circuit has two members
1) a member called Gate which is a map of Name keys vs Value items
2) a member called Flow which is a map of Name keys vs Vector items 

This would mean that 
Value    ~= Process

Many thanks for the comments! 

This is quite confusing I must admit, but based on the quote "A circuit consists of nodes, called gates, which have a name and a value", it seems that it is the combination of name and value (in the map), that makes up the process, although maybe one could say that the "value" is the actual process.

I agree regarding the documentation. It seems to be something interesting here, but it took me a lot of careful re-reading before starting to see how things fit together. Might have helped if I was more fluent in electrical diagramming maybe.

Best
// Samuel
Reply all
Reply to author
Forward
0 new messages