Live data from Hacker News

Go: Ten years and climbing

commandcenter.blogspot.com

171–180 of 193 posts

Re: Go: Ten years and climbing

#171

I've been writing Go professionally, full-time, for the past five years. I'm a polyglot, so before Go, I loved exploring every new language I could get my hands on[0]. I still do, for fun, but Go is the one language that has kept me hooked all this time. It's not for any single feature, or for the community (though that's a great part of it). It's because it's the only language which I feel gets out of the way for me…

What exactly makes Go more powerful or better tooled than Java?

Re: Go: Ten years and climbing

#172
post #26

I appreciate the ruthless design choices behind Go. Crafting a language so there are as few ways as possible, and preferably one, to solve a problem must be beautiful at a large scale organization. In my experience java codebases in big companies are nightmare factories because of the freedom you get from more similar languages. The Go dream of having a single decent solution to a problem instead of 20 that range fro…

I think you've misdiagnosed things here.

Large Java codebases in giant companies are often very poor because:

1. Giant non-software companies often have low hiring bars for their software teams.

2. They are full of bored programmers working on boring software, these people then find ways to make their lives more interesting and kill the time by over-engineering things.

3. These codebases are often very large, old, and have suffered many requirements changes with little or no time allocated to clearing technical debt.

There's nothing in Go that'd make any of these things better. It may superficially appear this way because Go is, in the grand scheme of things, still quite new and hardly used in the enterprise (because it doesn't solve anything better than Java), and as such there aren't any large enterprise codebases written in it. But if you compare the language features, it's hard to explain what would make Go result in better quality software than Java and easy to find things that'd make it worse.

Re: Go: Ten years and climbing

#173
post #102

Having dealt with enough spaghetti code over the years (just a few of industry experience, and some more years of academia), I understand what Go's strengths are. It's an opinionated language that stops users from being too clever or writing code that's too complex. That said, I've always hated the trends that have brought Golang into popularity. The engineers I've felt who could benefit from Golang the most could al…

> I'm a much bigger proponent of languages such as Rust or Haskell which give the developer the _tools_ to ensure their own data integrity As a big Rust proponent, I don't think it makes sense to invoke Rust here. The goal of Rust is to provide a more secure low-level foundation for software; any tools it provides to "ensure data integrity" are in service of that end, and pale in comparison to the sort of correctness…

I think the big concern is not so much rewrites from C to Go (more or less anything would be better than C), but the fact that there are other choices that'd likely lead to substantially better code which could have been taken but aren't.

Re: Go: Ten years and climbing

#174
post #24
post #9

Earlier quoted context omitted.

a developer who hasn’t heard of Go must live under some special kind of rock

A rock with ".NET" written on the side of it.

ah, "microsoft people." Left that rigorously-walled garden a long time ago without looking back... it was the right move for me.

Re: Go: Ten years and climbing

#175

Earlier quoted context omitted.

Is there an editor that supports jump to definition for macros?

I don't know. I have a hunch that lots of macros still will be better with the new macro system, but we'll see. Anyway, regardless, there's certainly more work to do! And it's being actively developed quite heavily. For example, it will be on stable Rust very soon.

Thanks.

Re: Go: Ten years and climbing

#176

Earlier quoted context omitted.

Hopefully it's a very good kind of rock where there are no bad languages like Go.

what makes it a bad language? have you written much in it? what didn't you like/couldn't you do?

Unfortunately I have to write it nearly every day in my job at Google. The biggest failures are the lack of generics or any form of immutability. It's basically impossible to write any kind of abstraction in Go. That's unacceptable for a language created in the 21st century.

Re: Go: Ten years and climbing

#177

Earlier quoted context omitted.

It is certainly a fantastic solution, and I definitely appreciate the work that Sam Boyer and the `dep` contributors do. There's a lot of "gotya"s with using dep though. One that gets me a lot is the fact that I like to commit my vendor folder, just for faster CI. So if I committed my vendor folder with a copy of "k8s.io/client-go", and then in a different project I imported a package from my vendored project, it wou…

Ok, but why would you do that? Either just vendor it in the new project (copy-paste a directory) or download it to your gopath and import that. The nice thing is that you don't have to change the import when you decide to vendor.

I think you misunderstand.

If I have project A, which imports dependency A. I (for faster tests is the only real answer), decided to commit the vendor folder.

Now, in project B, if I import a package of project A, which uses dependency A, it will look for that specific version of dependency A. Specifically errors like this:

  pkg/projectb/example.go:18:30: cannot use *w (type "github.com/dependency/pkg".Example) as type "github.com/project/a/vendor/github.com/dependency/pkg".Example

It's not a big deal because if I just remove "github.com/project/a/vendor" from my $GOPATH then the problem is resolved.

because of this, I guess my real complaint here is that "vendor" doesn't seem to be the right word. I'm really just looking for something to complain about.

Re: Go: Ten years and climbing

#178

Earlier quoted context omitted.

(NOTE: I am not a gopher) I thought godep was that? It's marked as suitable for production now, and I think official as of their next release. https://github.com/golang/dep

>(NOTE: I am not a gopher) I thought godep was that? It's marked as suitable for production now, and I think official as of their next release. I didn't realize they were working on solving this, that's fantastic. Hopefully it can gain traction.

github.com/golang/dep is actually an already fantastic (and official) solution.

Re: Go: Ten years and climbing

#180

Earlier quoted context omitted.

> but I was heavily impressed by both Goroutines and channels as ideas You know they didn't invent this right?

goroutines are definitely unique to go. I'm sure the approach/style has been done before but this implementation is pretty unique to Go.

What is unique about it besides having the name of the language as a substring?
Post reply on HN