- Actors (local or remote): http://akka.io/
- STM: http://nbronson.github.io/scala-stm/
- Futures/Promises in the standard library: http://docs.scala-lang.org/overviews/core/futures.html
- Async (e.g. C#'s async): https://github.com/scala/async
- RxJava Observables: https://github.com/Netflix/RxJava
- Iteratees: http://www.playframework.com/documentation/2.2.1/Iteratees
- Scalaz Streams: https://github.com/scalaz/scalaz-stream
And the list can go on.
* 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.
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
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:
Rich Hickey is really good about why Callbacks are terrible (and that's why he implemented CSP in clojure):
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.
http://de.slideshare.net/wooga/erlang-the-big-switch-in-soci...