I agree with the main point.
routine == procedure (routine is identical to procedure)
routine ~= algorithm (routine is approximately algorithm)

Routines (procedures) are implementions.
Algorithms are conceptual.
Routines implement algorithms.

I agree that algorithms are conceptual, but not that they're more creative.

"whereas procedure or routine indicates the process"
To me process has a definite meaning that is more than just routine. A process is a bit of code, with memory allocated to it, a name-space assigned to it, and in the list of processes the OS is currently executing (but possibly currently swapped out).

I think it's approximately the same as routine, but even more concrete

Algorithm is more conceptual than routine.
Routine is more conceptual than process.

I read algorithms in English (or pseudocode).
I read routines in the source Language (C, FORTRAN).
I can't actually "read" a process without doing a memory dump.

Using a functional programming paradigm (instead of OO paradigm) -
Start with a problem definition.
Break it into steps (create an algorithm).
Translate the algorithm to higher level code. (program composed of routines/ procedures)
Translate the higher level code to machine code (possibly through some middle step).
Tell the OS to execute the (machine) code
The OS allocates memory for the code, loads in program, setting registers as appropriate, adds it to current list of tasks and maybe a little more bookkeeping. At this point our algorithm is embodied in a process.

That's for compiled languages. Scripting languages are a little different, as are languages that use a virtual machines or some other kind of byte codes, like Java.

Last edited by TheFallibleFiend; 11/08/06 04:40 PM.