4 ms·
I’ve been very happily using Go the last 7 years (disclaimer, I’m employed to work on Go as of 2 years ago), some random personal thoughts. It’s interesting ho
by dmitshur 6y ago
I’ve been very happily using Go the last 7 years (disclaimer, I’m employed to work on Go as of 2 years ago), some random personal thoughts.
It’s interesting how a language can be boring and so fun to use at the same time.
I guess I don’t want excitement at the language layer because there’s plenty of opportunity for it in other layers.
A boring language to me means there’s usually roughly one way of doing something, so you just need to write up that one thing and move on to the next part of what you’re building, knowing the past part is finished. Once something works well and has a good API, I almost never want to come back to it and rewrite it with a different set of language features that I happen to learn.
The process of writing Go is fun to me because starting with an empty Go program to do a new task is always a refreshing experience, it’s easy to reuse any past functionality that you’ve already created (or found) and you can focus on the new task. In contrast, when I was primarily using C++, starting a new codebase wasn’t pleasant because of all the housekeeping and boilerplate (like defining a uint16 type in a platform-agnostic way) I needed to copy/paste just to have a reasonable starting point.
Also, the feeling of gofmt/goimports running on save and formatting the code on save is a huge part of what makes it fun (fortunately, code formatters are much more commonplace now; I wouldn’t want to go back to not having them).
- gcatalfamo 6y agoSince you work with go I have a question. I learned it superficially but I’d like to get more fluent with it. Which resource would you suggest?
- threeaccents 6y agoIf you have built a program in any other language I would say rewrite that program in GO. The benefit being you already solved the the domain logic of the program the only thing you need to focus on is writing/learning GO. If this is your first programming language or attempt to learn to program I would say to just pick a small but simple app/program and just go ahead and build it. Don't spend too much time on reading articles or video tutorials just get your hands dirty as soon as possible.
- dmitshur 6y agohttps://learn.go.dev https://learn.go.dev lists many good resources. The language spec at https://golang.org/ref/spec https://golang.org/ref/spec is a surprisingly approachable one-pager, it’s worth at least glancing over. One of my all-time favorites talks is https://vimeo.com/53221560 https://vimeo.com/53221560 from 2013. It shows off how Go scales by starting with a small task and continuously adding more requirements into the mix, while also demonstrating its concurrently support.
- deleuze 6y ago> it’s easy to reuse any past functionality that you’ve already created If you look closely, those aren't angle brackets, they're characters from the Canadian Aboriginal Syllabics block, which are allowed in Go identifiers.
- oscargrouch 6y agoI guess one thing that Python and later other languages like Go got right, is this "batteries included" mindset, where a language can be used without much dependencies on other codebases. I was following Go in the beginning (2009/2010) and the team behind Go had a great architectural understanding of how to make a platform library in a "cathedral" fashion. This is one of the big reasons Go did great as a new language. People from Python and Ruby could use Go as a alternative on server/backend software because the core platform was there together with AOT compilation, GC and its was a much faster alternative to those languages. As people from Java could be released from the burden of too many abstractions, heavy runtime and the big memory pressure on servers. Go was a good savior back than, and still is a good alternative to the infrastructure kind of sofware. Giving the crowds using Go were distinct, each one of them missed different things in their former runtimes.
- fomine3 6y agoI hope golang includes more batteries (utility func) like remove element from slice.