What you are describing might be called a computational method or process. "Algorithm" has been formalized over the years to have a very well defined technical definition:
To be considered an algorithm, a method must be:
1. Finite. It must terminate after a finite number of steps. (The program, i.e. the expression of the method must also be finite.)
2. Definite. Each step must be precisely defined, requiring no 'interpretation' or ingenuity on behalf of the executor of the algorithm.
3. It must take zero or more inputs, and these inputs must be well-defined.
4. It must produce one or more well-defined outputs.
5. It must be an "effective method", which (in addition):
5a. Must always produce a result
5b. The result must always be a correct result
5c. It must always arrive at a result after a finite number of steps
5d. It must work for all defined categories of inputs
This is (almost) literally page 1, chapter 1, book 1 of Knuth. Most probably one of the first things you'll ever be taught on any respectable computer science course.
Of course, the term is used more vaguely and everyone still knows what we all mean, but the above is the widely-accepted formal definition.
A point I made myself, and I didn't say otherwise. I also clearly mentioned that was the formal definition, not a working definition.
In mathematics and computer science that is indeed the proper definition.
And HackerNews is definitely a mathsy/computersciencey sort of a place, so it might be nice to use the word correctly here.
Out of interest (or is it flippancy?), where do you use the word algorithm, when not talking about mathematics or computing?
Do you consider a discussion about heuristics vs algorithms (which is what this thread is above), on a site like Hacker News, to be 'general language'...? Or would you consider that this might indeed be a suitable context to comment on their proper formal definitions?
To be considered an algorithm, a method must be:
1. Finite. It must terminate after a finite number of steps. (The program, i.e. the expression of the method must also be finite.)
2. Definite. Each step must be precisely defined, requiring no 'interpretation' or ingenuity on behalf of the executor of the algorithm.
3. It must take zero or more inputs, and these inputs must be well-defined.
4. It must produce one or more well-defined outputs.
5. It must be an "effective method", which (in addition): 5a. Must always produce a result 5b. The result must always be a correct result 5c. It must always arrive at a result after a finite number of steps 5d. It must work for all defined categories of inputs
This is (almost) literally page 1, chapter 1, book 1 of Knuth. Most probably one of the first things you'll ever be taught on any respectable computer science course.
Of course, the term is used more vaguely and everyone still knows what we all mean, but the above is the widely-accepted formal definition.