In this two-part article, I will argue that there is a way to define, organize and use software objects that will transform computer programming from the complex unprincipled mess that it currently is into an orderly, easy to use and pristine compositional paradise. Please read Why I Hate All Computer Programming Languages before continuing.
The computer revolution will not come of age until we are all computer programmers by default, whether we know it or not. This will not happen until software construction becomes strictly compositional in nature. Imagine being able to extend the functionality of an application simply by attaching a new component to it with the click of the mouse button. Computer programming for the masses, that is the promise of compositional software. The idea is to create such a huge and easily navigable repository of components that any application can be quickly and flawlessly assembled from existing objects using an intuitive and graphical user interface.
Computer scientists have known for decades that componentizing software is the best way to take advantage of the enormous potential of reuse. As it is, a huge part of computer programming consists of reinventing the wheel, leading to a waste of resources and low productivity. There have been many attempts at devising compositional software tools over the years but they have all fallen short of the goal of truly simplifying computer programming. In my opinion, all past and current approaches suffer from one or more of the following flaws.
1. Algorithmic (implicitly sequential) model.The Software Tree
2. Non-interactive, textual (descriptive) interface.
3. Non-synchronous (non-deterministic) processing.
4. Heterogeneous model.
5. No fundamental software building blocks.
6. No plug-compatible components.
7. No coherent component/object classification system.
The COSA software model, by contrast to the above, is non-algorithmic (implicitly parallel), graphical, interactive, synchronous and homogeneous. It is based on fundamental building blocks called sensors and effectors, and organizes all objects into plug-compatible components that easily fit into a hierarchical compositional architecture.
The tree is the perfect metaphor for the new approach to software construction and classification that I am proposing. Every COSA application (component) is organized internally as a tree and is itself a node (or branch) in the universal tree of all COSA applications. The leaves of the tree are the fundamental building blocks.
In Part II, I will explain why the use of a tree classification system for all software components is essential to the success of component-based software development.
COSA, A New Kind of Programming
New Interfaces for Parallel Programming
How to Solve the Parallel Programming Crisis
The COSA Control Hierarchy