Humans operate with partial information all the time. It is called thin-slicing. We make decisions without having all of the facts. If we are going to have a machine pass a Touring Test, or make machines behave more like humans, they have to operate with missing or incomplete data.
So lets take tiny steps in getting to inexact computing. In this first blog entry, let's examine how software can small steps forward not to choke on missing data.
The most common cause of programs failing upon missing data, is when a null exception is thrown for a variable that doesn't have a value, but is called upon to produce its value for an operation, calculation or input/output to another step. A null exception throws an ugly error.
One way around this, and the very first step to inexact computing, is to have a variable initialization either in a specific method or at its time of declaration that is near, close or somewhat close to what it should be. That way when the assignment fails to happen (either from a fetched database value, input parameter or whatever), the program doesn't come crashing down and throw an exception. The value may not be right, but don't forget the title. This is the journal of INEXACT computing. Just like us inexact humans. This might not be good for calculating tax returns, but it would work in areas like image recognition in real time where the software is driving a car and a highway marking is partially obliterated. A good guess is really helpful here.
One could even put some intelligence into the variable assignment. A try and catch block would catch the null value, and depending on where it was in the program, it could determine to send it to a variety of inexact assignment functions, depending on the stage of the program. It could even determine the severity level of having inexact data.
The way that I see it, is that each application will have a customized framework attached to a caching layer and a database to directly deal with missing data to supply values to progress with the planar execution of the program. More on the inexact value framework in another article.
So that is the baby-step start to inexact computing. The next article will deal with the guess() function and the what-did-I-use-lasttime() function as well as the most-Probable-Value() function using Bayesian inference. Stay tuned.