A Beads program is so compact in its notation, that it is in essence an executable specification. We promise half the code (as measured in words), twice the readability (as measured by a new person not the author understanding the program), and ten times more repeatability (in terms of reproducing customer bug reports) compared to existing tool chains.
The purpose of the Beads project is to drastically simplify the task of authoring and maintaining graphical interactive software. At present, the complexity of the current development stack is unbearably high, and there are very low amounts of code re-use happening, which is causing similar programs to be written over and over. The most troubling part of the current software development process is the great difficulty of transferring ownership of a project to new staff members. It is quite common for minor changes of the new staff members to have serious repercussions, and as a result software products are endlessly being patched. If you examine the employee counts of the major firms in the software industry, their staffs grow far faster than the number of products, indicating that maintenance costs are consuming a very high percentage of the total spending on software.
There are hundreds of languages available today, so let's examine a few key features that sets Beads apart from the vast majority of existing tools.
Let's discuss the key features briefly:
The first major feature is that Beads programs can run forwards and backwards. 99% of all computers today use either the Intel or ARM instruction set inside the primary CPU chip, which is the master brain of the computer. Intel and ARM computers can only run forwards. They have the ability to stop instantly at a specific point (they call this a "breakpoint"), but neither can run backwards. The Beads system creates a virtual computer of a more futuristic kind that can go backwards. Going backwards is very useful, because a computer program that malfunctions is like a train going off the rails, and crashing into the woods; you have to go backwards in time to find the actual source of the problem. The task of debugging which consumes over 80% of all programming effort, is hindered by not having a reverse gear.
Another major problem in software development is the issue of reproducing a problem. Once a product leaves the safe confines of the developers' lab or the company's quality assurance department, which systematically tests the software product, inevitably it malfunctions on an end user's computer, which has a slightly different state than the one in the lab. The net result in most large companies is a database of tens or hundreds of thousands of unresolved customer bug reports. A great quantity of reported problems cannot be reproduced by the development team, which wastes their time, and frustrates the user because their problem doesn't get resolved in a timely manner. The net result is an overall impression by the user community that software is flaky and generally unreliable. Because of the tracking system that allows Beads to run backwards during development, that same tracking system runs in production software, and the user can elect to submit their history data for the purposes of error reporting, and the developers can run backwards from the problem state to find the cause.
Automatic sequencing of computation, and automatic refresh of affected areas of the screen greatly reduces the number of errors in a graphical interactive product. Once you have hundreds of controls and pieces of data on the screen, it becomes very difficult to track the dependencies of the interacting items, and the Beads language does this automatically, eliminating a whole category of common errors in software development.
Beads corrects the single largest glaring omission in Excel which lacks the ability to store physical units of measurement as a value and a unit (5 kilograms). It is an incredibly common error in Excel to have mismatch in the units because quantities carry no units, and it is up to the programmer of the spreadsheet to remember to either divide by or multiply by some conversion factor. Beads includes all the common engineering and scientific units of Mass, Length, Time, Energy, etc., and also innovates in arithmetic safety so there is never any undefined behavior, which plagues many other languages.
Languages like PHP include built-in hooks for connecting to an external relational database such as MySQL. However, relational databases are obsolete, and for more than 10 years graph databases have been gaining acceptance. Given the predicted future trajectory, Beads incorporates a graph database in the language so that you do not depend on an external database system. External databases can't possibly support reverse execution or protected arithmetic, so it was essential to include a database in the language itself.
There are many other innovations and improvements in Beads, but these are the most significant differences.
To author a product, you write a program in the Beads language either by typing in the code or with the assistance of various graphical helper tools, then translate your Beads code into an intermediate form using a compiler. The supported platforms are:
The Beads language presents to the author a new kind of computer that can draw on the screen, print reports, with the absolute minimum number of operating system functions. For the most part, the operating system is not directly contacted, and you can build a wide variety of application programs without knowing any details of the operating system. The language contains a drawing model (currently 2D only), a graph database, a deductive engine, an event model, and a resource library subsystem. In essence you are programming a computer that has been designed to eliminate most of the common errors of programming.
Beads makes programming much simpler. Other programmers' code is easier to understand, and it helps usher in a new era of interchangeable parts in software, and will open up programming to a wider variety of personality types.