comp.lang.ada
 help / color / mirror / Atom feed
From: jonathan <johnscpg@googlemail.com>
Subject: Some exciting new trends in concurrency and software design
Date: Mon, 20 Jun 2011 03:49:02 -0700 (PDT)
Date: 2011-06-20T03:49:02-07:00	[thread overview]
Message-ID: <8a5765ba-622a-42cd-9886-28ed7cfed31e@s17g2000yqs.googlegroups.com> (raw)


I've pasted below a few interesting passages from an
interview with Joe Duffy. Joe Duffy is lead architect on an
OS incubation project at Microsoft, where he is responsible
for its developer platform, programming language, and
concurrency programming model.

Despite the snarky title to this thread, I was seriously
pleased to see someone in that position of influence speak
well of a concurrency model I like, (and to speak with
some honesty about its history).

http://www.infoq.com/articles/Interview-Joe-Duffy#view_69430

The interviewer begins with:

   The reason we wanted to talk to you
   is that research into concurrency and
   parallelism appears to have taken a turn.

Joe Duffy:

   ...according to the past several decades
   of research, no, this isn't a major
   shift to how parallel programs are architected.
   The Actor model, introduced nearly 40
   years ago, was truly revolutionary,
   and made 1st class the notion that agents
   would concurrently orchestrate some
   larger interesting task through message
   passing. This general idea has surfaced
   again and again over the years, accumulating
   useful extensions and variants over
   time. Hoare CSP's, Liskov's Argus, Occam,
   Ada, MPI, Erlang, and more recently,
   languages like Scala, Clojure, and Go.

On the other hand:

   ... yes, this is a major shift for most
   of the development community, because
   mainstream programming environments
   are now adopting the ideas that we've
   seen in research and experimental languages
   over the years.

In 5 years:

   I fully expect that C#, C++, and Java,
   for example, will have Actor-based offerings
   within the next 5 years. In the meantime,
   developers on such platforms will experiment
   with new languages, and continue to
   increasingly build architectures in
   this style without first class support
   in their primary environment....
   In fact, a very specialized class of
   programmers on this planet -- technical
   computing developers in HPC, science, and
   on Wall Street -- are already accustomed to
   doing this with specialized toolkits, like MPI.

Which reminds me - one of the reasons I was more than
happy to see MPI become entrenched in these communities
is that it gives people like Mr. Duffy something to point to
in defence of this programming style.
When I use MPI, it feels just like Ada '83 tasking,
partly because (like all the other MPI'ers I've talked
to) by default I use blocking message passing (rather than
asynchronous non-blocking options, which tend to scale badly):

https://computing.llnl.gov/tutorials/mpi_performance/#Rendezvous

Like I keep saying, it's just a remote rendezvous as far as I
am concerned, and I have much good to say about it. I find it
promotes good program structure, and makes reasoning about
concurrency straightforward.

Regarding more advanced methods for eliminating race-conditions,
etc:

   We write C# and Java code without needing
   to worry about type-system holes. An
   entire class of program errors is eliminated
   by-construction; it is beautiful. The
   same needs to happen for concurrency-safety.
   But it sure won't be easy retrofitting
   these concepts into existing languages
   like C#, C++, and Java.

The defense of strong static typing is much appreciated.
(But still ... it's the 21st century.  I wish universities
had made this advocacy unnecessary.)

   OOP developers are accustomed to partitioning
   their program into classes and objects;
   now they will need to become accustomed to
   partitioning their program into asynchronous
   Actors that can run concurrently.

Mr. Duffy likes the asynchronous, but I note that after
years of development, the Go concurrency model seems to
have become less asynchronous and more Ada-like (iiuc):

http://groups.google.com/group/golang-nuts/browse_thread/thread/b877e34723b543a7

As of February this year,

   Non-blocking channel operations have been
   removed from the language.

   The equivalent
   operations have always been possible using a
   select statement with a default clause. If a
   default clause is present in a select, that
   clause will execute (only) if no other is ready,
   which allows one to avoid blocking on a communication.


In a similar vein, here's another very interesting story -
Carnegie Mellon University (CMU) is removing OO from
its introductory courses. What's interesting is
the reason they're doing it.

http://existentialtype.wordpress.com/2011/03/15/teaching-fp-to-freshmen/

Robert Harper (Prof. of Computer Science at CMU):

   Object-oriented programming is eliminated
   entirely from the introductory curriculum,
   because it is both anti-modular and anti-
   parallel by its very nature, and hence
   unsuitable for a modern CS curriculum...

Some more detail on this revolutionary idea:

https://existentialtype.wordpress.com/2011/04/16/modules-matter-most/

Robert Harper:

   Modules Matter Most

   When it comes to controlling the complexity
   of developing and, more importantly,
   maintaining a large system, the only
   game in town is modularity.  And as
   even the strongest proponents of unityped
   languages have come to accept, modularity
   is all about types (static types, of
   course, there being no other kind).
   ...
   We have for decades struggled with using
   object-oriented languages, such as Java
   or C++, to explain these simple ideas,
   and have consistently failed.  And I
   can tell those of you who are not plugged
   into academics at the moment, many of
   my colleagues world-wide are in the
   same situation, and are desperate to
   find a way out.

Professor Harper favors functional languages, SML in particular,
but at least he's on the right track;-)

J.




             reply	other threads:[~2011-06-20 10:49 UTC|newest]

Thread overview: 29+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-06-20 10:49 jonathan [this message]
2011-06-20 14:40 ` Some exciting new trends in concurrency and software design Georg Bauhaus
2011-06-20 14:48   ` Georg Bauhaus
2011-06-20 23:56   ` jonathan
2011-06-21  9:36     ` steveh44
2011-06-21 13:04       ` Phil Clayton
2011-06-22  0:37       ` Shark8
2011-06-22  9:45       ` anon
2011-06-29 21:39         ` Robert A Duff
2011-06-30 16:52           ` anon
2011-07-01 18:31             ` Shark8
2011-06-23  9:59       ` Yannick Duchêne (Hibou57)
2011-06-23 10:25         ` Dmitry A. Kazakov
2011-06-23 10:57           ` Yannick Duchêne (Hibou57)
2011-06-23 12:20             ` Dmitry A. Kazakov
2011-06-23 22:17             ` Georg Bauhaus
2011-06-24  1:26               ` Phil Clayton
2011-06-24  1:34                 ` Yannick Duchêne (Hibou57)
2011-06-24 10:41                 ` Georg Bauhaus
2011-06-24  1:27               ` Yannick Duchêne (Hibou57)
2011-06-24 10:32                 ` Georg Bauhaus
2011-06-24 13:45                   ` Yannick Duchêne (Hibou57)
2011-06-21 12:19     ` Dmitry A. Kazakov
2011-06-21 12:14   ` Phil Clayton
2011-06-22  8:39   ` Oliver Kleinke
2011-06-23  2:48     ` Nasser M. Abbasi
2011-06-23  9:23   ` Yannick Duchêne (Hibou57)
2011-06-23 10:03     ` Nasser M. Abbasi
2011-06-23 11:07       ` Yannick Duchêne (Hibou57)
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox