Does Go question my identity
As part of a discussion of back-end languages on the Elm discourse someone linked to a post (from 2014) regarding why everyone hates go by Nate Finch. The author links to a Paul Graham post regarding identity, and he links the two. So Paul’s post states that people form identities regarding religion and politics and that’s why it is so difficult to have a meaningful debate about either. Considering the alternative view point questions your identity.
The key point in Paul’s post is:
people can never have a fruitful argument about something that’s part of their identity
Which Nate links to hatred for Go, because Go tends to eschew many of the things we think we know are good for programming, for me that is at least ‘generics’, for other’s it is no exceptions, classes, immutable data types etc. The point is, this would all be fine except that Go has become very popular, and is being used to build excellent software. It is reminiscient of the hatred for PHP. It is hated not so much for going against our ideals, but for doing so and being successful. Because this means that really we should be questioning our ideals, are generics really that essential.
One of my particular bug-bears for Go, is the near constant claims that Go is a simple language. I just do not find it to be such. I find it quite complicated. Slices for example seem a pretty complicated construct in comparison to how lists are done in most functional languages and even iterators are done in Python. The packaging system seems pretty complicated in comparison to several others. Though I do see how you might consider it a simple language if you’re comparing it to Haskell or C, even Java and Rust are arguably more complex. Still, I guess I’ve got a bee in my bonnet about it, because if you want to see a simple language, there are much better examples, of which Elm is clearly one.
Still, I have to consider, is it possible I cannot seem to grok Go, because deep down I don’t really want to, because then I would have to do all the dirty and difficult work of re-evaluating things I thought I knew about programming languages, such as generics are probably a good thing.
Towards the end of Paul’s post he states:
The most intriguing thing about this theory, if it’s right, is that it explains not merely which kinds of discussions to avoid, but how to have better ideas. If people can’t think clearly about anything that has become part of their identity, then all other things being equal, the best plan is to let as few things into your identity as possible.
That seems like a good idea, I’ve already done this to some small extent, I try to never think of myself as ‘Left’ or ‘Right’ in terms of politics, though that is quite difficult. However, I hadn’t even considered that this might affect how I see programming related discussions. So, I need to at least stop thinking of myself as a functional programmer or an Elm programmer, I’m just a programmer.