Go, five years later

Go, five years later

I called Go the Hangul of programming languages in October 2021. I still write it. The metaphor held.

Hangul is one script. Japanese is three. That was the whole comparison: a language you can read, versus a language-family you can extend until nobody else can. Go is Korean, Lisp is Japanese.

This is not another tour. It is what I actually write.

The 2021 bet

Lisp is a fabric, not a team language. Common Lisp is a thousand-page book and a curse. Clojure is a practical Lisp that still is not simple: plain Clojure, Clojure calling Java, and macros. Three scripts. Simple Made Easy is a cartoon of real work.

Go is one script. Systems work despite a garbage collector, because you are not building Java object trees on the heap. First-class functions and closures are enough FP. You can read it in six months, and you can still read it in six years. I had looked at it before 1.0, in 2009, and come back to it for real work. That was the shock.

The picture at the top is an Amiga boing ball in Go. Something the language was not designed for. It went smoothly. The repo is still there.

What I write

This site. The WordPress-era posts are HTML inside Markdown. A small Go program, fmtposts, turns <pre> blocks into fenced, language-tagged Markdown so Hugo can highlight them. Stdlib. One package.

Deploy used to be hugo deploy. This Hugo binary does not have that tag. A small Go program zips public/, talks to Amplify, fails if the job id is empty, fails if the job does not succeed. The Makefile calls it. That is the path that actually ships the site.

Those two are in this repo. They are not clever. They are readable. That was the point of Hangul.

Generics arrived in 1.18, March 2022, a few months after the first post. The language did not become Japanese. You can ignore them until a map of K to V is the whole function. Then you write that function and go back to the rest of the program.

What did not need a sequel

Clojure is still three scripts. I still like thinking in it. I do not ship in it.

Rust still has no formal spec. That post is the spec post. This one is not a rematch.

Ada is still the language you reach for if the requirement is fifty years of proved safety. I said that in 2021. I am not taking it back.

The Clash joke still works. I stayed.

Hangul

The writing-system metaphor is one dimension. It was enough. A language that is easy to write and easy to read, including by the person who wrote it six months later, including by someone who did not write it. That is the property I was buying. Five years of programs later, that is still the property.

Lisp remains the fabric. Go remains the Hangul. I write Go.

References