aboutsummaryrefslogtreecommitdiff
path: root/content/blogs/programming_languages/Go.gmi
blob: 1f2e8b2accfef16190983df0517c61dc11192a96 (plain) (blame)
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
Golang... Go is quite a funny language to me. I have a hard time taking it seriously, not because of the name, but because of the way it handles. 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 weird chills I get whilst working with it (I just had to get that off my back, for the record), I think Go is a pretty nifty language. Go has the "I can do anything! just not very well..." [0] feeling to it, and it is very much true! I don't write software in Go because it "fast!" or "great on memory!", I write software in Go because it "fast! ...", "to write in!".

> [0] Having the aforementioned quality to it is not particularly a bad thing, I think it actually benefits Go!

Now, allow me to list some pros and cons that I have to say about Golang with some things to note while reading:

These are ...

* in no particular order
* my opinions!
* things that aren't explicitly advertised

## Pros

Reasons for anyone to learn or to use Go!

* Fast enough: Not Rust fast, but not Python slow
* Lots of resources (books, documentation, libraries, tutorials, et cetera)
* Quite easy to pick up (having had prior experience with C-like programming languages)
* Can do just about anything!

## Cons

Nitpicks, not deal-breakers!

* Garbage collected: Not necessarily a hard-con, but contributes to more memory overhead (not as much as Node.js though)
* Can be too simple at times
* Creepy dependency management and "package manager": `$ go get ...` seems pre-mature and underdeveloped

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 it's simplicity, it's 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
* want to get into 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