1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
|
=> https://www.ardanlabs.com/images/gopher-kart/other-gophers.png
To kick it off: Go is funny language. I have a hard time taking it seriously, and that's not because of the name, but because of the way it "feels". Don't get me wrong, Go is a **great** tool to have under your belt, but it just feels very ... "childish" ... to **me**.
Other than the chills I get whilst working with it, I think Go is a pretty nifty language, and I'm sure you'll pick up on that further down in this blog post. If anything, the above statements were icebreakers, but also my genuine feelings. :=
Go has the "I can do anything! just not very well ..." [0] feeling to it, and that is very much true! I don't write software in Go because it's "blazing fast!" or "great on memory!". I write software in Go because it's "fast!" to write in.
> [0] Having the aforementioned quality is not particularly a bad thing, I think it actually benefits Go!
Now, here are some pros and cons that I have gathered up during my experience with the language:
These are in no particular order, and solely **my** opinions.
## Pros
Reasons for anyone to learn or to use Go!
* Fast enough: Go isn't Rust fast, but it's not Node.js slow.
* There are **lots** of resources. (books, documentation, libraries, tutorials, et cetera)
* It's quite easy to pick up. (having had prior experience with C-like programming languages)
* Go can do just about anything you pin at it.
* It runs on Plan 9!
## Cons
Nitpicks, not deal-breakers!
* Garbage collected: This isn't necessarily a hard-con, but it contributes to more memory overhead that I'd prefer not to waste. (not as much as Node.js, though)
* Go can feel *too* simple stupid at times, and not in a KISS way.
* The dependency management and "package manager" is downright creepy: `$ go get ...` seems extremely pre-mature and underdeveloped, even many years into Go's life
One thing you might see a lot when there is talk about Go is the claim that Go hasn't "found it's niche" or "it has no real purpose". To that I say: Go's niche is its simplicity, its ability to introduce someone into the compiled language space, and to develop software with speed.
## Who Would I Recommend Go To?
People who ...
* don't have much time for boilerplate material,
* people who want to get their foot into the lower-level side of programming, (or compiled languages)
and dare I say it ... anyone!
## Resources
=> https://golang.org/ golang.org
=> https://interpreterbook.com/ Writing An Interpreter In Go by Thorsten Ball
=> https://compilerbook.com/ Writing A Compiler In Go by Thorsten Ball
=> https://go.dev/wiki/Plan9 Go Wiki: Go on Plan 9
=> https://9lab.org/plan9/go/ Plan9/Go
|