I haven't used Node.js for much more than playing around. But I do now have some more serious Golang projects behind me and so I can give you my reasons for liking it. I'm a Lisper at heart so Go is not my dream language, but it sufficiently embodies the Unix philosophy of simplicity and readability that I can't not like it. Here are some points I find noteworthy:
The type system is robust and expressive. It's not as watertight as Haskell's but gives one the feeling of well-defined data structures at the center of one's programming effort (see Alan Perlis' epigram no. 9: cs.yale.edu/homes/perlis-alan/quot...)
It's a bit C-like in terms of syntactic simplicity, yet feels much more high-level (probably due to a rich set of libraries and standard means of their distribution).
Channels! Go has typed channels and goroutines at its core, which is a clever programming paradigm for concurrency. It's more or less equivalent to Tony Hoare's CSP (cs.cmu.edu/~crary/819-f09/Hoare78.pdf)
It's fast. Both execution and compilation. Combined with goroutines' lightweight implementation, you can easily have thousands (maybe millions) of goroutines in parallel.
It feels like a no-nonsense systems programming language for the present. It's not trying to be too clever, rather deliver a pragmatic mixture of theory and practice.
If I were to recommend a single resource to get a little excited, Id' suggest you check out this presentation by Rob Pike, one of Go's designer: go.dev/talks/2012/concurrency.slide#1
For further actions, you may consider blocking this person and/or reporting abuse
We're a place where coders share, stay up-to-date and grow their careers.
I haven't used Node.js for much more than playing around. But I do now have some more serious Golang projects behind me and so I can give you my reasons for liking it. I'm a Lisper at heart so Go is not my dream language, but it sufficiently embodies the Unix philosophy of simplicity and readability that I can't not like it. Here are some points I find noteworthy: