DEV Community

Discussion on: My use-case for Go

Collapse
 
rhymes profile image
rhymes • Edited

Hi Mario, nice analysis, it's a very interesting language indeed!

Could it be that the reason why they decided to part with generics is, other than simplicity, the fact they had to appeal to the large audience of C developers? In its current form it seems like it can be picked up in an afternoon by an experienced C developer, maybe a little more from someone used to dynamic higher level languages.

One thing I do not like about Go (I have very, very, little experience to be honest) is the way they do error checking, all those if err != nil at some point look like a design flaw, even if they make the code super fast. What do you think?

Also the package manager seems very primitive if you compare it to things like pip, yarn or bundler.

Collapse
 
mariosangiorgio profile image
Mario Sangiorgio

I'm not sure if generics have been left out to appeal to C developers. At least, in the FAQ they explicitly say that they want to keep the language and the runtime simple golang.org/doc/faq#generics

Regarding error checking, I think that having algebraic data types and pattern matching would have been cleaner and safer. Code can still be super fast with them (have a look at Rust).

I haven't had a chance to use the package manager much so I don't have a clear opinion. If I remember correctly, I read that some of the design decision were rooted in Google using a monorepo, which is a different scenario than what you would normally be in.
I think some work is being done on the package management system so this will likely improve in the future

Collapse
 
rhymes profile image
rhymes

Thanks Mario, I almost forgot about pattern matching for error handling. That would be very nice indeed.

I've read this article and it makes very interesting points: yager.io/programming/go.html