Live data from Hacker News

Six years of Go

blog.golang.org

321–327 of 327 posts

Re: Six years of Go

#321
post #271
post #200

Earlier quoted context omitted.

`#go-nuts` is a very angry place.

I tried to go there to ask some questions while picking up the language, and what I got was RTFM, where manual includes the language specification, Effective Go book, and A Tour of Go. Apparently you're unfit to ask a question unless you know everything about the language already. Killed my excitement for learning the language.

Sounds like a sadly universal experience. It's really unfortunate — Go is an interesting language, but the place they tell beginners to go to interact with the community is so utterly toxic to anyone who wants to ask any kind of question.

Re: Six years of Go

#322

Earlier quoted context omitted.

I'm a computational biologist that recently ported our webserver (genestation.org) from Tripal (PHP/Drupal) to Go. The performance gains were huge, but the simplicity of development and deployment was even better. I'd strongly recommend Go for a biology web server. However, Biogo is not remotely as far along as Biopython or Bioperl. Also, Perl beats Go for ease of string handling. Unfortunately, there is no equivalen…

Thanks. They new site is snappy. Tripal I had never heard of. It uses "Chado" db schema which I have heard of (though flybase) which while flexible isn't always performant. Performance gains and simplified development are so appealing (I have 12 tools to maintain in Java/perl/php).. Biogo is what I was looking for. https://github.com/biogo/biogo

Chado does have substantial performance problems for use as a webserver backend. We use elasticsearch for full-text search and as JSON document store, which improves performance substantially.

Re: Six years of Go

#323

Earlier quoted context omitted.

This isn't remotely true. CSP via goroutines and channels is idiomatic Go, but it's not the only option. Go offers mutexes and other concurrency primitives which, along with goroutines as lightweight thread analogues, allow what you're looking for.

The real problem here is that Go does not allow a user to create their own powerful concurrency primitives. Locks exist, but you can't create a synchronized data structure. You can't create your own channel type because that's a generic thing which is reserved for the language authors, not the language users. The whole point of modern programming is to create useful abstractions that allow a programmer to get things…

I'm not sure what stops someone from creating their own channel types.

type MyChannelType chan MyStruct ?

Re: Six years of Go

#324

I have a bit of a love-hate relationship going on with Go. On one hand, it addresses many of the pain points I've experienced with other languages. It's easy to build and deploy, reasonably performant, and has a powerful and consistent standard library. On the other… developing in it feels like a total slog. It manages to be simultaneously far too anal and overly forgiving about syntax. Visibility definition using up…

Perhaps you are not smart enough.

Re: Six years of Go

#326

Earlier quoted context omitted.

https://github.com/nicksardo/jsonpath can pull out parts of a JSON document without unmarshalling.

That's really neat, thanks (do you have any benchmarks comparing it to Go's JSON?), but doesn't cover my use case. I want all the values in a map-like API. I don't know anything about the shape of the contents, names of the keys, etc.

Which libraries have you looked at? https://github.com/pquerna/ffjson and https://github.com/benbjohnson/megajson claim to be faster

Re: Six years of Go

#327
post #326

Earlier quoted context omitted.

That's really neat, thanks (do you have any benchmarks comparing it to Go's JSON?), but doesn't cover my use case. I want all the values in a map-like API. I don't know anything about the shape of the contents, names of the keys, etc.

Which libraries have you looked at? https://github.com/pquerna/ffjson and https://github.com/benbjohnson/megajson claim to be faster

Looked at both. ffjson is a library that generates the marshaling/unmarshaling Go code for your structs, so it doesn't support my use case at all. megajson is abandonware ("This tool is unmaintained. Please use ffjson instead").

go-codec [1] is very good, and can do things like interning string keys to reduce allocation overhead, but it's not faster than encoding/json when working on plain maps.

[1] https://github.com/ugorji/go

Post reply on HN