"In praise of Go" discussion on ycombinator

Steven Schveighoffer schveiguy at yahoo.com
Wed Nov 17 05:55:36 PST 2010


On Wed, 17 Nov 2010 02:56:09 -0500, Jay Byrd <JayByrd at rebels.com> wrote:

> On Wed, 17 Nov 2010 00:58:28 -0500, Steven Schveighoffer wrote:
>
>> On Wed, 17 Nov 2010 00:24:50 -0500, Andrei Alexandrescu
>> <SeeWebsiteForEmail at erdani.org> wrote:
>>
>>> On 11/16/10 9:21 PM, Steven Schveighoffer wrote:
>>>> On Wed, 17 Nov 2010 00:10:54 -0500, Andrei Alexandrescu
>>>> <SeeWebsiteForEmail at erdani.org> wrote:
>>>>
>>>>> http://news.ycombinator.com/item?id=1912728
>>>>>
>>>>> Andrei
>>>>
>>>> "I like go because every single feature go has is the best ever!"
>>>>
>>>> yawn...
>>>>
>>>> -Steve
>>>
>>> I'm curious what the response to my example will be. So far I got one
>>> that doesn't even address it.
>>
>> It's possible that you left your point as an exercise for the reader, so
>> it may be lost.
>>
>> But it's not important.  It's unlikely that you will convince goers that
>> the language deficiencies are not worth the advantages.  Only time will
>> tell how popular/useful it will be.  That one point you made would be a
>> deal-killer for me (not that I'm close to using Go or anything, but no
>> need to invest any more time on it after that).
>
>
> The problem pointed out can readily be fixed by requiring statements to
> have at least one token.

Yes, but instead of that, they decided to point it out in the tutorial and  
documentation, it's on you to not make the mistake, not them.  Makes you  
feel like they said "yes, we noticed that you can have that problem, but  
we don't think it's a big deal, just remember to be careful."

Being someone who likes the "brace-on-its-own-line" style, I can't really  
see myself getting past that part.  And I don't really have any other  
complaints about Go, I've never used it.  This one issue needs to be fixed  
for Go to be considered a serious language.  Hopefully they realize this.

When a language has an error-prone issue, one that allows you to write  
valid code that is never desired, but looks completely correct, it results  
in buggy code, period.

An instance of this in D was the precedence for logic operators and  
comparison operators.  x | y == 5 was interpreted as x | (y == 5).  This  
was thankfully fixed, and it's a very similar issue to Go's mistake.  With  
all the experience people have with designing languages and code analysis  
by compilers, there are no excuses to have something like this get into a  
new language.

The best thing to teach Go's creators about how bad this is is to make the  
change you suggest and see how their standard library fares.  This has  
been instrumental in having such changes made to D (for example, the logic  
operator thing found about 6 cases in phobos where the code was incorrect).

> go has much more severe problems than that. And
> there are plenty of bugs and mistakes in D, harder to fix, that could be
> deemed "deal-killers" by someone with an axe to grind. It's not an
> intellectually honest approach.

I agree that D has hard to fix mistakes.  The glaring one IMO is lack of  
tail-const for classes.  It's a huge hole in the const feature set and I  
can see people being turned off by it.  Another is lack of runtime  
introspection, or the conservative GC.

That doesn't mean D is worse or better than Go.  It's just that Go is a  
non-starter (at least for me) without fixing that mistake.  If they fixed  
it, would I start using Go?  Probably not, I have too much other things to  
do.  But if Go was around when I was looking for a language to switch to  
 from C++ 4 years ago, that one issue makes the decision a no-brainer.

>> (cue retard's comment about D zealots not having any open mindedness)
>>
>> -Steve
>
> No zealots are open minded. That's why I'm a supporter of various things
> but not a zealot about anything.

I consider myself not to be a zealot either (but definitely biased).  The  
comment was a friendly dig at retard, that's all ;)

-Steve


More information about the Digitalmars-d mailing list