←back to thread

159 points mpweiher | 1 comments | | HN request time: 0s | source
Show context
fpoling ◴[] No.43672325[source]
I once read a book from 1982 that was arguing about CSP implementation in Ada that it lead to proliferation of threads (called tasks in Ada) and code complexity when mutex -based solutions were simpler.

Go implementations of CSP somewhat mitigated the problems raised in the book by supporting buffered channels, but even with that with CSP one end up with unnecessary tasks which also brings the problem of their lifetime management as the article mentioned.

replies(1): >>43672360 #
sapiogram ◴[] No.43672360[source]
Unfortunately, Go also made their channels worse by having their nil semantics be complete lunacy. See the "channel API is inconsistent and just cray-cray" section in the article.
replies(1): >>43672748 #
chuckadams ◴[] No.43672748[source]
The fact that Go requires a zero value for everything, including nil for objects like it was Java and the 1990's all over again, is one of the reasons I'm not particularly inclined to use Go for anything. Even PHP is non-nullable-by-default nowadays.
replies(3): >>43672857 #>>43673013 #>>43676795 #
1. int_19h ◴[] No.43676795[source]
It's worse than that, though, because in Go you have many different kinds of nil once interfaces enter the picture.