It is too commonplace to assume that computer programs are the same as algorithms. Not every procedure specified by a computer program is necessarily an algorithm. Indeed, all manner of procedures, whether involving computers or not, fail to be algorithms.
To limit algorithm-hood to computer programs captures the essence of an algorithm at an inappropriate level. Algorithms are found in more places than that and they tend to be more abstract than computer code.
In the view employed here, there are many ways to instantiate a particular algorithm in computer code while preserving the essential nature of the algorithm.
An important distinction that I tend to promote is the following:
There is some functional relationship that the algorithm is intended to implement by computation, possibly with practical constraints and limits.
Part of the specification of an algorithm includes demonstration that the specified functional relationship is actually achieved.
Put another way, for an algorithm to be established, it is essential to know what the algorithm is for and how is it known that the algorithm accomplishes that purpose.
There are other characteristics that an algorithm also must have, many of them being well-established long before there were practical means of implementing them with digital computers, rather than (in principle) pencil and paper.
Here, algorithm will be defined to reflect the historical understanding of algorithm along with the importance of knowing what the algorithm is for.
-- Dennis E. Hamilton
n010207b: What's an Algorithm [latest]
n010207c: Initial Notes
n010207a: Diary & Job Jar
n020201: Manifest Abstractions
n020202: Homage to the Bit
n020205: Programs Are Rarely Algorithms
n020207: What's an Algorithm?
created 2002-12-07-22:51 -0800 (pst) by orcmid