Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

I still can't figure out what Go is supposed to bring to the table that Erlang doesn't. From [0], CSP mostly differs from Actors in that multiple actors can listen on the same channel? Is that a unique line of PL research? Or was it just a success to replace Erlang's funny syntax and minimal type system with a C-inspired syntax and an embarrasingly bad type system? I guess my real question is, what does Go do better than Erlang?

[0] - http://programmers.stackexchange.com/questions/206784/erlang...



As someone who has shipped both Erlang and Go in production, I feel I can somewhat answer this.

Teams. Go does "teams" better. Shipping an Erlang app to production was simultaneously one of the happiest and most depressing points in my career.

Happiest because it did exactly what we intended with minimal code and it was done early and under budget (yey!). The initial group liked Erlang, already knew Erlang and simply were able to bang it out -- delightful!

Depressing because of everything that happened after... trying to teach DevOps crew was a nightmare, they HATED us -- all that introspection you can get on an Erlang system only makes sense after lots of experience. Trying to hire people who already knew Erlang was borderline impossible. Worse still, hiring people who didn't know Erlang and trying to train them up was swimming upstream in multiple ways -- it just didn't work. Erlang is really a bit of its own thing -- and if you are absolutely new to it, very hard to get over the hump... it is a weird pragmatic FP actor system and lacks any sense of purity or type niftyness.

... For initial development, Go was less elegant than Erlang, but due to simplicity and really solid tooling probably slightly more productive, but not so much that I would favor it over Erlang. But the magic happened when we involved other people. Handing off to DevOps was a DREAM... it was just a binary that logged stuff. They didn't need to know anything about what was in the black box. Hiring people is already relatively easy for Go, and training up developers in it is a AMAZING. You can hire basically any competent developer and a week later you have a competent Go developer... 50 page spec and dead simple language works wonders. No debates about code formatting, builds static binaries in seconds, super-easy to experiment with from minute one (versus getting your head around OTP).

I consider myself a programming language geek, I program in dozens and dozens of languages, and love building my own little DSLs. Go is -- breathtakingly boring as a language, "exceptionally unexceptional". Honestly, it isn't much fun at all to program in, it is a bit of a grind. However, Go as a tool (when the language isn't the point, the product is, your customers are) is amazing... it is viciously focused on getting things done on teams, and so far, it has been an incredible asset to our team.

I still follow and toy with Elixir in hopes that it will hit critical mass, but wasn't willing to bet my livelihood on it as a founder.


The differences aren't that huge, maybe the biggest ones are FP orientation, and static typing. That and Go is relatively simple. Thee tooling for Go is excellent, and the network effect of that is huge.

People like to complain about the type system or genetics, but it doesn't seem to be a big problem in practice.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: