Why I learn Go and why I never regret
Few months earlier, when i started to design on my final year project for bachelor degree, I needed a programming language that can handle concurrency well, and at the same time, with modern syntax. I looked into multiple programming languages, and Go stood out from my opinion list.
Pick up Go
When I decided to pick up Go, the first thing I do was looking for example project and read the source code. It turned out that was a bad move. Due to the syntax and the structure of Go. So I took a step back, by going through every slides of A Tour of Go. Surprisingly, I took me one evening to complete it, and I was able to read Go code after that. The part that I took most of the time were topic on concurrency and channel. I used the old-fashion way, visualised by drawing out on paper, it really helped me.
Think like Go
One of the challenges that I faced was the design paradigm. Coming from object-oriented and functional programming background, Go does not make any sense to me at the first though. Imagine without the powerful functions like
reduce that available to a lot of languages. Basically, in Go we have to write loop ourselves. Imagine handle errors without
catch. It took me awhile to get used to it.
Read more code
As I have picked up the basics, I continued my learning journey by reading more Go code.
The more I read, the more I realised how much I don't know about Go.
Open source definitely helps. I read a lot of open source code.
Why I never regret
After several months working in Go, it does bring benefits to me
Open up new opportunity
It increase the value of ourselves when we learn or know more things, especially in the technology industry where things are changing so fast. Go might not the most popular language out there, but it is growing.
Think from another perspective
As I mentioned earlier, in Go we do not have the powerful functions in most programming languages, it allows us to think the solution from the most basic programming structure. It might not be comfortable for some people, but it helps me to think the problem from another perspective.
Performance is awesome
Go's performance is awesome. I do not run any benchmarks to do comparison, for me I think is pretty good. The compilation time is really quick, and the CPU utilisation also quite low for my application.
Go is an awesome programming language, and I encourage all of you to give it a try. I will continue my journey in Go with different applications.
Interesting to read some thoughts about Go! I've been wanting to know more about why it's popular.
It does have some unconventional design choices that make it interesting, especially since it's cutting popular features compared to extra languages, rather than introducing extra ones:
I guess it might be something one gets used to... But I remain highly skeptical about design choices like loops over
I mean, even Java, which was very much not a functional-programming language initially, which is rather conservative about adding new complexity, and has kind of crappy lambdas, has added
So it's hard for me not to be skeptical about Go's choice in this regard. Especially since the justifications I find are things like:
I haven't had occasion to use it once. Instead, I just use "for" loops. You shouldn't use it either. -Rob Pike
I know Rob Pike is smarter than me, but it's 'almost every language vs Go', I'm gonna need better than "you shouldn't use it".
I have to wonder if it's not just because there are no generics. Which is also something I have a very hard time getting behind...
Do you miss any of that, or has Go found a better way?
I believe things will change in Go, even though the generics took forever to implement. At current stage of Go, lack of generics is really bring a lot of inconvenience. I have to implement the multiple functions with exact behaviour just because they are different type. I think people would prefer functional approach than a typical
for loop, as the comprehension speed in today's context really important.