|
Verbiage A couple of months back I posted a couple of long and serious musings about what programming is all about and how you learn to do it. Today I'd like to talk about a more frivolous topic, which is what verb you should use for it. Among actual programmers, the nearly universal usage is that what you do to bring a program into existence is to write it. There are a bunch of other verbs you might use if you want to emphasise particular ways of doing it (‘hack together’ or ‘hack up’ if you did it messily or in a hurry, ‘grow’ versus ‘build’ to indicate something about the development methodology, and so on), but if you're not saying anything in particular about the way you did it, you talk about writing a program. You might have ‘coded it’ or ‘coded it up’ in a pinch, but I think in general you wouldn't have ‘programmed’ it, because when ‘program’ is used as a transitive verb its object is the thing you're instructing, not the things you're instructing it to do. You program a computer, or a VCR. It's always faintly bugged me that not everybody knows this; non-programmers will occasionally use startling other verbs such as ‘making’ a program, or perhaps ‘creating’, or (as I heard today) ‘manufacturing’ one. This used to really annoy me when I was an arrogant teenager; but since then I've been gradually becoming more tolerant of this terminology, because it seems to me that it's just reflecting a difference of viewpoint between the programmer and the user. A programmer knows in their bones that what they actually do to bring a program into existence is to type in a large amount of text, hence ‘write’; but a computer-illiterate user just knows that they receive a consumer product ready-made from someone, and doesn't particularly want to have to distinguish it from any other consumer product, so they naturally use the same verbs they'd use for a physical object. So although this usage still jars me and grates against my intuitive sense of the appropriate terminology, I tolerate it on the grounds that there's nothing actually wrong with it. (Also, I might do more than tolerate ‘make’ in some circumstances; a modern big-budget game, for example, probably involves at least as much graphic design and music recording and voice acting and 3D modelling and scriptwriting and other non-coding activities as it does actual programming, so I might plausibly feel that the correct term for the creation of the game as a whole was not in fact ‘write’. Given that, ‘make’ would probably be as good as anything.) The verb I occasionally hear and can't justify on those grounds is inventing a program; this one is definitely inaccurate. ‘Invent’ describes the process of coming up with an idea, of working out a good way to do something. Many programs require no particular invention at all, and even when one does, you don't really invent the program, you invent an algorithm or a design or a structure or a game concept or some other high-level abstract idea which ends up embodied in your program but might also be embodied in somebody else's. Also, the process of invention only covers the formation of the idea: invention leaves you knowing how to do something, but having invented it you still have to actually do it, and that's where ‘write’ comes in. This has been a public service announcement on behalf of Programmers for Linguistic Pedantry. Thank you for your attention. Addendum: Whoops, I left out ‘develop’, which is another entirely acceptable term used by the people in the know. It's a particularly appropriate term when the program in question is especially large, and/or the product of a big team rather than one or a few individuals, and/or was substantially put together from existing parts so that it wasn't literally written afresh for the purpose, and/or took a particularly large number of trial and error cycles to get to its eventual state :-) |