Hacker News new | ask | show | jobs
by ivanplenty 4533 days ago
I love Scala as a language and would encourage you to learn it on the way to becoming a more rounded programmer. It does have its warts, and compile times kill me. On HN the two common recommendations are:

* Go

* Node.JS (with Promises while we wait for generators!)

I personally use node for large-scale stuff since more people know JS, but a lot of this comes down to personal preference.

2 comments

Its interesting that you use Go (CSP) and Node.js (callback) and like them both. Generally CSP people belive that the Node.js approach leads straight to hell.

Rich Hickey is really good about why Callbacks are terrible (and that's why he implemented CSP in clojure):

> http://www.infoq.com/presentations/clojure-core-async

> https://github.com/clojure/core.async

"Like" is relative and based on tradeoffs. Loved Rick's talk, thanks.

This last year I worked on a project with people from the valley, we used Go, and everyone contributed quality code. This is because people in SF area know Go.

A year ago I worked on a project with people from the midwest, we used node, and got the same quality. Much fewer people in the midwest know Go.

Independent of my feelings about both environments, CSP, callback hell, etc, at the end of the day my team and I have to build a product, and I try to pick the tool that best matches our combined skillsets.

Absolutly. For some stuff node.js works perfectly well and knowlage is often the hardest thing to come by.
Thank you for your response.

Node seems promising (it's not techncially multi-threaded though?)

I wrote a little command-line RPS game playable over a local network in node: https://github.com/quantumpotato/node-rps

Didn't realize Go was good for many-connections, will have to check that out. TY

Node only runs on one core, you can start it more then once. This only works if the request well don't have to coordinate over the hole address space. You need to care all the shared state in a database, witch you don't really want to do.

Go, is pretty good for that and it helps to think about it. You can start on thread of control per request, like with Scala where you might start one actor per request but the difference is that you have first class channels to communicate. Witch is pretty powerful.

One the JVM you can do this CSP style where well with Clojure (https://github.com/clojure/core.async).

Interesting video why CSP is best:

> http://www.infoq.com/presentations/clojure-core-async