Выбрать главу

Wiz bit his lip and silently cursed the bright sun and the shuttered houses. He looked up and down the street frantically, but there was not an open door or window to be seen.

There was a storm sewer opposite. It didn’t look big enough to take him and it was covered with an iron grate, but it was the only chance he had. Wiz dashed across the street and levered up the grate with a quick jerk of his halberd. Then heedless of how deep the hole might be he thrust himself through.

It was perhaps eight feet from the street to the trickle of freezing slime that ran through the bottom of the sewer. The shock and the slippery bottom forced him to his hands and knees before he regained his balance. He looked up just in time to see the wizard float down the street housetop high.

Wiz dared not breathe as the man passed over the grating. The sorcerer looked directly down at his hiding place, but floated on by majestically. Apparently the shadows in the hole hid Wiz from him.

Once the man passed out of Wiz’s field of vision, he breathed a sigh of relief. Then he froze again. There was something moving in the tunnel behind him. Something big.

The tunnel was as black as the inside of midnight, but Wiz heard a splash-scrape sound as if something too large to move quietly was trying to do so. He listened more intently. Again the splash-scrape, nearer this time.

Wiz realized he was trapped. He couldn’t see the flying wizard, but he could not have gone far. Leaving the shelter of the sewer meant exposing himself to his enemies. On the other hand, whatever he was sharing this tunnel with was getting closer by the second.

For some reason it stuck in his mind that he had found no bodies in the ruins. Not even bones.

He listened again. There was no further sound from the tunnel except the drip, drip of water. The lack of sound reminded him of a cat getting ready to pounce.

With one motion he twisted around and lashed upward with the halberd. The spike caught on the edge of the hole and he swung himself up to grab the coping with his other hand.

Behind him came a furious splashing. He swung his leg up and rolled free of the sewer just as a huge pair of jaws snapped shut where he had been. Wiz had a confused impression of a mouth full of ripping teeth and a single evil eye before he rolled away from the opening.

Gasping, Wiz gained his feet and flattened against the building. There was no sign of the flying wizard and the creature in the sewer showed no sign of coming after him.

Muddy, chilled and thoroughly frightened, Wiz ran off down the street, looking for a place to hide.

"Well," said Jerry Andrews, "what have we got?"

The team was crowded into the Wizard’s Day Room, which they were using as a temporary office while the last renovations were completed on the cow barn.

For the last two days the programmers had torn into Wiz’s spell compiler and the material he had left behind. By ones and twos they had pored over the Dragon Book, Wiz’s notes and conducted small and carefully controlled experiments.

Now Jerry had called a meeting to sum up, compare notes and plan strategy. He had set it for late afternoon, so most of the programmers were awake and functional. They had pushed the tables in the Day Room together to make a long table in the middle of the room and, heedless of tradition, pulled chairs from their accustomed spots up around it.

"Does the phrase ’bloody mess’ do anything for you?" a lean woman with short black hair and piercing dark eyes asked from halfway down the table. "This thing is written in something that looks like a bastard version of Forth crossed with LISP and some features from C and Modula 2 thrown in for grins."

"When do we get to meet this guy, anyway?" someone else asked. "I’d like to shake him warmly by the throat."

"There may be a problem with that, My Lord," Moira said from her place next to Jerry. "He went off alone into the Wild Wood and we have not yet found him."

"We’re going to need him," Nancy said. "Someone has got to explain this mess. Some of this code is literally crawling with bugs."

"You mean figuratively," Jerry corrected.

"I said literally and I mean literally," she retorted. "I tried to run one routine and I got a swarm of electric blue cockroaches." She made a face. "Four-inch-long electric blue cockroaches."

"Actually the basic concept of the system is rather elegant and seems to be surprisingly powerful," Karl said.

Nancy snorted.

"No, really. The basic structure is solid. There are a lot of kludges and some real squinky hacks, but at bottom this thing is very good."

"I’ll give you another piece of good news," Jerry told them. "Besides the Dragon Book, Wiz left notes with a lot of systems analysis and design. Apparently he had a pretty good handle on what he needed to do, he just didn’t have the time to do it. I think we can use most of what he left us with only a minimal review."

"Okay, so far we’ve just been nibbling around the edges to get the taste of the thing. Now we’ve got to get down to serious work."

"There’s one issue we’ve got to settle first," Nancy said. "Catching errors."

"What’s the matter, don’t you like electric blue cockroaches?" Danny asked.

"Cockroaches I can live with. They glow in the dark and that makes them easy to squash. I’m more concerned about HMC or EOI-type errors."

"HMC and EOI?"

"Halt, Melt and Catch fire or Execute Operator Immediately."

"One thing this system has is a heck of an error trapping system," said Jerry.

"That is because the consequences of a mistake in a spell can be terrible," Moira told him. "Remember, a spell is not a computer which will simply crash if you make an error."

The people up and down the table looked serious, even Danny.

"Desk check your programs, people," Jerry said.

"That’s not going to be good enough. There are always bugs, and bugs in this stuff can bite—hard. We need a better system for catching major errors."

"There is one way," Judith said thoughtfully.

"How?"

"Redundancy with voting. We use three different processors—demons—and they have to all agree. If they don’t the spell is aborted."

"Fine, so suppose there’s a bug in your algorithm?"

"You use three different algorithms. Then you code each primitive three different ways. Say one demon acts like a RISC processor, another is a CISC processor and the third is something like a stack machine. We split up into three teams and each team designs its own demon without talking to any of the others."

"That just tripled the work," someone said.

"Yeah, but it gives us some margin for error."

"I think we’ve got to go for the maximum safety," Jerry Andrews said finally. "I don’t know about the rest of you, but I have no desire to see what a crash looks like from inside the system."

"My Lord, you seem to have made remarkable progress," Moira said as Jerry showed her through the programmers’ new quarters.

The team had settled in quickly. Each programmer got his or her own stall and trestle tables filled the center aisle. The stalls were full of men and women hunched over their trestle table desks or leafing through stacks of material. At the far end of the room Judith and another programmer were sketching a diagram in charcoal on the whitewashed barn wall.

"Once you get used to giving verbal commands to an Emac instead of using a keyboard and reading the result in glowing letters in the air, programming spells isn’t all that different from programming computers," Jerry told her. "We’d be a lot further along if Wiz were available, but we’re not doing badly."