"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.
Read more at https://google.github.io/shenzhen-go.
SHENZHEN GO requires:
If you are using Go 1.7, you need to have set your
$GOPATH (common choices are
$HOME/go, but it's up to you).
For Go 1.8, the default
$HOME/go so it
is not necessary to set it (but you can change it to override the default if you want).
To install, open a terminal and run:
go get -u github.com/google/shenzhen-go/cmd/shenzhen-go
This should create the
shenzhen-go binary in your
and a web browser should appear with SHENZHEN GO (if not, navigate to http://localhost:8088/ manually).
The file browser is limited to the directory
shenzhen-go was started in.
Navigate to the
examples/primes.szgo file and play around - this demonstrates
an example prime number sieve program.
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 Slack channel.
The shenzhen-go binary serves a visual Go environment.
|The shenzhen-go binary serves a visual Go environment.|
Package graph manages programs stored as graphs.
|Package graph manages programs stored as graphs.|
Package parts contains various pre-made bits and pieces to combine into the graph.
|Package parts contains various pre-made bits and pieces to combine into the graph.|
Package partlib includes supporting functions for parts.
|Package partlib includes supporting functions for parts.|
Package source helps deal with Go source code.
|Package source helps deal with Go source code.|
Package view provides the user interface.
|Package view provides the user interface.|