December 25, 2019

402 words 2 mins read

Shenzhen Go: A visual Go environment for everybody, even professionals

Shenzhen Go: A visual Go environment for everybody, even professionals

Many utilities are about prettifying text-based code, but what if a program was written "diagram first"? (This isn't a new idea.) Goroutines and channels make sense on a canvas. Josh Deprez leads a live demonstration of Shenzhen Go, a pragmatic blend of visual and textual programming.

Talk Title Shenzhen Go: A visual Go environment for everybody, even professionals
Speakers Josh Deprez (Google Australia)
Conference O’Reilly Open Source Convention
Conf Tag Put open source to work
Location Portland, Oregon
Date July 16-19, 2018
URL Talk Page
Slides Talk Slides

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.

comments powered by Disqus