Talk:Parallel programming

From Wikipedia, the free encyclopedia
Jump to navigation Jump to search

Parallelism versus concurrency[edit]

Can someone point me to a reference that really differentiates between parallel programming and concurrent programming, as the article says at the moment? I seem unable to verify this statement. Koffieyahoo 8 July 2005 10:09 (UTC)

The article below discusses parallel programming.--Carl Hewitt 21:16, 11 July 2005 (UTC)[reply]
  • Henry Baker and Carl Hewitt The Incremental Garbage Collection of Processes Proceeding of the Symposium on Artificial Intelligence Programming Languages. SIGPLAN Notices 12, August 1977.

Explain me how this is relvant. As far as I can see the article doesn't even mention the word concurrency. In addition I asked some experts in the field what they think the difference is between parallelism and concurrency and most of them either see the two words as symonymous or the see concurrency as parallel processing involving threads on one computer and parallel programming as involving multiple computers. -- Koffieyahoo 12:48, 13 July 2005 (UTC)[reply]

The paper cited above discusses parallel programming issues. For example it introduced the future construct for parallelism.--Carl Hewitt 14:15, 13 July 2005 (UTC)[reply]

Hence, it obviously does not answer my question. Thank you for admitting that. Now can someone please answer it? -- Koffieyahoo 14:32, 13 July 2005 (UTC)[reply]

The article begins
"Parallel programming is a computer programming technique that provides for the execution of operations in parallel, either within a single computer, or across a number of systems. In the latter case, the term distributed computing is used
Parallel programming is now often considered to be a special case of concurrent programming because parallism by itself does not require the use of shared resources that can change."--Carl Hewitt 15:03, 13 July 2005 (UTC)[reply]

Yes, I can read the article. Can you now please anwer my question. I have a very hard time to verify the facts you quote, as I already mentioned above. -- Koffieyahoo 12:19, 15 July 2005 (UTC)[reply]

Which word do you not understand? Seriously, I do not understand your problem!--Carl Hewitt 21:14, 21 July 2005 (UTC)[reply]

You make a distiction bewteen concurrent and parallel programming. I cannot verify this distinction in any of my resources, please point me to a resource where this distiction is made. Koffieyahoo 09:53, 4 August 2005 (UTC)[reply]

See for example the CONCUR conferences.--Carl Hewitt 11:30, 4 August 2005 (UTC)[reply]

Can you give me real reference to a paper? Because I can give a reference that claims that there is a distiction, but different than what you claim: G.R. Andrews, Concurrent Programming, principles and practice, Addison-Wesley, p. 3. Andrews basically says that parallel programming is exactly the same as concurrent programming except that a multiprocessor is used for execution in the case of parallel progromming while this does not need to be the case with concurrent programming. -- Koffieyahoo 12:42, 19 August 2005 (UTC)[reply]

It doesn't make much sense to appeal to a piece of equipment such as a multiprocessor that might be used in implementation as a means to distinguish between fundamental catetories like parallelism and concurrency.--Carl Hewitt 15:40, 19 August 2005 (UTC)[reply]

This a very narrow minded theoretical computer science point of view. So, please for the fifth time, provide a reference that shows there is such a fundamental difference between parallelism and concurrency! (I'm hoping you're starting to understand that not everyone distinguishes parallelism from concurrency in the way you do and, hence, that it stutus in the article should be different from what it is now (e.g. discussion on the different ways in which the words are used).) -- Koffieyahoo 09:23, 23 August 2005 (UTC)[reply]

The article reflects a general consensus of experts in the field. Again I refer you to the CONCUR conferences. Of course the distinction between parallelism and concurrency is a technical one.--Carl Hewitt 13:01, 23 August 2005 (UTC)[reply]

The article reflects a general consensus of experts in the field. Maybe the theoretical computer science experts, but I don't believe this holds in the case of the experts actually doing parallel programming on real machines. Both are relevant! Moreover, simply refering to CONCUR, does not work for me: almost all papers published there define will neither concurrency nor parallelism, as the people reading those papers are are assumed to know what they are. So once again: show me a real reference! -- Koffieyahoo 14:57, 23 August 2005 (UTC)[reply]

In Java, concurrency is concerned with shared resources that can change. For examle the package java.util.concurrent mainly consists of implementations of a few interfaces:
  • Sync -- locks, conditions
  • Channel -- queues, buffers
  • Barrier -- multi-party synchronization
  • SynchronizedVariable -- atomic ints, refs etc
  • java.util.Collection -- collections
  • Executor -- replacements for direct use of Thread
All of the above interfaces are concerned with shared resources that can change.--Carl Hewitt 22:14, 23 August 2005 (UTC)[reply]
I am doing a survey while attending the CONCUR conference in San Francisco. So far no one has come up with a better explanation of the relationship. Some of the researchers at CONCUR do concurrent programming on real machines. Do you have a better explanation of the relationship between concurrency and parallelism?--Carl Hewitt 22:02, 23 August 2005 (UTC)[reply]

You're missing my point, which is that there is more than one point of view in circulation. At the moment I can come up with at least four view points:

  • Parallelism is concurrency with the communication and synchronisation mechanisms omitted (your point of view in my words, I believe).
  • Parallelism is concurrency on a multiprocessor system (the view from the reference given above).
  • Parallelism is short for parallel execution while concurrency deals with communication and synchronisation mechanisms. That is, two completely different concepts (this view I find very useful in understanding all the notions of sequentiality that are in use in the term rewriting and lambda calculus community).
  • Parallelism is synonymous to concurrency.

Moreover, at the moment I've been unable to verify that there are other people besides you that support the first view point (which is why is started the discussion in the first place.

-- Koffieyahoo 08:25, 24 August 2005 (UTC)[reply]

I have included other views of parallelism in the paper.--Carl Hewitt 12:54, 24 August 2005 (UTC)[reply]

Okay, now we're getting somewhere. However, I think the main point of view should be that parallelism and concurrency are synonymous and that all other views should be part of a discussion section (related changes should be made in the concurrent programming languages article). I my opinion it should be done in this way, because I get the impression by talking to a lot of people that most of them don't really differentiate between the two concepts when you ask them for a quick response. -- Koffieyahoo 13:12, 24 August 2005 (UTC)[reply]

Yes, the discussion is confusing so I removed it and replaced it with a discussion with more backing. See what you think.--Carl Hewitt 14:23, 24 August 2005 (UTC)[reply]

By the way, I don't know if you really looked at the benton, Cardelli, Fournet paper, but the word parallel occurs precisely twice: one time in a comment to a piece of code and one time as the title of one of the citations. So, yes, the word occurs, but no 'explaination is given anywhere in the paper, which is suggested by the text in the article atm. Hence, I still think the reference should be removed from the article. -- Koffieyahoo 13:17, 24 August 2005 (UTC)[reply]

I removed the reference from the paper.--Carl Hewitt 14:23, 24 August 2005 (UTC)[reply]