Andrew Lentvorski wrote:
Blake Winton wrote:
My understanding (as a long time Python user) is that Python isn't interested in the billion-threads "solution" to multi-processing, (Guido seems to think, and I agree with him, that multi-threaded programs are too hard/impossible to get correct) and would rather see a different "fix" for the problem, whatever that may be. Shared-nothing/Multiple-processes seems like a contender.
Starting up multiple Python processes is *very* heavyweight. Communicating between those processes is also heavyweight.
The Python "solution" of starting multiple processes and talking through sockets is, quite simply, garbage.
Let's take a step back here. I'm not Python. Saying that something may be a contender is a far cry from calling it a "solution". I never said that the processes would communicate through sockets. (Unix pipes or shared memory would be far better for things on the same box!) Neither of us has any idea what the startup time of Python will be in the future, nor how heavyweight inter-process communication will be.
You seem to have an axe to grind, and while I appreciate that none of the current languages do concurrency particularly well, I think you've missed the mark in this particular criticism.
The issue isn't "threads" or processes per se. Threads or processes could be fine, it's just that they're too heavy on an OS. Look at all the optimization and work people put in to make Apache scale on an OS.
Which OS is that? ;) You have to believe that, as processors gain more and more cores, OSes will react by making process creation and communication far lighter-weight, just like JVM implementors made synchronizing on objects lighter and lighter-weight as people used it more.
And if you're going to look at web servers, why not look at some which use Shared-nothing/Multiple-processes, like Yaws (found at http://yaws.hyber.org/ )? They seem to have beaten the pants off of Apache, according to http://www.sics.se/~joe/apachevsyaws.html
The real issue is that no current language except Erlang supports message passing as an easy primitive between "threads".
So you do like Erlang's shared-nothing/multiple-processes approach?
A solution to concurrency will be the issue that dethrones the current languages. I know that I'm looking.
I'm sure the entire programming language community will be interested in anything you find. Seriously. It seems to be considered one of the major problems of our age on every language-related mailing list I'm on, and everyone is looking for a halfway-decent answer. (Not even _the_ answer, just something that's better than what we have now.)
Later, Blake.