On 17 June 2013 18:39, Jeff Schnitzer <[email protected]> wrote:

> On Sun, Jun 16, 2013 at 3:37 PM, Andrew Gerrand <[email protected]> wrote:
>
>> On Sunday, June 16, 2013 4:15:54 AM UTC+10, Jeff Schnitzer wrote:
>>
>>>
>>>  * No exceptions. This (and the "debate" around it) is just silly.
>>>
>>
>> There is a much discussion about these topics on the golang-nuts mailing
>> list. The issues are complex and subtle, so your dismissiveness is not very
>> productive here.
>>
>
> I've followed several of these topics, as well as the occasional HN
> thread. Go advocates don't tend convey their opinions in subtle or complex
> terms; mostly they seem to be grinding some sort of ideological axe forged
> in the world of C++ systems programming where exceptions are broken. I can
> appreciate that, since I spent my first six years out of college writing
> C++... but so far, every argument I've heard for abandoning exceptions
> looks preposterous when you're 40 stack frames and three RPCs into a
> multi-hundred-thousand line system that 50+ engineers have been hacking on.
>

People on all sides of language debates tend to be frustratingly combative,
and I'm sorry that some Go fanatics are not exempt from this. For what it's
worth, I've found there's way more vitriol directed toward Go than there is
from Go fans toward other languages. Not that it makes much difference.


>  While IDE support for Go is still nascent, the team is working on
>> improving it. For instance, check out the new ssa 
>> package<http://godoc.org/code.google.com/p/go.tools/ssa>,
>> which enables whole-program analysis and should power some impressive IDE
>> tricks. Please don't mistake the relative immaturity of our IDE support
>> (compared to, say, the decades of work spent supporting Java) for
>> disinterest. We're working on it, but doing it right (which we pride
>> ourselves on) takes time.
>>
>
> Great to hear, but I can't resist pointing out that less-mature languages
> like Ceylon and Kotlin have come out-of-the-gate with first-class IDE
> support. The language designers were thinking about tooling from inception.
> I worry about languages like Scala where tooling was an afterthought;
> fortunately Go seems to be quite a lot simpler.
>

Tooling was not an afterthought for Go, but we definitely prioritized
building a stable, useful, and fast language over IDE integration. With
that said, from day one we have been working on the infrastructure to
support tooling. For instance, there has been a Go parser in the standard
library since launch, and we have one of the best documentation stories of
any language out there (IMO).


>   It's pretty obvious that Go comes from old-school C hacker culture -
>> people that have probably never worked on webapps. So don't expect Go to be
>> suitable for writing webapps.
>>
>> On the contrary: I and many others have written many web apps in Go, and
>> we're having a great time. Go's greatest strength, IMO, is simplicity and
>> readability. I can have way more confidence in the correctness and
>> robustness of a Go web app than, say, a Python app (where any expression
>> can raise an exception—did I handle all the cases? I can never know).
>>
>
> I should more properly specify "business web apps"; hell, people still
> write webapps in Perl.
>
> FWIW, I don't find Python very suitable for business computing either -
> dynamic typing is a disaster in large codebases with large teams (oh, get
> me started on Ruby sometime...). But the complaint about exceptions is
> peculiar, because people who write webapps rarely care about handling
> exceptions at that level of detail. 99% of the time, you catch the
> exception at the top level of the request handler, return a pretty error
> page to the user, and log a nastygram for the developers. Exception gets
> thrown, exception gets caught, and the server keeps going on its merry way.
>
> On the other hand, the risk that someone will ignore an error condition
> and just keep on plowing forward is severe. This problem plagued the C and
> C++ apps I once worked on, and still plagues the Node.js apps I sometimes
> consult on today. Eventually your app stops working, but often at a point
> of execution long removed from the original error and without any of the
> original context (stacktrace? hah!).  These are the types of bugs that you
> can spend *days* hunting down.
>

I review thousands of lines of Go code written by Googlers every week (I'm
a Readability Reviewer, part of the process we have for teaching good
style) and of all the issues I point out in people's code, missed error
checks are very rare. This is my genuine observation from years of
experience. Take from that what you will.


> I'm not trying to bash Go. It strikes me as an improvement on C++ and
> appropriate for the same sorts of things I would otherwise apply C++ to.
> But I wouldn't write my startup's webapp in Go for exactly that reason -
> it's too low-level.
>

Yet there are many startups who have built their web apps in Go, and
they're really very happy with it. Some examples:
https://code.google.com/p/go-wiki/wiki/GoUsers

The reason I have gone to the trouble of replying here is not to "set you
straight" or whatever, but rather to provide a contrary perspective. I know
there are a lot of people who are not just happy with Go, but have said
things like "I am enjoying programming again for the first time in years."
It may not be the right thing for you, Jeff, but I don't want to dissuade
other programmers (and App Engine users) from giving Go a shot.

Andrew

-- 
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/google-appengine.
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to