COPL, the Tandem, PLITS and JAVA (WAS Re: Eppur si sugat)

martin j logan martin@REDACTED
Wed May 28 18:44:36 CEST 2003


"Why OO is less than sufficient for concurrent and fault tolerant
systems." The above title is not too interesting. "Why OO sucks" or "Why
OO is the worst thing since reality television" on the other hand are
titles that grabs peoples attention. A loaded, provocative title will
entice people to read an article. 

Please forgive me if I am being presumptuous but I think Joe's main
point is that much of OO doctrine, philosophy and current
implementations render the paradigm quite unsuitable for concurrent,
fault tolerant systems. No one will argue that OO techniques are useless
for say, a GUI, etc. The point is that if you are interested in
programming for the niche that Erlang currently occupies then OO
inherently sucks for your purposes and you should embrace the doctrines
described by "COPL", its forefathers, and influences. 

My couple of pennies,
Martin


On Wed, 2003-05-28 at 03:11, Joe Armstrong wrote:
> On Wed, 28 May 2003, Peter-Henry Mander wrote:
> 
> > A bit of dictionary hacking leads me to believe joe was alluding to 
> > Galilei; 'Eppur si muove' 'Still the Earth moves'
> > 
> > "And yet it still sucks!" == Eppur si sugat
> 
> Right on - I had great trouble with this.
> 
> It turns out (According to one source) that "Eppur si mnove" is not
> good 'ol Latin but is 15'th century Florentine Italian - I cannot confirm this
> (Francisco - help!!!!)
> 
> 
> I guessed that "muove" must be moves - so I needed the Latin
> for sucks.
> 
> I then typed "sucks latin" into google hoping to find a latin translation
> for "sucks" -
> 
>   This was a  mistake - goggle obligingly coughed  up several pages of
> references to young  latin ladies who sucked things  - the things being
> sucked were not lollipops - I say no more.
> 
> > 
> > Am I right? Everyone else seems or pretends to know exactly what Joe said!
> > 
> > As for the debate, it looks as if you are all fighting over how to 
> > formalise the OO "method." Joe, from the FP camp desires to see the 
> > formal definition of OO to enable comparison with the formal definition 
> > of any FP language. Such definition _does_not_exist_ for OO, because it 
> > has grown out of day-to-day experience and "best practices" of 
> > programmers in the trenches who don't necessarily have time or the 
> > inclination to write a thesis about how they get results.
> > 
> > OO is no more than a bunch of good recipes for hackers.
> > 
> > And like recipes, there's always more than one way to get similar 
> > results. This doesn't mean that they're bad. I get results using OO 
> > methods when digging my trench. Unfortunately some marketing bright 
> > spark came up with a "OOh!" to "Wow!" management, and the rest is 
> > history. In this world the best technical solution doesn't even win on 
> > merit, and I think Joe (and I) get upset because of that.
> > 
> 
>   This is precisely the reason why my latest ploy is to call Erlang
> a COPL.
> 
>   "Concurrency Oriented Programming" is  intended to be analogy of OOP
> - ie nobody  knows what  it is but  everybody recoginised a  COPL when
> they see one.
> 
>   The "thing" about Erlang (and about COPL) is
> 
> 	- Isolated processes
> 	- Pure message passing
> 
>   It is  just the  lack of isolation  that *prevents* Java  from being
> used for anything sensible.
> 
> <<quote>> 
> 
>   ... the  only safe way  to execute multiple applications  written in
> the  Java programming  language,  on the  same  computer is  to use  a
> separate JVM for  each of them, and execute each JVM  in a separate OS
> process.
> 
>   ...  In particular, the abstraction  of a process, offered by modern
> OSes, is thew  role module in terms of  features; isolation from other
> computations,  resources  accountability  and  control,  and  ease  of
> termination and resource reclamation.}
> 
> 
>   ...  tasks cannot directly share  objects, and that the only way for
> tasks  to  communicate  is  to  use  standard,  copying  communication
> mechanisms, ...
> 
>   -- Czajkowski and  Dayn\`{e}s In Multitasking  without comprimise: a
> virtual machine evolution, Proceedings of the OOPSLA '01 conference on
> Object Oriented Programming Systems Languages and Applications},
> 
> <</quote>>
> 
> The above quote is from two guys at Sun - amazing.
> 
>   Their  paper  says  basically  -   if  you  want  to  run  two  Java
> applications on the same machine you  have to fire up two JVMs and run
> each one as a separate OS process.  So despite the fact that Java is a
> "safe"  language  (with GC  etc)  you  still  need the  protection  as
> provided by OS processes.
> 
>   Despite  this fact  Java  is  still used  as  a systems  programming
> language --  amazing, since  *nobody* knows how  to run  multiple Java
> applications on  the same machine *without* protecting  them within OS
> processes (what  do you do, give  *every* programmer an  OS process to
> play in ... :-) - Until this problem is solved Java should not be used
> for systems  applications (it was, after all,  *designed* for applets,
> where it works well and the abstractions are appropriate) ...
> 
>   As  for  pure   message  passing  -  In  1978   PLITS  was  invented
> (Programming language  in the sky) -  this was a  pure message passing
> system  -  The  authors  of  PLITS argued  that  "complex  concurrency
> patterns"  and "shared  memory" was  no-no. They  thought  that shared
> memory models just didn't  work with complex concurrency pattern, they
> thought that programming such a system would be impossibly difficult.
> 
>   The  PLITS people  just  cared about  pure  message passing  between
> isolated processes - "communicating black boxes" they didn't even care
> about what  language was *inside*  the black box (this  is *precisely*
> the XML/SOAP philosophy of black boxes communicating via XML messages,
> or the UBF philosophy)
> 
>   Having introduced the idea of a COPL I talk about fault-tolerance.
> 
>   To  make a fault-tolerant  applications you  need TWO  computers AND
> they cannot share data (because If you only have one computer it might
> crash) - thus you need isolation and pure message passing.
> 
>   The basis of fault-tolerant computations rests upon three things:
> 
> 	a) isolation of components
> 	b) pure message passing
> 	c) stable storage
> 
>   a) the computers  must be isolated - if one  crashes the other must
> continue
> 
>   Since the computers are isolated, they can share no data, therefore
> the *only* way they can interact is by pure message passing (point b)
> 
>   c) stable storage is storage which survives a crash - you need this to
> recover *after* a crash has occurred.
> 
>   Now a) and b) are built into Erlang. c) can be achieved in a number
> of different  ways - mnesia, asynchronous replications,  etc. there are
> lots of ways of doing this.
> 
>   The  conclusion  of  all  this  is  that  if  you  want  to  make  a
> fault-tolerant system you *have* to get interested in COPLS.
> 
>   My current way of describing Erlang/OTP is saying that
> 
>   "it is a software emulation of the Tandem computer"
> 
>   Read Jim Gray's 1985 paper
> 
>   "Why do computers stop and what can be done about it?
> 
>   and you will immediately be struck by the similarity in the design of
> the Tandem and of the Erlang/OTP system.
> 
>   The Tandem  was for many  years (and possible  still is) one  of the
> best known architectures for making fault-tolerant systems -
> 
>   Incidentally, the tandem used "fail-fast  processors" the idea was it a
> failure occurs (ie an error which cannot be corrected) die as soon as
> possible - *exactly* the "let it crash philosophy" in Erlang.
> 
>   /Joe
> 
> 
> 
> 
> > Pete.
> > 
> > Chris Pressey wrote:
> > > On Tue, 27 May 2003 10:40:00 +0200 (CEST)
> > > Joe Armstrong <joe@REDACTED> wrote:
> > > 
> > > 
> > >>   Eppur si sugat (was that right?)
> > > 
> > > 
> > > (Not sure - Google just gave me a blank look when I tried it...)
> > > 
> > >
> > 
> > 
> > (interesting but marginally mathematical related stuff deleted.)
> > 
> > 
-- 
martin j logan <martin@REDACTED>




More information about the erlang-questions mailing list