<commit_before># "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.

## Dependencies

SHENZHEN GO requires:

*   [Go](https://golang.org/)
*   [Graphviz](http://graphviz.org/)
*   A web browser (e.g. [Chrome](https://www.google.com/chrome)).

## Installation

This assumes you have set your `$GOPATH` (a common choice is `$HOME/go`, but 
it's up to you).

To install, open a terminal and run:

    go install github.com/google/shenzhen-go/cmd/shenzhen-go

This should create the `shenzhen-go` binary in your `$GOPATH/bin` directory.
Run it:

    $GOPATH/bin/shenzhen-go

and a web browser should appear with SHENZHEN GO (if not, navigate to 
http://localhost:8088/ manually). 

The file browser is based on (and limited to) the directory you started in.

Navigate to the `examples/primes.szgo` file and play around - this demonstrates 
an example prime number sieve program.

## Notes

This is not an official Google product.

This is an experimental project - expect plenty of rough edges and bugs, and 
no support.

## More notes

*   SHENZHEN GO is a strictly one-way process. You *cannot* import Go code 
    that you wrote into SHENZHEN GO. 
*   You *can* write snippets of Go in your SHENZHEN GO graph, which then appear 
    in the Go output.
*   One day it should be possible to write zero Go code, yet produce wonderful 
    graphs that do useful things.
*   You can always save a copy of your program as Go, continue working on that, 
    and never touch SHENZHEN GO again. I won't even judge you.
*   Don't treat the Go output as a virtuous paragon of how to code in Go. It is
    "machine-generated" and therefore held to a lower standard than "hand-made".
*   The JSON-based file format aims to be *diffable*, or at least *not ugly*, 
    for the benefit of source control and code review.<commit_msg>Make a note better<commit_after># "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.

## Dependencies

SHENZHEN GO requires:

*   [Go](https://golang.org/)
*   [Graphviz](http://graphviz.org/)
*   A web browser (e.g. [Chrome](https://www.google.com/chrome)).

## Installation

This assumes you have set your `$GOPATH` (a common choice is `$HOME/go`, but 
it's up to you).

To install, open a terminal and run:

    go install github.com/google/shenzhen-go/cmd/shenzhen-go

This should create the `shenzhen-go` binary in your `$GOPATH/bin` directory.
Run it:

    $GOPATH/bin/shenzhen-go

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.

## Notes

This is not an official Google product.

This is an experimental project - expect plenty of rough edges and bugs, and 
no support.

## More notes

*   SHENZHEN GO is a strictly one-way process. You *cannot* import Go code 
    that you wrote into SHENZHEN GO. 
*   You *can* write snippets of Go in your SHENZHEN GO graph, which then appear 
    in the Go output.
*   One day it should be possible to write zero Go code, yet produce wonderful 
    graphs that do useful things.
*   You can always save a copy of your program as Go, continue working on that, 
    and never touch SHENZHEN GO again. I won't even judge you. 
*   However, modifications to the generated output won't be preserved if 
    SHENZHEN GO builds or runs the design again.
*   Don't treat the Go output as a virtuous paragon of how to code in Go. It is
    "machine-generated" and therefore held to a lower standard than "hand-made".
*   The JSON-based file format aims to be *diffable*, or at least *not ugly*, 
    for the benefit of source control and code review.
{'fraction_non_alphanumeric': 0.07285471537807986, 'fraction_numerical': 0.002973661852166525, 'mean_word_length': 3.5941463414634147, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 4, 'lorem ipsum': 0, 'www.': 2, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '549847', 'n_tokens_mistral': 1461, 'n_tokens_neox': 1375, 'n_words': 696}