On Monday, 31 March 2014 at 09:18:08 UTC, Russel Winder wrote:
On Sun, 2014-03-30 at 16:01 +0200, Paulo Pinto wrote:
[…]
They are quite interesting to follow, given some of the more
opinionated long time community members.
For those not following golang-nuts, the above is a wonderfully
understated comment. This is very much the English/Stephen Fry
use of
the term "quite interesting" :-)
Sometimes I wonder if anyone would care, if the language
wasn't sponsored by Google.
Actually yes. Though perhaps it would not have been so widely,
nor would
the traction have been so high and so fast. The point here is
that Rob
Pike has been working on message passing languages for decades:
Newsqueak, Alef, Limbo,… and Go is the breakthrough of this
sequence
into the mainstream. For those of us who have been working on
message
passing systems, Go represents a very important language since
it brings
processes and channels based message passing to the masses (of
programmers).
It is abundantly clear that shared-memory multi-threading is an
operating system and infrastructure technique along with locks,
monitors, semaphores, etc. and has been since the 1970s. The
Java
community are just beginning to wake up to this, pushed by
Scala folk
and the fact that Doug Lea, Brian Goetz and a host of others'
work is
finally getting proper recognition, not least in Java 8.
Actors have sort of become a bit popular as an asynchronous
process and
message passing technique, but it is just one of many
concurrency and
parallelism architectures, the two most obvious of which are
dataflow
and Communicating Sequential Processes (CSP) – Go's system is a
kind of
variation on CSP. And then there is data parallelism. D sort of
has
actors. D's data parallelism is unsophisticated compared to
that of Java
8. Go, PyCSP, Python-CSP, JCSP and GroovyCSP are the only even
part-way
known about CSP implementations. DataRush and Groovy are the
only part
way known about dataflow systems.
I pushed Anthony Williams to get an actors and dataflow library
for C++,
and this is progressing nicely, albeit a bit slowly. Hopefully
it will
get into Boost.
The question for D is whether Go has already beaten D simply
because of
goroutines. Sadly I have to say yes. As do Google and
Canonical, though
they are probably not sad about it, they are just getting on
with
implementing lots of systems in Go.
Whether Rust turns into a "disturbance in the C/C++/D/Go
force", we
shall see.
Syntax notwithstanding, do you see any reason why goroutine-style
CSP couldn't be implemented as a library in D?
I know little about this area but at a brief glance it doesn't
seem a particularly difficult problem.