That is the main difference between COSA and other concurrent languages like Erlang. Whereas Erlang is only partially concurrent (it uses so-called light weight processes), COSA does not cut corners. COSA is 100% concurrent. Nothing happens in COSA unless it receives a signal. Every cell in COSA is an elementary concurrent operator that waits for a signal, does something and sends an output signal to one or more other cells. Even adding A + B is a concurrent process. A COSA program consists exclusively of cells and their environment (data).
All right. I realize that a COSA application will be rather slow on current processors compared to conventional programs, but that is not COSA’s fault. It is the fault of the computer industry for having adopted a computing model that is at least as old as Charles Babbage and Lady Ada Lovelace. The algorithmic model is just plain wrong. It is a relic from the distant past. It is not fit for the 21st century. It is the cause of the software crisis. It is the reason that complex software is unreliable. It belongs in a museum, not in our computers.
Computing will not come of age until we adopt a software model that eliminates sequential programming altogether. We must recognize the errors of our ways. We must design our multicore processors to support the correct software model, not a 150 year-old dinosaur. We must stop believing that languages are a natural way to program computers. Computer languages are primitive, period. There are inherently sequential and they are not suited for parallel computing. It is about time that the computer industry wakes up from its self-imposed stupor and realizes that it has been doing it wrong right from the start. To borrow words from Nintendo of America’s CEO, Reginald Fils-Aime, COSA is about kicking ass; COSA is about taking names. But, unlike Reggie, I am tired of playing games. I want my self-driving car now!
Sorry about the outburst. I am getting frustrated and I just had to get it out of my system. :-)