In medicine, programs have been developed that analyze the disease symptoms, medical history, and laboratory test results of a patient, and then suggest a diagnosis to the physician. The diagnostic program is an example of so_called expert systems_programs designed to perform tasks in specialized areas as a human would. Expert systems take computers a step beyond straightforward programming, being based on a technique called rule_based inference, in which preestablished rule systems are used to process the data. Despite their sophistication, systems still do not approach the complexity of true intelligent thought.
In all cases, however, the task that the algorithm is to accomplish must be definable. That is, the definition may involve mathematical or logic terms or a compilation of data or written instructions, but the task itself must be one that can be stated in some way. In terms of ordinary computer usage, this means that algorithms must be programmable, even if the tasks themselves turn out to have no solution. In computational devices with a built_in microcomputer logic, this logic is a form of algorithm. As computers increase in complexity, more and more software_program algorithms are taking the form of what is called hard software.