Hacker News new | ask | show | jobs
by conistonwater 3187 days ago
Where do you see this in the paper? They say concurrency errors are mostly the usual things like deadlocks and race conditions, but those absolutely do exist in every language.

Also, what do you mean most of these languages wouldn't be considered when concurrency is required? Concurrency is bog standard everywhere.

It seems like the way the define a bug, a performance bug would be a bug relative to expectations, per project, so you can definitely have a performance bug in Go or Haskell, for example, if something works slower than developers think it should (as opposed to being slower than some external reference code or something). So maybe it's closer to something like "developer control over unexpected underperformance"?

2 comments

Not even every language in that study supports concurrency, as the study itself points out. I hear a lot of praise for Go because of how much people like doing concurrency with it. The fact that they observed a higher rate of concurrency bugs in Go could just as easily support the interpretation that Go is good for concurrency as it does the interpretation is bad for concurrency.
Since Go makes concurrency easier and encourages its use, there’s going to be a lot more concurrency bugs. By contrast languages like Python don’t even have proper parallel threads, so fewer people will write concurrent python programs and fewer bugs will arise. This is a confounding factor found in one sort or another throughout the survey.

It’s good that they did this research but unfortunately they couldn’t account for everything.

They talk about this, and did do some sort of things to account for it a little. That's why the conclude that more so then overall defect, languages are more correlated to categories of defects.
Some languages (like Clojure) very significantly reduce the possibility of thread-related bugs. Clojure in particular was designed with multi-threading in mind, so I think it is a fair point that some languages will have more trouble with this than others.

Try multithreading in C++ vs Clojure and the difference in amount of effort is well beyond trivial.