[Boldly Go] Before we start: What is the Go Spec?
At the moment, I'm going through the Go Language Specification, piece by piece, and explaining it in terms that anyone should be able to understand. Some days I'll stray from this topic, and talk about other Go-related topics, but since this will be the bulk of Boldly Go Daily for at least a few months, I wanted to share with you this introduction to the Go spec. I sent this at the beginning of the series, on January 2, 2023. Starting tomorrow, you'll begin receiving the latest emails as I write them. If you'd like to catch up on anything you missed in the meantime, you can check out the Boldly Go Archive.
So what is a programming language specification, and why should you care about it? In short, it “is a documentation artifact that defines a programming language so that users and implementors can agree on what programs in that language mean.”
Not all languages have formal specifications. Wikipedia notes that Perl 5 has no formal specification, and prior to 2014, PHP was unspecified.
But Go is not at all unique in that it has a formal specification. But the fact that it has a specification, and more to the point, the fact that it has a single specification, and multiple implementations, tends to trip up people from time to time. No doubt I’ll talk about some of this as relevant topics are presented during our tour of the Go Spec.
The Go Spec is a formal explanation of the Go Programming language, and reference manual. It’s not intended to be used as a tutorial. However, it is fairly accessible. That is to say, you don’t need a PhD in Computer Science or other advanced training to make sense of it.
There are still some parts that are fairly dense in technical details, though, and that’s where I hope this series will help.
I have two primary goals in writing this series:
- I want to make the Go Spec accessible to you. Whether you’re new to all programming, or you have decades under your belt, my goal is to show you that the Go Spec doesn’t need to be intimidating, and that you can use it as a regular part of your Go programming journey.
- I want to use the Go Spec as a guide through the langauge. There are many ways to organize a course, book, or other learning journey through a language. I’ve yet to see one that does this by going through a language formal spec (although it wouldn’t surprise me to discover that some such examples do exist).
This is an experiment. I’ve never tried explaining the Go Spec (or any other) on a point-by-point basis. In fact, I’ve never even read the entire Go Spec (though I certainly have read many portions). So I’ll be learning as we go along.
I want your feedback! If anything I say is unclear, confusing, or wrong, please let me know!
And if you find anything in this series to be helpful, I’d love if you’d share it with your colleagues, with your team, or on your favorite social media hangout.
3 links in this issue
- Boldly Go Archivet.dripemail2.com
- In shortt.dripemail2.com
- notest.dripemail2.com
Sent by Boldly Go Daily Email. Links that track readers or name the subscriber were removed from this copy; its images still load from the sender's own servers. If you publish this newsletter and want an issue corrected or removed, write to us.