"SHENZHEN GO" (working title)
SHENZHEN GO (working title) is an experimental visual Go environment, inspired by programming puzzle games such as TIS-100 and SHENZHEN I/O.
SHENZHEN GO provides a UI for editing a "graph," where the nodes are goroutines and the arrows are channel reads and writes. (This is analogous to multiple "microcontrollers" communicating electrically in a circuit.) It can also convert a graph into pure Go source code, which can be compiled and run, or used as a library in a regular Go program.
SHENZHEN GO was unveiled at the linux.conf.au 2017 Open Source & Games Miniconf.
Read more at https://google.github.io/shenzhen-go.
Versions
There are currently TWO versions of Shenzhen Go.
The original Graphviz-based prototype is "v0", and mostly works, but I'm not working on it anymore.
The second version, "v1", is not quite ready yet, so for now it lives in the "dev" directory. But I'm working on it.
Getting started
See the getting-started guides at https://google.github.io/shenzhen-go.
...for the impatient gopher
Choose one of:
go get -u github.com/google/shenzhen-go/v0/cmd/shenzhen-go
go get -u github.com/google/shenzhen-go/dev/cmd/shenzhen-go
go get -u -tags webview github.com/google/shenzhen-go/dev/cmd/shenzhen-go
Notes
This is not an official Google product.
This is an experimental project - expect plenty of rough edges and bugs, and no support.
For discussions, there is a Google Group and a Slack channel.
Acknowledgements
v1 / dev
The dev version wouldn't be nearly as good as it is without the following:
- The Ace code editor.
- Chrome Hterm.
- GopherJS.
- gRPC.
- Improbable's gRPC-Web for Go.
- Johan Brandhorst's GopherJS bindings for gRPC-Web.
v0
The prototype (v0) relies heavily on Graphviz to function, but does not bundle or vendor any Graphviz components.