Jump to content

Talk:Concurrent programming language

Page contents not supported in other languages.
From Wikipedia, the free encyclopedia
This is an old revision of this page, as edited by 69.255.88.87 (talk) at 20:25, 28 November 2005 (Asynchronous Concurrent excution). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.

Is Java a concurrent programming language?

Since when is Java a concurrent programming language?! Lost Goblin 11:21, 2005 Feb 12 (UTC)

In some sense it is and in some sense it isn't. It is, because it supports a variant of monitors, because it has a build-in notion of threads, and because there the is something called JavaSpaces. It's isn't because it's just an imperative programming language. Koffieyahoo 5 July 2005 06:40 (UTC)

Why?

Why is it the case that with so much research into concurrent programming, none of the ideas have been used practically? Is it just the inertia of existing programming models and languages, or is the some deeper reason?

Latest Changes

I have a number of questions and remarks about the latest changes by CarlHewitt:

Concurrent programming involves more than just threads, e.g., SOAP.--Carl Hewitt 21:42, 11 July 2005 (UTC)[reply]
Yes, that's true. But this doesn't justify the mention of operating systems and networking, which are just a means to an end. -- Koffieyahoo 12:30, 15 July 2005 (UTC)[reply]
  • I don't believe the shared objects that can change in the first paragraph is correct. There don't seem to be any shared objects in case message-passing is used (unless addresses of other machines are counted as shared objects).
Concurrent message passing typically involves communication with shared resources that can change.--Carl Hewitt 21:42, 11 July 2005 (UTC)[reply]
  • Why has the sentence been removed that C is not a concurrent language, while a statement that java and C# are concurrent languages has been added (which is quite unneccessary as Java and C# are in the list of langauges)? Seems to me at least the statement on C should be added back, as it helps in understanding what is going on.
Java and C# have language constructructs for locking and threads whereas C simply invokes a shared libary.--Carl Hewitt 21:42, 11 July 2005 (UTC)[reply]
You're just stating what I and the sentence said (read the question!). Hence, the sentence was a counterexmaple to the fact that C is a Concurrent programming language. Counterexamples are also useful to get some idea of what the concepts in the article are about. -- Koffieyahoo 12:30, 15 July 2005 (UTC)[reply]
  • Shared-state is better than shared-memory, as what is shared cannot always be really called memory, like in the case of the Orca programming language or Linda (JavaSpaces). The first has a concept of shared abtract data types, while the second generally uses the concept of a Set in which all kinds of elements can be inserted.
Shared resources include both shared memory and shared objects with changeable state.--Carl Hewitt 21:42, 11 July 2005 (UTC)[reply]
You now referring to the general statement, not the particular case, please try again. -- Koffieyahoo 12:30, 15 July 2005 (UTC)[reply]
  • Why do Java and C# use both shared state and message passing. I'm not aware of the last. Although at least Java supports some form of RPC. It is not the case that RPC can be identified with message passing.
RPC is indeed a form of message passing.--Carl Hewitt 21:42, 11 July 2005 (UTC)[reply]
No RPC is a mechanism for client-server intercation. It has nothing to do with message passing. -- Koffieyahoo 12:30, 15 July 2005 (UTC)[reply]
  • Why are the references to Occam and Erlang removed from the message-passing part? They examplify what is going on.
The most common programming language use cases are Java and C#. Maybe put Occam and Erlang in a footnote?--Carl Hewitt 21:42, 11 July 2005 (UTC)[reply]
The nature of Java and C# is also somewhat ambivalent, as Lost Goblin rightfully notices. So just a footnote for Occam and Erlang is not enough. -- Koffieyahoo 12:30, 15 July 2005 (UTC)[reply]
  • Why is a reference to the Internet added to the message-passing part? The Internet is not a message passing system it's simply a set of protocols for computers to communicate. Of course, a message passing system can be build on top of the Internet. The Internet is simply not a programming language.
Almost all distributed message passing systems (e.g. SOAP) use the Internet.--Carl Hewitt 21:42, 11 July 2005 (UTC)[reply]
That the Internet is used is also completely irrelevant for all these systems. -- Koffieyahoo 12:30, 15 July 2005 (UTC)[reply]

Koffieyahoo 8 July 2005 10:07 (UTC)

I also strongly disagree with CarlHewitt changes, C# and Java can hardly be considered concurrent languages(as has been noted before), if no one else defends the changes I'll revert to the May 20, 2005 version of this page. Lost Goblin 20:25, July 14, 2005 (UTC)
Just what do you think is the purpose of the the locking constructs in C# and Java?--Carl Hewitt 20:45, 14 July 2005 (UTC)[reply]
Hacks around the limitations of the non-concurrent design of those languges. Lost Goblin 23:58, July 15, 2005 (UTC)
These are integral constructs of these programming languages for concurrency. Why do you think that they are hacks?--Carl Hewitt 02:14, 16 July 2005 (UTC)[reply]
Please do not remove java and C#, they are rightfully in the list as they have constructs that facilitate concurrency. However, I do think that Java and C# don't deserve the prominent place they have now, as they were not specifically constructed as concurrent programming languages. -- Koffieyahoo 12:30, 15 July 2005 (UTC)[reply]
I'm only planning to revert to the previous version([1]), which did mention Java(and I don't have anything against adding C# beside it) but that had more emphasys on truly concurrent languages. Lost Goblin 23:58, July 15, 2005 (UTC)
Why don't you propose making changes to the current version instead of reverting the contributions of other people?--Carl Hewitt 02:14, 16 July 2005 (UTC)[reply]
I'm trying to do that by first getting all satisfying to all the above questions and remarks. However, if no one (and you in particular Carl Hewitt) responds, it seems best to me to revert, add C#, and to revamp the text a bit (as the prose in the version that will be reverted to can be better). -- Koffieyahoo 12:57, 19 July 2005 (UTC)[reply]
I also think that reverting is the most practical solution, then we can work from that point doing changes that are less 'controversial' and more generally accepted. Lost Goblin 08:23, July 20, 2005 (UTC)
What do you mean by "generally accepted". Just what beliefs do you believe are generally accepted and by whom? It generally doesn't work well to revert the contributions of other people to a long ago version. Editing is the Wikipedia way forward to incorporating the contributions of others.--Carl Hewitt 15:44, 20 July 2005 (UTC)[reply]
It would help if you would would motivate your changes by seriously replying to my questions and remarks above. -- Koffieyahoo 07:14, 21 July 2005 (UTC)[reply]
I think the current article is of /low/ quality and it would be better to spend time on improving it rather than disputing suitability of reverts. A novice reading the article wont learn anything about concurrent programming, how it is different from other styles and what it is good for. Pavel Vozenilek 18:40, 20 July 2005 (UTC)[reply]
Before we start rushing into anything we might want to consider how any change made here relates to the Message passing, Parallel Programming, Parallel computing, Distributed Computing, etc. articles making sure the contents of these articles is consistent. For example: Is Parallel Programming the same as concurrent programming? Are they instances of Distributed computing? Or is there some other relation? -- Koffieyahoo 07:14, 21 July 2005 (UTC)[reply]
Parallel programming is a special case of concurrent programming.--Carl Hewitt 21:22, 21 July 2005 (UTC)[reply]

Concurrency languages

While languages as Java and C# (I know only little about Ada) do support concurency, they are in different league than say Erlang. I think this page should concentrate more on those advanced. Pavel Vozenilek 02:40, 17 July 2005 (UTC)[reply]

Pavel, thanks for your message. However, I don't see what Erlang has to offer in the way of programming language concurrency constructs over Java and C#.--Carl Hewitt 13:38, 17 July 2005 (UTC)[reply]

Erlang provides completely isolated processes as part of language. Communication between the processes is absolutely location transparent. The syntax for using this functionality is very simple and consistent. While it is possible to provide similar services in a conventional language it makes great pain and danger of mistake stays high. Pavel Vozenilek
This may be a valuable feature. However, does Erlang actually add any concurrent programming language constructs?--Carl Hewitt 20:55, 17 July 2005 (UTC)[reply]
It has build-in message passing facilities contrary to Java (and don't start calling RPC message passing again) -- Koffieyahoo 13:17, 19 July 2005 (UTC)[reply]
Part of the language is that parent process is informed automatically about died children. Its the language who ensures isolation between processes (and this is probably the strongest feature). Every process is automatically given unique and un-enforgeable name. Pavel Vozenilek 17:54, 19 July 2005 (UTC)[reply]

What's up with making this page a shrine to C# and Java? Are they really both the One True concurrency language, while Ada, Erlang, etc. are just pale imitations? Ojw 13:57, 9 October 2005 (UTC)[reply]

Unfortunately I don't have the time to fight Carl Hewitt delusions and fix this page properly, if someone does, I would be thankful. I suggest reverting to the version mentioned in another thread and if Hewitt persists we probably should make a Wikipedia:Requests_for_mediation, again, I don't have time to pursue this, but I would be happy if someone else does Lost Goblin 15:15, 9 October 2005 (UTC)[reply]
I would be interesting in knowing the number of C# and Java programmers versus the numbers for Ada, Erlang, etc.;-)--Carl Hewitt 17:41, 9 October 2005 (UTC)[reply]

Asynchronous Concurrent excution

Why do programs need to execute instructions at the same time?