Tuesday, July 15, 2008

The COSA Saga: Final Chapter

I Was Wrong

I have been writing about and promoting the COSA software model on the web for close to ten years. I made all my ideas available on the internet, free for the taking. I tried my best. I had high hopes that the computer industry and the computer science community would see the error of their ways and change for the better. I was wrong. I have decided that, unless I see some sign of intelligent life in the industry, I will not renew the rebelscience.org domain. COSA is a waste of my time. I need to focus my energy on projects that are more important to me. Thanks to everyone who supported Project COSA.

Related article:

Back on Line
The COSA Saga

15 comments:

msundman said...

Well, you've been wrong when saying that a COSA-like language is better in general than an algorithmic one. The truth is that the two paradigms are just different, and both have their good and bad aspects. Reactive languages are good for describing behavior/interaction and transformational languages are good for describing transformations (algorithms). Similarly, reactive languages are bad for describing transformations and transformational languages are bad for describing behavior/interaction. That's why your quicksort-thingy is so horrible; quicksort is essentially a transformation and is thus better suited for transformational languages.

Now, my solution is to combine the two paradigms, using the right tool for the right job. Each transformational component is kept single-threaded and everything is combined using a reactive language. It'd essentially fix most of the hard problems with concurrency. (It still has the drawback that one would have to properly (and manually) split up the transformational components to effectively use many (8+) processing units, but I don't consider that to be a big deal.)

Louis Savain said...

Well, you've been wrong when saying that a COSA-like language is better in general than an algorithmic one. The truth is that the two paradigms are just different, and both have their good and bad aspects.

Marcus,

You've been following Project COSA on the web from the beginning and, I'm sorry to say, you learned almost nothing. You are a prime example of what I mean by "no sign of intelligence life in the industry". See you around.

Simon said...

Louis, I only just came across your work a few days ago. It's a shame you're giving up - I'm wondering if there is somewhere you can put your parent site (the one that is now offline) so that your work is still useful.

I would respectfully like to point out, in Marcus' defence, that in just about everything there is the right tool for the job. algorithms are powerful tools that have their place and the ability of the earliest programmable electronic computers to solve tasks quicker than a human can is testament to that.computing

Reactive parallelism is a brilliant idea for general purpose processor design, regardless of whether COSA or some other language is used to program them.

I can see a future where processors mostly follow your designs and have, in addition to cells, small conventional processor cores which can perform algorithmic tasks, much like the way modern processors have specialised FPUs. There is the potential to have these cores all run at arbitrary clock speeds, allowing for not only picking the most efficient processing method for a given task, but also ensuring that power consumption is as efficient as possible.

Allowing for other opinions and agreeing to disagree would further your work a lot more than insulting people with comments like "no sign of intelligence life in the industry". I hope you can accept what I am saying as constructive criticism from someone who respects the work of yours that I have seen.

I am also very serious about wanting access the site which is now offline. If there is an archive you can put somewhere I would love to read more.

Louis Savain said...

Louis, I only just came across your work a few days ago. It's a shame you're giving up - I'm wondering if there is somewhere you can put your parent site (the one that is now offline) so that your work is still useful.

If anybody out there is interested in COSA, email me a note and I will send you a zipped file with everything in it.

I would respectfully like to point out, in Marcus' defence, that in just about everything there is the right tool for the job. algorithms are powerful tools that have their place and the ability of the earliest programmable electronic computers to solve tasks quicker than a human can is testament to that.computing

Marcus is confusing the tool with the software model. A computer is a behaving machine and an algorithm is just one type of behavior. If someone is dead set on using algorithms, a reactive computer can certainly handle them. A COSA tool can be made that will take an algorithm as an input and convert it into a set of COSA primitives.

Allowing for other opinions and agreeing to disagree would further your work a lot more than insulting people with comments like "no sign of intelligence life in the industry". I hope you can accept what I am saying as constructive criticism from someone who respects the work of yours that I have seen.

Certainly, but I am in the habit of telling it like I see it. If the computer industry feels insulted, so be it. It deserves to be insulted, in my opinion. But then again, I am always willing to be shown the errors of my ways. If the industry has a better solution to the parallel programming and multicore design problem, I want to see it.

James said...

It's sad to hear this so soon after Peter Wegner made a comment here, but perhaps not as sad as the thought of reading more comments from pseudo-skeptics.

I hope you'll at least make the cosa specification available again. I can imagine trying to design a parallel cpu for a thesis with only Peter Wegner's papers, and it would be far more daunting than if I had project cosa to start from.

I remember a comment by Chuck Moore that he used to live out of Principia Mathematica until Godel destroyed his faith, and he's already designing multi-core processors. Perhaps with Wegner's help he could be persuaded further towards designing something like a COSA CPU, although currently he seems convinced that Forth is the end of things. Have you ever tried to contact industry celebrities directly? How did they reply?

snakenerd said...

Louis, could you send me this zip file?
I am very interested in implementing a COSA VM and experiment with this idea.

My email is devotion97@gmail.com

If you are interested in working together, contact me aswell.

Thank you.
-- Fred

msundman said...

Marcus is confusing the tool with the software model. A computer is a behaving machine and an algorithm is just one type of behavior. If someone is dead set on using algorithms, a reactive computer can certainly handle them. A COSA tool can be made that will take an algorithm as an input and convert it into a set of COSA primitives.

No, I'm not confusing anything here. It's obvious that reactive languages can perform transformations. They are just bad at it. (Your quicksort-thingy is a good example of that.)

I've seen nothing that indicates that COSA-like structures could work efficiently enough at a low level. You've certainly not shown that COSA could be run efficiently without compiling it into more conventional code. Whatever kind of code the processors run, it's obvious that both reactive languages and transformational ones can be compiled to it.

My point was that it's just stupid to use a reactive language to input program modules of a transformational nature.

(And as for your "insults"; I know that your knee-jerk reaction "defense" is to insult the one making any criticism, to provoke a response to which you can reply that "if you don't like it then go away", instead of actually addressing the criticism in any constructive way. However, I just don't get offended that way.)

Louis Savain said...

Marcus Sundman:

No, I'm not confusing anything here. It's obvious that reactive languages can perform transformations. They are just bad at it. (Your quicksort-thingy is a good example of that.)

That's just your opinion, Marcus. Others think it's just great. First off, it's something that I put together in a hurry in order to show that COSA can be used to implelement a fine-grained parallel quicksort whereas a functional concurrent programming language like Erlang cannot. It is doubtful that this is the way it will look when the COSA language is fully developed. Second, The exercise was not to show how an algorithm can be implemented in COSA but to show that a reactive system can do anything an algorithmic system can do and do it in a non-algorithmic manner.

I've seen nothing that indicates that COSA-like structures could work efficiently enough at a low level. You've certainly not shown that COSA could be run efficiently without compiling it into more conventional code.

Well, I can only lead the horse to the water. I can't force it to drink. If you can't see how it's done, it's not the fault of COSA.

My point was that it's just stupid to use a reactive language to input program modules of a transformational nature.

Just your opinion, Marcus. I, too, have an opinion, which is that your point is nonsense and, when the time comes, it will be shown to be worse than nonsense.

(And as for your "insults"; I know that your knee-jerk reaction "defense" is to insult the one making any criticism, to provoke a response to which you can reply that "if you don't like it then go away", instead of actually addressing the criticism in any constructive way. However, I just don't get offended that way.)

You're offended all right. I have never insulted anybody who did not insult me first or did not show a complete lack of integrity and cowardice. I reserve the right to pick who I argue with. In retrospect, I realize now that it was a mistake to put a link to your site on the Project COSA pages since you never really had anything interesting or constructive to contribute.

PS. By the way, don't bother replying. Whether you like it or not, I get the last word on my own blog.

0 said...

"If anybody out there is interested in COSA, email me a note and I will send you a zipped file with everything in it."
I'm interested in anything I can learn from . If you can send me the zip file , my email is Hao1010011010@gmail.com
Good bye , and good luck .

seth said...

I would love the zip files too.
Good luck and Godspeed

professornyc@hotmail.com

sprucely said...

I would love to have a copy of your COSA files also.
user: timberdig
domain: gmail.com

When I saw your site was no longer there I rushed to google's cache. But alas, more than half the images, an important part, had already been cleared from my browser cache.

Jamin said...

Hi Louis,

I think it is hard for people to see the way things work beyond "languages". I don't think a language is the appropriate metaphor or construction for network-like structures you are introducing here.

I took a look at some of Wegner's work, and not sure how yet how it would fit with COSA or any other network technology. Perhaps because a network doesn't break down that well for functional analysis, it hasn't been stressed in academia? I seem to have a tough time finding information about how networked systems can be engineered in general. The most I have found in addition to your site is:

http://www.neurocomputing.org/
http://mypage.iu.edu/~rdbeer/
http://www.animatlab.com/

Is neuroscience the best field to study right now, to approach understanding systems like COSA? From what I've read in OnIntelligence by Jeff Hawkins, there seems to have been a disconnect between the neuroscience and computer science communities.

In any case, I'd be interested in your zip file too, could you send to jamin1001@gmail.com


Thanks.

BL said...

Hey Louis. I tried to email you but the email bounced back. Can I get this zip file too?

Thanks.

--Brad

Louis Savain said...

Hey Louis. I tried to email you but the email bounced back. Can I get this zip file too?

Brad, I am not sure why. Nobody else is having a problem. Have you tried my Yahoo email address? Click on View my complete profile. It's at the bottom of the side bar on the right.

Jonathan Leonard said...

Louis said:
First off, it's something that I put together in a hurry in order to show that COSA can be used to implelement a fine-grained parallel quicksort whereas a functional concurrent programming language like Erlang cannot.


Erlang is not the only functional language and if it does not do concurrent programming automatically, it is a deficiency of that particular language and not FP in general. (Heck, even Python should be able to do much more in parallel than it does, but it simply hasn't been coded that way yet). For an example of a language that does do parallel execution fairly automatically, see Haskell (and it too is progressing even further in this area). But, in theory, there is nothing at all preventing functional languages from doing automatic parallelization. [Also, I think even MS' Excel spreadsheet application does parallel execution for its 'cells' and I'd be really surprised if LINQ and SQL did not take advantage of extra cores].

FYI, here's a parallel quicksort in Haskell (pulled from this post:
http://www.haskell.org/pipermail/glasgow-haskell-users/2008-June/014873.html
):

parSort :: (NFData a, Ord a) => Int -> [a] -> [a]
parSort d list@(x:xs)
   | d <= 0 = sort list
   | otherwise = rnf below `pseq` (
                 rnf above `pseq` (
                 rnf lesser `par` (
                 rnf greater `pseq` (
                 (lesser ++ x:greater)))))
       where below = [y | y <- xs, y < x]
             above = [y | y <- xs, y >= x]
             lesser = parSort d' below
             greater = parSort d' above
             d' = d - 1
parSort _ _ = []