I think that there's two kinds of code, and that's what's causing the argument- there's code that's written to accomplish things, and there's code that's written to communicate ideas. Code is often used to communicate algorithims, especially crypto algorithims. It's a good language for describing a crypto algorithim- concise and unambiguous. As I'm sure EKR is aware, the crypto litterature is full of descriptions of algorithims as code. Often these are in pseudocode or code fragements. Neither of those could possibly be construed as existing only for the purposes of running a program, since they won't compile and run. To me, writings or utterings meant to convey information from one human to another are 'speech'. Therefore, code is, at least sometimes, pure speech. On the other hand, the majority of code is written not to explain something to humans, but to perform a task on a computer. That code is sometimes written by one person who isn't thinking about maintainability, so he writes it in whatever style pleases him. That may well be the most awful kind of spagetti code- totally unreadable even to the original programmer when he sees it a month later. Yet it compiles and performs it's task. Most code falls somewhere between these extremes. Most code to perform tasks needs to be readable to some degree, in order for more than one person to be able to work on it, or for future maintenance by one programmer. Most people learn how to make their code at least a little readable after the first time they have to read old code they wrote and spend hours re-discovering what it does. ALL good programmers I have known do this, although ideas about what is "readable" differ widely. -- Eric Murray N*Able Technologies www.nabletech.com (email: ericm at the sites lne.com or nabletech.com) PGP keyid:E03F65E5