Modern coding owes a lot to ideas that are not novel. Go is, openly, a combination of several old ideas: communicating sequential processes (i.e., Goroutines and channels), functions as first-class values, and traits (i.e., interface). What makes Go new and interesting is what the Go designers left out of the language. Similarly, visual programming paradigms are not new and are, in fact, very varied. Notable examples include GRAIL (RAND Corp, 1968), LabVIEW, Quartz Composer, macOS Automator, Microsoft SSIS, and Scratch. None are considered general purpose languages for some reason. Instead, generated visualizations are often employed for enhanced explanation, debugging, or monitoring aspects of traditional textual languages.
Shenzhen I/O from Zachtronics is a programming puzzle game. The premise is that the player must visually design gadgets out of virtual electronic components that satisfy some test cases, but each component runs a textual, assembly-like language. Being a puzzle game, the programming language and flexibility is deliberately constrained in order to make it challenging. Despite this, players have demonstrated surprisingly complex free-form designs.
To Josh Deprez, these virtual microcontrollers communicated a lot like how Goroutines communicate over unbuffered channels, so he thought it would be great if the assembly language was swapped for Go so it could be more practical. He implemented his idea as Shenzhen Go, a fusion of visual Shenzhen I/O-like circuits with the Go programming language, with an eye to practical general purpose programming. Shenzhen Go is cross-platform and open source (Apache 2.0), written in Go and GopherJS (with gRPC-Web), and interoperable with regular Go programs by outputting Go source code as an intermediate. Shenzhen Go source files, which the programmer edits visually, are intended to be textually readable and diffable.
Join Josh to learn how to get started with Shenzhen Go and write a performant server. Along the way, you’ll explore a roadmap of planned features and see how you can help.
Josh Deprez is a senior site reliability engineer at Google in Australia. He holds a PhD in algebra. His hobbies include gardening and vintage Macintosh restoration.
©2018, O'Reilly Media, Inc. • (800) 889-8969 or (707) 827-7019 • Monday-Friday 7:30am-5pm PT • All trademarks and registered trademarks appearing on oreilly.com are the property of their respective owners. • firstname.lastname@example.org