Who needs Go, and why?
Hey Ya! In short, lately there have been a lot of frauds around Go: good-bad, needed-unnecessary, much compared to python, much compared to rast , divan0 even thought of translating the Go vs Haskell vyser , well, in that way. I got the feeling that due to the hype and aggressive marketing of the language by some Ivan Danilyuk, very few people understood who and why should Go be useful at all, why it was made and whether to teach it at all. I also participated in these srach for a long time, taking the side of the “fans” of the language and the side of the opposition, but in the end doper what was the focus. Today I sipped a little at the couch in a post and decided to write this little note.
Let’s go through the post, boys.
Who needs Go?
I just realized today that almost no one really understands why Go is needed at all. In short, Go is needed to design robust software. I don’t know how to correctly translate this word into Russian, but it is most likely something like “reliable”. So, Go did it because Google needed a tool to write reliable code. In fact, not so much Google as Rob Pike, who for the last two decades, like a minimum, is obsessed with the idea of making a channel with channels and green streams. It so happened that Rob Pike got into a normal company with other touches from Bell Labs, the coolest Russ Cox, Fitzpatrick, etc. It was not difficult for these guys to convince Google that they needed a new language and, in fact, they knocked out the babosiki on it.
So, it was a slight digression, let's get back to the topic. Yes, why did Google still need a new language? Well, everything is clear here, let's listen to the words of Rob Pike himself:
The trick is that our programmers are googlers, not scientists. These are usually young, just released boys who may have learned Java, perhaps even C / C ++ and maybe Python. They are not able to understand the language of probes, but we still want them to make good software. Thus, we give them an easily understood language that they will quickly get used to.
Now let's try to understand what he meant. To put it bluntly, he said that not the smartest guys work in Google (“unable to understand a cool language”), so they came up with a language that is simply impossible not to understand. This is actually very cool for management. Judge: you can hire 100 mediocre programmers, give Go into their hands and this army of monkeys will generate a lot of “good” and very supported code for you! Go is a fantastic management tool, it’s better not to come up with it: instantly drive all programmers into go-fmt framework (no one can cram your own formatting style), take away any abstractions from them more complicated than the interface and get such a pipeline of code in which developer is just another brick in the wall. In my opinion, very cool! Well,
So, Go is needed by corporations . If you have a lot of people in your company, big projects and all that, then Go is the perfect option! But in order to understand whether you really need Go, you need to figure out why it is still worth using. Let's find out.
From a technical point of view, Go's niche is rather modest: network, utilities, backends. If you have complex networks or many nodes that need to be somehow orchestrated in a clever way, then Go is a good choice (judging by the experience of CloudFlare). If you want to make some cool console utility, such as docker or consul, then Go will also work as a normal (judging by the experience of these). Now I also make an interesting utility and write it on Go, because it fits. Well, in the end. If you need a fast and, in principle, effective backend, then you can also choose Go. I can’t imagine how people write business logic on Go, but somehow they write it! In short, everything is quite complicated here. On the one hand, doing CRUD in Go is quite painful; on the other hand, there are 350 different routers and frameworks that make the job great.
As for other niches, I can assure you with confidence: complete profanity. If Go is used somewhere seriously, then in console utilities, on networks and backends. There are no more juskeys. And let's not invent them. Go was originally a language that was made in Google so that students could come and write code for Google's sophisticated network infrastructure. Here you can form a kind of rule of thumb: " If you do not write software for the network, a console utility or a highload backend, then you probably do not need Go ." Nevertheless, the people continue to write software on Go for the sake of, strictly speaking, Go itself.
Should I Go?
This is a question that can be answered briefly and unequivocally. Go is worth learning anyway . Firstly, because it’s like two fingers pissing - it’s easier to come up with a language. Go has very few grammars and abstractions; you can master it at the initial level over the weekend. Of course, the language has a lot of holes and "traps for patches", which I wrote about in my last article , but they quickly get resolved.
Secondly, because Go somehow penetrates very deeply into our lives. Over the past year, a lot of Go projects have been written on the github, more and more corporations are sitting on it, etc. It’s always good to have such a popular tool in stock, if not cool. Suddenly you will be kicked out of work and quite by chance a cool offer for the position of Go programmer will fall. And here you go, and because the weekend he masturbated a year ago.
For those who can’t directly restrain themselves and ALREADY get kicked out of their underpants, I immediately throw a few links to materials:
- tour.golang.org - of. language tour, chew
- gobyexample.com - examples of various commonly used snippets
- www.reddit.com/r/golang - a subreddit dedicated to Go; cool things are often posted there
Go ahead, Go will definitely not hurt you. Well, maybe you'll miss gofmt later, but it's not really scary.
Go is already here anyway; it has already taken off. It is already being used, it is already being quoted, it is already needed. You can take your ass for a very long time and swear at the lack of generics, but the hour has already arrived. However, it is important to understand who should eat Go and why. If you are not a corporation or a startup that is developing smart network metacaradigm petaclusters, then you most likely do not need Go, specifically you. Noooo, should you be in one of these offices, Go will definitely come in handy. Teach Go boys, it's worth it.
Thank you for your attention,