Plum Hall is the world leader in making compiler validation suites and software for the programmer and software development community.
WHAT DOES PLUM HALL DO?
What is a "compiler validation suite"?
An essay by Roland Racko, Contributing Editor, Software Development Magazine
IN THE SIMPLEST SENSE, Plum Hall makes software that tests the accuracy of other software. Plum Hall is the world leader in making this kind of software for the programmer community.
But what does it all mean?
A Quick Look
To understand more about what Plum Hall does requires a little insight into how computer chips operate.
Computer chips think in zeros and 1's. To get something done, say to add two numbers together, a programmer has to somehow get into the computer's memory the pattern of zeros and 1's which represents the command to "add" and the two numbers to be added. When programmers make software, all the commands which represents the tasks the software is supposed to do must all be converted to these zeros and 1's. This conversion of tasks to zeros and 1's is done by yet another piece of software called a "compiler".
Programmers are trained to express the tasks to be done in a kind of quasi English language which they then type into the compiler. The compilers themselves are made by companies like Microsoft, IBM, and Sun Microsystems.
The recipe that the compiler follows for converting this kind of quasi English into zeros and 1's is quite complex. It is complex enough that an improperly crafted compiler could make many different kinds of errors in doing that conversion. Plum Hall makes a piece of software which gives a known and predictable fragment of quasi English to a compiler and compares the patterns that the compiler makes to a predetermined pattern that is the absolutely correct one for that given quasi English fragment.
There are many fragments to be tested and many possible outcomes, both good and bad, that could come from the comparison. The collection of all the quasi English fragments to be tested is called a "suite". The Plum Hall product, called a "compiler validation suite", makes all the comparisons and produces reports about the comparison outcomes. A company that makes compilers would purchase this compiler validation suite from Plum Hall and periodically use the reports to verify that the quality of the compiler they are making is up to standards set by the international programming community.
Plum Hall makes compiler validation suites for all of the popular ways in which programmers express tasks in these quasi English languages. Today the most popular ways are ones named C, C++, Java and there is a new one from Microsoft called C# (pronounced "sea sharp"). Plum Hall stays on the forefront of technology producing new compiler validation suites as they are needed by the industry.
In the olden days of computers, the way one got a computer to do something was to make some holes in a fistful of "punch cards" and feed these cards into the computer. The computer would electronically detect the holes and, based on their positions in the cards, deduce a collection of zeros and 1's that represented what you wanted the computer to do. Computers can only think in terms of zeros and 1's. Lucky for them - they don't have to worry about the 31st of the month and that the electric bill is due because they can't count that high.
As the tasks for computers became more and more complicated, handling all these punch cards became a big mechanical problem. Many computer tasks required thousands of such punch cards. First there was the simple act of punching the holes and then there was the problem of feeding them into the computer and making sure none of the cards dropped on the floor in the process.
So people looked for a substitute for this mechanical process. They came up with a piece of software which would translate a kind of quasi-English into the electronic equivalent of the holes in the punch cards. Of course the first people to construct this translator of quasi-English had to punch that translator itself into punch cards in order to get it into the computer. But after that was done once, and suitable party was held, things became a lot easier for everybody else thereafter. They then figured out how to attach a keyboard to the computer so that they could type quasi-English into this translator software. After that punch cards were never heard from again except in certain election districts.
The Compiler is Born
The form of the quasi-English that was first used was called FORTRAN -- short for FORmula TRANslation. For some reason, though, the name "translator" never became very popular for this kind of software. Over time the name changed to "compiler" although FORTRAN kept its name and did not become anything like FORTOMILER or some such variation.
As computer tasks became even more complicated, new dialects of quasi-English were invented. Since the '70s, quasi-English forms like C, C++, Java were invented. Although FORTRAN was a kind of acronym, these other quasi-English forms often had humorous reasons for their name and the story surrounding the names have become legends programmer's talk about. Nowadays we talk about these quasi-English forms using the general term "compiler language". At the next cocktail party you can now authoritatively say "Java is a sophisticated and popular compiler language," and your friends should nod knowingly. Do not say "Java is a popular translator." People will stare and walk away.
OK. Now we have an understanding of how the first of the three words in the phrase "compiler validation suite" came into being.
No Errors Please
The C and C++ compilers are quite sophisticated compilers as compared to the early FORTRAN compiler. Their sophistication and complexity makes their size often several hundred times bigger than the early FORTRAN compilers. Their size is so big, in fact, that it's very easy to make mistakes in the construction of these compilers.
These days many companies make such compilers and the zeros and 1's are everywhere - TV's, cameras, traffic lights, microwave ovens..... Since these compilers are used by every programmer in the world, even the smallest mistake in one of these compilers could cause an enormous number of traffic jams and burnt TV dinners at supper time. In the late '70s there was no easy way to tell that the compiler was translating correctly except by having humans visually inspect the resulting translation. If you think about it, the translation was being done in the first place to produce a form that a computer could understand -- all zeros and 1's. Reading this stuff...well, it's a task that really makes a human's eyes glaze over.
Thomas Plum is one of the few people whose eyes never glaze over. He looked at some of the translations and decided it would be possible to construct yet another piece of software which would test whether a compiler could take a known piece of quasi-English and always produce the right combination of zeros and 1's. That is to say, Tom decided it would be possible to construct a piece of software that would validate whether or not the compiler was translating into zeros and 1's correctly. Tom's validation software would report the circumstances under which the compiler would fail to translate correctly so that the builder of the compiler could rework the design. And that's the "validation" part.
Covering All Bases
I think you can guess the "suite" part. There are many, many validation tests. There are people who sit around in Paris thinking up standards of behavior that compilers should adhere to. These people make up more things to test. Devious programmers write quasi-Urdu instead of quasi-English just to see if they can cause the compiler to get upset. So some of Tom's tests try to simulate quasi-Urdu so that companies who make compilers can prepare for devious programmers who try to embarrass them.
There is no end in sight, actually. People love to talk, as anybody can tell by listening to Jay Leno. And they love to talk to computers. Probably you have talked to computers... or more likely swore. In any event, new compiler languages are being invented to talk to computers about tasks that need to be done.
Page Last Update: 27 October 2003