This page is a work in progress.
By 2011, it is difficult to imagine a person of a developed nation having not heard some reference to programming. We know that computers run on software, whatever that means, and many things we own are somehow programmable, either by us - the users - or by the people who produce them. The programming that ordinary users do is not on the scale of what software engineers do, devising and creating complex systems and devices. Users program their video recording systems, their thermostats, cell phones, ovens, clothes washers, GPS devices, and so on. Contemplating how we are all involved in programming begs the question of what it really means to program. I suggest that we badly need to understand why it matters that we understand this concept and how it affects our understanding and use of the devices that clutter our lives.
That programmability operates at the heart of the software industry that now holds sway over so much of our lives today is as much a consequence of how technical artifacts have evolved over the last 200 years as it is an immediate product of modern technological achievement. A product's programmability is at once social determinant, commercial value choice and consequence of engineering practice. To understand programmability as a phenomenon is to see past the wizardry of computer technology to the role of programmability in how provider/consumer and consumer/consumer relationships are defined by and shape a programmable product's or medium's purpose and functionality, prescribed and emergent. And, of course, the notion of programmability hovers at the site of the question what is a computer?
I have attempted to explain programmability to various people who have never programmed computers. It's a concept that some pickup on and others just don't. I expect that for some the difficulty lies with the extent of the effort required to grasp the concept with only my promise of worthwhile enlightenment as compensation. This leads me to try harder to make the explanation more efficient.
A Book Definition
The Merriam-Webster On-Line dictionary , has two definitions, one for the noun program and one for the transitive verb to program, the latter depending heavily on the former, probably because of the sequence in which their common usage arrived. Here they are in order:
Etymology: French programme agenda, public notice, from Greek programma, from prographein to write before, from pro- before + graphein to write — more at carve
1 [Late Latin programma, from Greek] : a public notice
2 a : a brief usually printed outline of the order to be followed, of the features to be presented, and the persons participating (as in a public performance) b : the performance of a program; especially : a performance broadcast on radio or television
3 : a plan or system under which action may be taken toward a goal
4 : curriculum
5 : prospectus, syllabus
6 a : a plan for the programming of a mechanism (as a computer) b : a sequence of coded instructions that can be inserted into a mechanism (as a computer) c : a sequence of coded instructions (as genes or behavioral responses) that is part of an organism
Function: 'transitive verb'
Variant(s): also programme
Inflected Form(s): programmed or programed; program·ming or program·ing
1 a : to arrange or furnish a program of or for : bill b : to enter in a program
2 : to work out a sequence of operations to be performed by (a mechanism) : provide with a program
3 a : to insert a program for (a particular action) into or as if into a mechanism b : to control by or as if by a program c (1) : to code in an organism's program (2) : to provide with a biological program (cells programmed to synthesize hemoglobin)
4 : to predetermine the thinking, behavior, or operations of as if by computer programming (children are programmed into violence — Lisa A. Richette)
These definitions apply nicely to the programming of common devices that we'll discuss below. I argue that the idea of programming computers has elevated all views of programming into a whole new dimension for those who understand it deeply.
Commonly Programmable Devices
I have two examples, previously mentioned, of devices that we commonly understand as programmable. They are chosen because of their ubiquity, not their technical or social eminence.
The VCR (video cassette recorder) is the archetypal programmable recording device. VCRs actually don't see much service any more because of digital television and the pervasive PVR (personal video recorder) that cable and satellite television subscribers use to continuously record broadcast video. The VCR is legend because of the arcane programming procedures invented by Asian engineers and the equally complex instructions. Users' failure to set up their VCRs was blatantly revealed by the flashing digital clock on the face of the device: you knew the owner didn't know how to program the damn thing because he or she couldn't even set the clock.
The question is: What exactly about VCRs leads us to say they're programmable? First off, the manufacturers tell us this is so. The instruction manual has a section on programming and we easily accept that this is what we're doing when we're setting up dates and times of TV programs (there's that word) we want to record. So here's a variant of the word program used to mean a sequence of events, like the printed program for a performance.
This is making me think that the original meaning of the program as it applied to computers referred to the same kind of sequentialization that programmed events means.
Not all thermostats are programmable. Merriam-Webster's online dictionary defines a thermostat as "an automatic device for regulating temperature (as by controlling the supply of gas or electricity to a heating apparatus)" . Most people in temperate to cold climates have programmable thermostats so they don't have to remember to turn it down at night or rise early to turn it up. I have programmed the thermostat that controls my furnace to lower room temperature at about 11:30 and then it at about 06:00 so that when I get up at about 06:30, the room temperature is tolerable. Programmable thermostats allow you to program the temperature 4 times daily, but I set 2 of the 4 settings the same during the day. I also program weekends the same. Clearly, the device is usable in a place of business where there are multiple variations necessary daily to bring a cold office up to temperature slowly and to program the weekends separately.
What common, stupidly programmable devices teach us
We need the word program constantly and we use it glibly. We see programming as setting things to work through a sequence of operations on their own - a sequence chosen by us - without our constant attention. I'm satisfied that this is what most people consider programming to be. The general-purpose computers in our lives are strong examples of this; simple programmable thermostats are the easy-going examples.
(Just in case you're wondering, I wrote that long boring paragraph about programming a thermostat to use the word program so many times, you might stop seeing it.)
An Example of Progressive Programmability: Music Boxes
Consider the classic music box. A particularly elegant one is depicted at right. You wind the spring, open the lid and the figurines twirl to a tinkling tune. The sound comes from vibrating metal tines that are tuned to a suitable range of frequencies.
Below the elegant box is a close up of a typical music box mechanism. Notice the brass drum with bumps on it and the metal tines just above it. The drum is driven to rotate by a spring mechanism. The bumps tug or pluck at the tines as they brush by, causing the tines to sound in a given sequence resulting in a tune. The drum's speed of rotation generally determines the cadence of the tune, although the angular spacing of the bumps also influences cadence. I imagine it's desirable for the tune to last as long as possible, so the drum probably rotates as slowly as possible and the bumps are spaced as closely as possible.
This same mechanism can be reconfigured to play a different tune if the manufacturer replaces the drum with one with bumps arranged differently. The manufacturer could also provide a differently tuned set of tines to produce sounds in a different tone range. If you think about it, just replacing the tines to produce different tunes would be an unnecessarily burdensome challenge.
There's another device that can produce sounds similar to a music box, although not usually as tinny, without the benefit of automation. It's called a thumb piano. (Shown below left.)
This is a bird of a different feather. You don't turn on a thumb piano; it's a musical instrument that you play. With dexterous (and tireless) thumbs, you can play any number of exquisite little tunes without relying on the ingenuity of a music box manufacturer who predetermines the tunes. The user of a thumb piano has traded away the convenience of just winding a spring mechanism then opening a lid to hear a cheery little tune for the opportunity to play any tune in the range of the instrument at the cost of having to know tunes and learning how to play.
Turning back to the prospect and technology of such a thing as a music box, consider the process of creating new drums with re-arranged bumps that produce different tunes. One possibility might be to have a prototyping drum covered with holes, neatly spaced, designed to accept little plugs that can be inserted by a person knowledgeable enough to experimentally create new tunes. The prototype drum would be inserted into a prototyping music box with the same spring mechanism and tines as the production model so the tune designer can hear the result. It then remains to translate the location of the plugs in the prototype drum into some kind of cast or mold with which to manufacture production drums. I'll leave speculation about this translation process to the music box engineers. You can see that this could be quite a job.
In the end, could it be said that someone is programming music boxes to play different tunes? I suggest that that is exactly what is happening, no matter the protracted process and distance between wanting a new tune and producing a music box that plays it. And what about the difference between a music box and a thumb piano? I say that the music box is pre-programmed. I'll explain why rearranging the bumps on a music box drum is a form of programming after we have expanded the subject a little more.
Have a look at the next picture at right. How does that look for a bit of fun? The basic method of producing music is a bit different with hammers striking tuned plates like a xylophone, but the effect is quite similar. It even comes with a couple of little hand-held hammers for working out tunes. I would imagine it's also quite a lot bigger than the tiny brass-drum mechanism in the previous pictures. If the user doesn't mind a bit of trial and error, he or she can produce any tune within the cadence and tone range of the music box by arranging plugs and turning the crank. A person with no musical ability but who can turn the crank at a constant, reasonable pace can produce a tune encoded in the peg positions by the programmer. Turning a crank at a reasonable and steady pace is only a bit more complicated than winding the spring mechanism and opening the lid of a conventional music box.
I should, of course, raise the question of why anyone would want to do this instead of just learning how to play a thumb piano, or a small xylophone. It's not as if you can just rearrange the pegs on a moment's notice; it looks like work to translate a tune in your head or from some kind of written music into peg positions. And it's not as if the product of such labours is hugely beneficial. It's just a little xylophone. It's value seems to be that of a curiosity.
A further manifestation of music box programmability is show at left. This one depends on a pattern of holes punched into a paper tape to produce music. That thing that looks like tweezers is the hole punch. This device represents a considerable advancement over the pegs-in-the-drum mechanism (even though it's not as pretty) because the tune is encoded and stored outside of the device itself. This enables the encoding of numerous tunes simultaneously on separate paper strips, which can be chosen and passed through the playing mechanism repeatedly. If making tinkly music with mechanical devices is your thing, this device would seem to be just what you'd want given that punching holes in predictably desirable patterns is not too challenging.
Here's the supplier's description of the paper-strip music box:
Player pianos used a similar principle, but the notes were recorded on large sheets of paper, where holes were punched in the paper to indicate which note strikes and when. By carefully coordinating the arrangement of holes, entire songs can be composed. Some consider this technique -- especially when it was applied to automated looms -- to be the world's first software.
This music box kit works like a miniature player piano. There are no pins, but a strip of paper, into which you punch holes yourself. That's right... you punch your own songs! You can replicate your favorite tunes or compose new ones. The possibilities are endless. In theory you can program your music box to play everything from classical, to country, to heavy metal, to TV commercial jingles.In this kit, you get the music box mechanism (2 octaves in the key of C), the specialized hole punch, "Happy Birthday" pre-punched song strip, 3 blank song strips, and instructions. You can order additional paper strips for your magnum opus. A very novel, but at the same time historical, mechanical music toy.
I hope you noticed the references to software and programming in the above text. When I was looking around for music box pictures, I didn't expect these people to help me out quite this much. Note also the statement about holes in the sheets of player piano papers: the writer describes them as being "punched in the paper to indicate which note strikes and when" (my emphasis). It seems as if a player piano is poised to strike notes, like an orchestra is poised to play music, and the paper, like a conductor, controls the production of notes as opposed to causing them. The mindset displayed here, that induced an apparently trivial twist in the view of a cause-and-effect relationship, plays heavily in common and specialized notions of programmability.
Programmability Attributes Demonstrable in the Creation and Use of Music Boxes
We need to reflect on the lessons in programmability that these progressively more adaptable music boxes demonstrate. I do not regard these matters as theoretical, but grounded in practicalities and common sense among people who spend time steeped in the intricacies of programmable devices. Perhaps, a better approach than merely telling this story of music boxes backed with a discussion of lessons learned would be to find documentation about programming and programmability that support my assertions about the instrumentality of programmability
Unfortunately, I have yet to encounter any such material that those not familiar with the mathematics of computer science could possibly understand. I offer this section as the formative material for non-computer scientists to grasp. Of course, I'll back-fill this article should any of it appear. The following is a quick list of the features of the above story to keep in mind as you read further in this section:
- The transformation of an artifact by changing an information component is partly what programming is about. In the case of pre-programmed music boxes, the transformation is only with respect to the tune it can play, no matter that there are probably people who can appreciate a beautifully created music box and not give a damn what tune it plays.
- Transforming the process of manufacturing a device that is transformed by changing an information component is an example of reflexivity of tools. With music boxes, we can easily simplify - well, automate - the process of changing tunes because the tunes are data and computers can become involved as soon as data manipulation becomes important. This is hugely important to me in my later explanations of reflexivity of tools and of language.
- We can transform the utility of a device by handing off the programming to consumers. It's no longer pre-programmed and thus adaptable, within its domain, to other uses not necessarily predicted by its inventors. There is a longer discussion of this new word, domain, below.
- If the consumer can store re-usable programs in a medium outside of the device, the extent of programmability changes. This factor is exemplified by the paper strip player versus the pegs and xylophone box.
- We can hit the limit of a device quickly if its domain is limited. Naturally, how interesting it would become to consumers depends on how flexible a tune-player it is, all the way from the device I've depicted to player pianos. No matter how far you go with this, though, you'll never be able to do more than play tunes. That's perhaps enough, but, for example, if the paper strips were connected to a device that wields surgical instruments with which you could repair personal injuries, the story would have to be much longer.
The Programming Model
The programming model refers to the metaphors, analogies and abstractions that programmers contend with, or benefit from the support of, in translating goals into useful outcomes. The goal of making tinkling tunes is but one that we can readily identify with when dealing with music boxes. Others are economically providing a selection of tunes, producing aesthetically pleasing objects, and, of course, making a profit amid any other goals.
Think about what a company that makes music boxes considers to be their priorities with respect to the attractiveness of their products in the music box market and the processes they develop to enable the realization of their goals. The challenge here is to understand what the people who want to create tunes in a pre-programmed music box are thinking about and what they have to understand to convert tunes in their heads into tunes that play on those music boxes. An important distinction in the building of music boxes, versus hammers, for example, is the fact that a music box is programmable by it's nature - at least, that's how I have portrayed them in this discussion.
Let's say that someone decides that Twinkle, Twinkle Little Star is a good choice of tune. Who is that person? A marketing person? An engineer? It makes a difference. The marketer quite possibly doesn't have a clue how the drums are built, so he or she goes to the engineer and provides the tune in some recorded format, unless the engineer has perfect pitch and a perfect memory. That format might be an audio recording or sheet music of some kind. If the engineer is the person who chooses tunes, then the choice of recording medium is entirely personal instead of one that is amenable to two people's perceptions and abilities.
So the tune is chosen and somehow specified to the engineer by someone. Having devised a huge number of music box drums before, the engineer knows very well where the bumps need to be positioned on the drum, both horizontally along the axis to cause the various tones, and where around the circumference to achieve the appropriate timing for each tone. Now, music box drums are cast in metal. If you know anything about casting, there needs to be an original model that is used to create a mold that is used to do the casting. The next question is how does the engineer create the original model. It could be that he or she uses a drum that looks a lot like the user-programmable wooden drum full of holes pictured above into which is inserted pegs of some kind. Perhaps the challenge is to start with a smooth drum and just glue the bumps on in the correct positions, measuring very carefully as the prototype drum is created. But what if the engineer has some kind of master music-box-drum-creating system with a keyboard like a piano? He just plays a tune and out comes a prototype drum ready to make casts. Hell, anyone could make drums if they could keep the machine fed with raw materials. So much for the profession of music drum engineering, although there's a bit of work left for music-drum-creating-machine engineers. What if the device has audio input: play tunes accurately in any manner and out come drums? We wouldn't even need someone who can use a keyboard.
Distribution of Design Responsibility
The story about the design and manufacture of music boxes might seem a little crazy at the end, with someone playing a recorded tune into a machine that spits out music box drums. That's probably because it's pure speculation. I even kind of doubt that the profession of music box engineering ever amounted to much. The purpose of the story was to show how responsibilities could change given the tools at hand. The idea of someone who designs music box drums being replaced by a machine that just spits them out is not at all fantastic, but very much the way manufacturing has progressed in the last 200 years or so. The engineers build tools that build devices, instead of arduously building the devices. Consider also how much a music box tool engineer needs to know about music boxes, compared to the very first people who built them way back in the early days of wind-up mechanisms. It's probable that music box technology peaked quite a long time ago, so that knowledge of it is no longer uncommon, but easily obtained from just having a good look at an existing box, or a bunch of them to get a sense of the possible variations.
I expect that the technology and practice of making such things as music boxes has blended nicely into the whole framework of building little mechanical gizmos in China.
Consider then the business of producing the programmable music boxes. Someone had a vision that producing music boxes that consumers could program would sell and so they gave it a go. From what I understand about consumer tastes, it seems unlikely they thought the same people who want wind up, pre-programmed boxes would want the programmable boxes. Their job is to serve quite a different market and so their perception of the distinctions should greatly influence their success.
Social Interaction and Emergent Interests
Let's now consider how people congregate around products that please them. And to be thoroughly modern, let's consider the prospect of communities of interest, mediated by the Internet, that surround music boxes of various types.
What is there about pre-programmed music boxes that might interest people and how might that interest be embellished by sharing it with others? Do you think it's likely that their interests would centre around the tunes of various boxes? There is a possibility that there is a genre of boxes that play incredibly elaborate, almost beautiful tunes and that collecting and trading in boxes with various tunes might be a productive, social behaviour. It's possible that all kinds of other attributes of music boxes keep people socializing, such as their age, the style of their appearance, who made them and where, etc. The Internet is a means to expand this in the extreme, people in Germany sharing knowledge and opinions with others in Australia. They'd email each other pictures of their boxes, maybe operate a forum for more public sharing. It's possible that the fact that they're music boxes is quite incidental, since people are interested in collecting and trading and socializing over just about anything.
Now what about people who are interested in programmable music boxes, especially the one that uses the paper tapes - assuming of course there are such people and that socializing over the matter is likely. There's nothing particularly attractive about the box itself, and there is no broad range of such devices available, so the community of interest would centre around the tunes. Now, imagine that the paper is not special, just a little heavier than usual. People could send each other tunes by scanning them on their computers or by taking pictures and then emailing them to each other. Within the limits of the box's tonal range, people might get a bit of fun out of trading tunes and impressing each other with the effort they're willing to expend on long and complicated tunes. You might be thinking right now that people would have to be pretty desperate to find pleasure in programming and socializing over a silly little music box. However, notice that the programmability of the programmable box would be extended by the media used to carry the description of new paper tapes because the tunes are representable as data in a computer. What if someone wrote a computer program that printed an image of a paper tape based on data that some one types into a computer file or on sounds picked up on a computer's microphone. All the user would need to do would be to punch the holes as indicated in the printout. The limitation of manually encoding tunes in a tape by carefully choosing exactly where to punch the holes in a tape would vanish. Very quickly, without a lot of fuss, we could easily reach the fantastic situation I described where music box drum producers would be replaced by a machine that spits out drums. Interesting, eh? Notice how the computer, because of its inherent, generalized programmability can be used in a situation that no one would have predicted. The domain of programming music box tapes is engulfed because the music has become data that can be manipulated on a computer.
Let's just take a moment to realize how silly sharing the tunes of a programmable music box really is. Personal computers have incredible sound synthesizers built into them, so printing tapes that need to be punched, and then inserted into a tinkly music maker would be ridiculous by comparison to what can be accomplished right on the computer with the right software. And if electronically generated music is really your pleasure, there's a whole world of instruments and music studio software that can be applied. It all works so well because sound is data.
Domain is the Differentiator
There is a vast range of programmability in modern devices, many of which are purely mechanical, although most of them involve electronics. What determines the nature and extent of programmability of any device is the domain of the problem that the device solves. Then within a given problem domain, there is the degree to which programmability has been conferred on the device's users by the device builders; that is, which aspects of the engineering (the device creation) domain have transformed from making devices into making devices that are adaptable to different interests - tools that make tools.
I presented two example devices early in this article - VCRs and thermostats - to get you thinking about programmability that most people have encountered, or at least heard of and understood. I have a few more examples here to challenge your new view of programming, assuming you have read and understood this article so far.
- Cruise control. You program your car's speed control system to maintain a given, constant speed. The essential cruise-control mechanism has common controls and is adaptable to almost any vehicle.
- Vending machines. These machines take in money and spit out change, according to the price of the product the user chooses, and a product. I imagine that these machines can be adjusted (programmed) to accept coins of various weights and dimensions and then emit products of various types, such as bagged snacks, little boxes, etc. Drink machines have built-in refrigeration equipment. You program the device by putting in money and (somehow) selecting a product.
- Kitchen stoves. These we can program to turn on and off at a specified time. I expect there are some that change temperature at a given time, like my old microwave oven.
- Washing machines. You can program these things to handle different kinds of fabrics, to use different water temperatures at different operating phases, and different amounts of water. I've heard that newer, fancy machines use steam in the fabric-handling process. Interestingly, older machines used to be controlled by a rotating drum much like those used in music boxes. The little bumps on the drum would trip switches that engaged motorized devices such as agitators, valves, pumps and spinners. I always imagined that I could build an automated irrigation system for my garden by dismembering an old washing machine and rearranging the bumps on the control drum.
- Digital Cameras. These are both user-programmable with an incredible array of options in the professional products, and are controlled by elaborate embedded software systems, driving highly-customized hardware. Most products provide for upgrading the software (they often call it firmware because it's held in a non-volatile memory device) proving that they are just special-purpose computer systems.
In each of these cases, you'll notice that the programmable device is built to provide a certain service or functionality within a distinct context, or problem domain. These devices can be reprogrammed but often only within that domain, or working/subject area, for which it was originally designed. In each case, the programmable part of the system can be varied in the manner in which it handles data, including inputs from external interface controls, but seldom physical objects. Sometimes designers add features that permit users to prescribe such variances; sometimes, only special persons such as maintainers or designers, are permitted to vary the programming.
When a programmable device handles pure data
Vending machines are designed to handle money, drink containers and food packages. Washing machines move water and deal with clothes. How about a device that handles no physical objects but just works with pure data held internally and acquired from human and networking interfaces? This describes a personal computer.
Let's look at the interfaces so we can understand how its domain is practically limitless. The usual human-usable input devices are familiar to a great many people: a keyboard, a mouse and maybe a microphone. The human-usable output devices are audible sounds, a visual display panel composed of illuminated dots that can be arranged to represent images of objects and text, and a printing device for making recognizable marks on paper. With these devices flexible devices, the general-purpose personal computer can be programmed to perform an incredible array of functions that involve the dynamic manipulation of what users consider to be information. Add in an interface that humans don't work with directly, a network connection to other computers, and the lid is flipped off Pandora's Box because the general-purpose computer can be programmed to mediate information-handling functions of multiple users.
Who is programming personal computers?
Consider what I described as programming when it came to music boxes and washing machines. The designers of these devices passed some control - programming responsibility - to users through their designs. Designers of personal computers pass enormous flexibility to users, so much so that it can be a daunting task to understand how to control a device with such capabilities. One minute it's a movie player, the next it's an accounting machine; now a word processor; now a electronic mail tool. And each function has its own flexibilities, many related to how you want the computer to adapt to your needs, many related to how the computer itself should adapt to the function - such as where to store information, how to share information with others, etc.
Behind this flexibility are the minions of the computer industry, craftily devising the software that transforms your computer, giving you the programmability you need to make their programs work the way you want. Here's an interesting notion: computer programmers use the same kinds of computers that you use. Even more interesting: they are vastly more capable of adapting computers to their information handling needs (yes, computer programs are information) than you and there are many computer programmers who produce computer programs for other computer programmers helping them understand and work with the vast capabilities of a limitlessly flexible information manipulation device.
Are there any limits in a pure information-handling domain?
The short answer is "no", there should not be any limits. The long answer is "computer software technology is bound up with how to enable productive metaphors that both programmers and users need to unleash the incredible potential of electronic information handling."
When I discussed the prospects of engineering music boxes, I raised the matter of where engineers might direct their efforts - towards creating useful devices (that is, music boxes) or towards creating tools for creating useful devices. The computer industry is the pinnacle of that sequence: tool-makers making tools for tool-makers making tools for users. Ultimately, the dividing line between tool-maker and user blurs when the tool-maker understands how to put complex tools that are easy to adopt and adapt into the hands of those who ultimately pay for the computers. Is anyone just a user now?
In the electronic information-handling business, engineering depends on mountains of elaborately constructed metaphors used to develop more tools and more software. For example, our primary output device, the display monitor, illuminates little coloured dots, called pixels, that are arranged to form images of objects and text. Programmers who design and program information systems do not give much thought to pixels - they work with concepts such as formulas and databases. When it comes to accepting input, they may count on you being able to use a mouse to click on buttons on the screen, but they never program such things. Ever notice that you can change your monitor or your mouse without affecting your software? How about your internet connection? I connect through wireless routers in various places, through a wired Ethernet interface sometimes; who knows how all of that stuff works, but it doesn't seem to matter to me or the software once I get past the security barriers.
Let's Stop Now
In summary, programmability is the inherent property of a device that permits someone to change its behaviour without changing the physical device. This is an inherent property endowed by the device's designers who allow chosen aspects of the device's behaviour to be controlled by data (inputs of some kind) that other designers or users can change according to the device's design. We don't know how this works in the computer business, because we don't know anything about electronics, but we can imagine how this works for music boxes.
What a device is ultimately capable of depends on the problem domain within which the device operates. Washing machines and vending machines are quite tightly bound by their domains - you'd be hard-pressed to turn a washing machine into a gaming machine. General-purpose computers, the personal kind that we all use these days, are, by definition, targeted to operate in an extremely large problem domain that could be called information handling. Information could be how much tax you must pay or where to point the muzzle of the gun you're using in a video game on your computer.