Live data from Hacker News

I’m joining the Go team at Google

spf13.com

141–150 of 211 posts

Re: I’m joining the Go team at Google

#141

Earlier quoted context omitted.

> Go is not a C replacement/better C. Its not a replacement for C in most of the places where C is far and away the best existing choice for a whole project, it is a replacement for C in the zone where C's performance and static typing are attractive and would decided the choice in its favor, but Python's expressiveness, batteries-included stdlib, etc. also make it attractive and make it a little bit painful that the…

Sure, but in those cases Java/Swift/C#/etc are also reasonable replacements. If you're not taking advantage of data locality then it's possible to approach C's performance in any of those languages. If your primary concern is performance(which is the only reason I'd reach for C today, esp w/ security concerns) then Go is not going to replace C in that domain.

> Sure, but in those cases Java/Swift/C#/etc are also reasonable replacements.

Well, Swift certainly wasn't when Go was introduced, but, yes, Java and C# were competitors in that role when Go was introduced (Java, even moreso at the time, tended to fall short on expressiveness -- which some argue Go does too, though in different ways -- and C# was deeply tied to .NET, which only had a first-class implementation on Windows; both of those have improved somewhat since Go was introduced.)

Re: I’m joining the Go team at Google

#142

Earlier quoted context omitted.

> And providing a better C. I keep seeing this come up and I wonder if people have actually used C in the domains where it matters. Go is not a C replacement/better C. You don't have control over what goes on the stack/heap which means you can't control memory layout. If you can't do that you're throwing away one of the key reasons you'd use C. Memory layout is critical to getting that 10-50x performance that you can…

> You don't have control over what goes on the stack/heap You do have this control. There is escape analysis, but I've never had to dance with it to make it put things on the stack when I need them to. I can get very close to C speeds with Go without much effort.

In that sense, Java and C# both have control too.

There are lots of cases in which escape analysis falls down. In particular, higher order control flow (closures/interfaces) will always cause it to fail, until Go implements some sort of higher order control flow analysis (which I doubt it will). Go uses interfaces a lot.

Re: I’m joining the Go team at Google

#143
post #40

Earlier quoted context omitted.

Lack of self-confidence if you ask me. How do you figure? Every time I've been asked for a bio for a conference or similar, they've asked for it in third person. Reading bios in conference proceeding in first person would just come across as weird to me.

The difference is having a bio on a website about yourself versus a bio on a website about a lot of people. No one thinks that your johndoe.com site was made by your official fan club.

You really named your user account after WHAM!? That's fucking awesome. Tell me you're either George Michael or Andrew Ridgey in deep disguise... please please.

Re: I’m joining the Go team at Google

#144

Earlier quoted context omitted.

> > That's much better than having an exception bubble up from deeeeep inside your code with some context-less cryptic message or number, isn't it? > I don't see how that follows. A stack trace (as initially cryptic as it seems) is a record of all the code that would have affected the current buggy state you find yourself in. You get stack traces in Java, C#, Python, etc. You don't get them in C++ (well, you aren't g…

But you agree that a stack trace is a tool to mentally reconstruct (read: "realign") your mental model of the state the code produces, with what really happened?

Certainly.

Re: I’m joining the Go team at Google

#145
post #66
post #31

> As I had before, I recognized that this technology had the potential to revolutionize how software was written at a fundamental level. Congrats and all, and I love Hugo (use it all the time). That said, I think the kool-aid was spiked with something. Sorry, but in what way is Go "revolutionizing"? I'd buy "refreshing simplicity" and "yay, static builds again" but it's hardly revolutionary, even in its most touted f…

Go's big success, in my opinion, was to fuse the lightweight, spawn a million threads we don't care, style of programming to conventional imperative, conventional static-type programming. I know of several other runtimes that had that lightweight threading capability, I've been using them since years before Go was even a thing, but they all required programmers to learn a new paradigm. At times, a radically new parad…

> I know of several other runtimes that had that lightweight threading capability, I've been using them since years before Go was even a thing, but they all required programmers to learn a new paradigm.

One of those runtimes is Ruby (Ruby uses lightweight threads, not OS threads), and Ruby is not a new paradigm.

Re: I’m joining the Go team at Google

#146

Earlier quoted context omitted.

I'm not a Java developer, so I'm interested to know what the amazing parts of IntelliJ are. When I look at it it just looks like they ripped off the skin from Sublime Text and it has some debugging features that are readily available in other editors. I get pretty much everything on https://www.jetbrains.com/idea/whatsnew/ in my vim setup.

All the refactorings and context-aware code completion, for starters. And as for ripping off, IntelliJ came out 7 years before Sublime Text.

Cool, show me a screenshot from, say, 5 years ago that looks like Sublime? From what I can see it looks something like this:

https://blog.jetbrains.com/idea/2011/10/new-in-intellij-idea...

I didn't say features, I said skin. Of course IntelliJ has been around longer.

If you like an IDE that's cool, no hate. I just get frustrated with the idea that I need one to be productive in certain languages. Give me Go and vim, maybe inside tmux, and I'll be productive immediately.

Re: I’m joining the Go team at Google

#147
post #133

Earlier quoted context omitted.

> And providing a better C. I keep seeing this come up and I wonder if people have actually used C in the domains where it matters. Go is not a C replacement/better C. You don't have control over what goes on the stack/heap which means you can't control memory layout. If you can't do that you're throwing away one of the key reasons you'd use C. Memory layout is critical to getting that 10-50x performance that you can…

If the constrained hardware is more powerful than a Xerox PARC Dorado (Mesa/Cedar), a ETHZ Ceres Workstation (Oberon), DEC Firefly (Modula-3), then Go is certainly a better C. Nothing prevents you to make use of statically allocated data structures, hands off from the GC if really needed. In spite of lacking a few features that I consider any modern language should have, ability to create memory friendly data structu…

> Nothing prevents you to make use of statically allocated data structures, hands off from the GC if really needed.

Only if you give up closures, interfaces, defer, strings, the entire standard library, and all sorts of other things that don't immediately come to mind.

Programming without the GC in Go is technically possible, but impractical. The language just wasn't designed for that (and this isn't a knock against the language--it just was a non-goal).

Re: I’m joining the Go team at Google

#149

Earlier quoted context omitted.

Promises and some other higher-order programming without generics are not really usable in Go.

Why would you need, or indeed want promises in Go? Doesn't a channel/channel-select fulfill this requirement? EDIT: the answer seems to be downvote . Okay.

I guess you are being downvoted because the comments above have nothing to do with promises.

Re: I’m joining the Go team at Google

#150
post #3

> What is missing from the Go ecosystem? Personally, golang "IDE" experience is not as good as Java or even C++. For example, ycmd only supports subset of functions for golang. I miss ycmd-goto-references the most.

Atom has surprisingly consistent and useful support for go - fmt on save, debugging, automatically manages imports in a file, and the autocomplete works very well.
Post reply on HN