Sunday, January 01, 2012

Why I probably won't spend time on Go in 2012

Unlike most people, rather than resolving to do things during the New Year's holiday period, I mostly resolve to not do things. This year one of my resolutions is to not learn Go.

I've been annoyed by a lot of the trolling by the Go fan club (I don't know if they are working on the language or just have an excessive enthusiasm). What I find to be in bad taste is that they will often criticize other languages and then say, "Oh by the way, Go doesn't suffer from the same flaw." I may disagree with some programming language design choices. I'm not afraid to express my disagreements. That does not mean I believe in tearing down other languages as a way of promoting my preferred language (which as anyone who has read this blog knows is Clojure).

I could live with that. I was disappointed to see Rob Pike's recent blog post, to the point that it really killed the limited enthusiasm that I had for the language. There are two reasons it is a problem. (a) In the business of language design, you need a thick skin. The community needs to feel comfortable providing feedback, or the language will suck. In my opinion that is the most important stage for the development of a programming language. (b) He comes across as assuming he knows better than the developers what the developers need. He may know more than me what it takes to put together a modern programming language (as opposed to, say, Fortran IV). He has no idea what I need. If he's not willing to listen to criticism, that means he's not willing to change the language, and that's a very serious problem.

I wasn't that excited about the language anyway. This has made clear for me that Go isn't for me.

Edit: Removed the last two paragraphs. I don't want to go there. It read like an attack based on personality and was not appropriate for this blog.

6 comments:

Tassilo Horn said...

I think Rob makes some valid points about people complaining about missing features they know from other languages. If that was a good criterion every new language would need to contain a super set of all previous languages features that sometimes proved beneficial. In my opinion Go has some interesting new features like channels and its type system. Those might be more important in the domain Go is targeting than, say, generics.

I can't say anything about Go fans bashing other languages, though. But at least Rob doesn't do so in his blog posting, and I agree with him that no one is qualified to judge a language before gathering a certain level of understanding so that one's able to write somewhat idiomatic code.

The same is true for Clojure as well, and every few months someone wants to "cure" its syntax. Probably Go's Java/C like syntax is one major cause why some people demand those languages' features being there in Go, too...

Michael T. Richter said...

I dropped Lisp from consideration because of the hostile community of the time. (Look up Erik Naggum for why.)

I gave up on Python as a viable platform because, as you said, Guido's unprofessional behaviour leads me to not trust that he will support his language when there are problems.

I stopped using the Ruby language for anything other than quickly-hacked scripts when the community moved from MINSWAN ("Matz Is Nice So We Are Nice") to David Heinemeier Hansson-style "fuck you".

In the end, community matters, no matter what members of the community say or think.

lmf said...

@Tassilo

You are correct (AFAIK) that Rob hasn't been launching attacks on other languages. It's the community. Enthusiasm is fine, but sometimes they can go overboard.

@Michael

Assuming by "Lisp" you mean Common Lisp, I've written in other posts about their community. All Lisps suffer from community members acting like their language is magic pixie dust that transforms bad code into good.

cwallenpoole said...

Could you provide a link to these comments by Guido?

lmf said...

@cwallenpoole

I've deleted the last couple of paragraphs. When I write a post, I try to spend no more than 15 minutes, and sometimes say things that I shouldn't (or that simply make no sense). What I had written was an unnecessary personal attack.

lmf said...

By the way, if you were asking about the "tail recursion elimination" stuff, one link is here
http://neopythonic.blogspot.com/2009/04/tail-recursion-elimination.html
and another is here
http://neopythonic.blogspot.com/2009/04/final-words-on-tail-calls.html