The Avian Computing Project is dedicated to simplifying how we think about parallel programs. The ability to think easily and naturally about parallel activities will provide the fulcrum needed to leverage our programming experience to rapidly build working parallel computer programs. Without this fulcrum, developing parallel programs has been fraught with peril, failure-prone with a disturbing tendency to become “guru-intensive”.
Parallel program projects typically begin by extending traditional programming methods, i.e., picking a language and then starting to code. Unfortunately, traditional programming methods have a demonstrated history of missed delivery dates and canceled projects. And the ones that do get released also tend to have a high bug rate until version 3.0. Is this troublesome traditional method really the best starting point for developing more complicated and sophisticated parallel programs? Isn’t that sort of like selecting an airplane that crashes frequently as the basis for flying to the moon?
In searching for better methods of developing parallel programs, an analysis of traditional programming methods was performed which resulted in a rather startling conclusion: we humans are not particularly good at developing computer programs using traditional methods. And there are good reasons for this.
To understand why we struggle with traditional programming methods, it is critical that we understand the way the human brain works and realize that it has limitations (see Physical Reasons Why Languages Fail). What surprises me the most is the lack of discussion about the limitations of the human brain in the context of programming.
We also need to understand how we got started using language to develop programs and why creating/using new programming languages will always fail to improve the slow and buggy process of program development (see Programming Languages Are Not Our Friends). It’s not that we’re missing the holy grail of the very best programming language ever; it’s because our brains aren’t wired for language-based program development.
In other words, it’s time to start thinking outside the box that we have been forced into using traditional development methods. The issues and insights discussed in the above two series of blogs give us the keys to get out of the box. These blogs allow us to list the characteristics needed to investigate a new generation of parallel program development methods (see New Model Needed for Program Development).
Together, these blogs all form the conceptual foundation for the Avian Computing project, a first attempt to meet some of the requirements of a new model for program development. The primary goal of Avian Computing is to make it easier to think about how to create parallel processes in computer programs. It pursues that goal by replacing the abstract semi-mathematical programming mental model currently used in traditional development methods with a more natural model based on a flock of birds. Herds of wild horses or schools of fish or any other group of cooperating critters could have been used but I like birds. Plus, birds also chirp, sing, and call to each other, providing additional message passing possibilities.
The primary goal is NOT to make apps that run faster in parallel but instead to make it faster to get parallel apps running. When the tasks in an app are correctly apportioned and distributed among the (hundreds of) cores available, the speed issue will take care of itself.
The goal of the Avian Computing project to provide a platform for exploring the possibilities for parallel processing, for thinking about what tasks can be performed in parallel, for thinking about how to break a task into chunks that can be processed in parallel and learning how those chunks act and then interact with other tasks.
An expected outcome is reduced development times with improved program reliability. The Avian Computing world is an interactive GUI environment, with visual feedback of the behavior of the currently running birds as well as automatic logging of the activities of every bird. The intent is to provide an environment where the developer can focus on the parallel tasks being performed and can easily analyse the performance of each bird.
The Avian Computing project is an attempt to expand our focus outside of the constraints of conventional programming languages so we can easily and accurately visualize any parallel programs. And once we can do that, we can quickly build those programs.
The Avian Computing Project is open source and version 2.1 is now available for free download (see the link in the sidebar). Please feel free to use it to explore the parallel possibilities of the tasks that you want to perform.