Meyer, OO and concurrency

todd <>
Wed Jul 13 16:31:55 CEST 2005

Joe Armstrong (AL/EAB) wrote:

>Suppose there was an OO language called K. K "does" objects.
>In K you can use objects freely - but subject to the following restrictions:
>	- you should try to use less than say 2000 objects
>	- if you use more than 20000 objects your program will crash
>	- instead of destroying objects and creating new ones you should try
>	  to keep a pool of old objects and reuse them as often as possible
>	- you should try and keep the total number of objects down because
>	  programs with lots of objects are difficult to write and understand and debug
>Now of course, "K does objects" - but not in any *useful* sense - and even if it does
>objects - the programming style is so warped that nobody wants to *use* objects as a method for structuring their programs.
>Now replace K by {Java, C++, C#, ...} and the word "object" by "process" :-)
I won't argue that "good" native support is not better, but the analogy 
doesn't apply. How many threads do I really need? I need as many as I 
have actual concurrent activities. Even then it's OK for activities to 
block. So I don't need thousands of threads for good effect. I can 
activate passivate objects or I can have enough RAM.

>Concurrent algorithms often provide a "natural" way to describe things (especially for
>real-world programs - since the real world IS concurrent) - a sub-set of concurrent programming is sequential programming (but the converse is not true) - so in this sense
>concurrent programming beats sequential programming hands down.
Having had these conversations many times with embedded programmers, 
they just think a shared piece of data protected by a lock makes sense, 
even if they become mystefied when it all comes crashing down around 
them. Sending someone a paper on pi calculus is next to worthless.

>The reason why concurrent programming has got a bad name and a reputation
>of being difficult  has to do with the threads, locks, mutexes, critical regions, 
>shared memory school of programming. 
I'd also point out that ericsson doesn't program their entire telecom 
devices in erlang. That shows there is
a weakness and it turns people off.

>The non-shared memory, pure copying asynchronous message passing, paradigm is
>far easier to program (witness all the web applications, virtually all use
>non-shared memory (ie separated processors) and pure message passing (defined by RFC's))
>and very easy to understand.
And for scalability simply add clusters, replicated web tiers, 
replicated datababase backends, and L4-L7 redirectors :-)

More information about the erlang-questions mailing list