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

This is entirely true, concurrency is hard and hiding it away is not helping anyone. The two abstractions that work really well are monads and CSP (channels and share-nothing threads).

However, at least when using Python, it's not always an option to only use concurrent code. Many useful libraries rely on blocking APIs and greenlets are more predictable than threads and cheaper than both threads and processes.

Not even Go gets this right: goroutines share memory implicitly! There are few real options: Clojure+core.async, Haskell, Erlang. Python+Twisted or similar would also be an option, but it's annoying to write and means you have to ignore most libraries out there, at which point you might as well use a better language in the first place.



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

Search: