Wizard’s Bane by Rick Cook

Wiz goggled. A demon! I just created a demon. Shiara had said that once a spell grew to a certain level of complexity it took the form of a demon but he had never expected to make one himself.

He had never considered what a command would look like from within the computer. I never had to worry about that, he thought, bemused.

This particular command looked darned familiar. Wiz didn’t know for sure, but he doubted that bow ties and waxed mustaches were worn anywhere on this world. After wracking his brains for a couple of minutes he remembered where he had seen the little man before. He was the cartoon character used to represent the interpreter in Starting Forth, Leo Brodie’s basic book on the Forth language.

That made a crazy kind of sense, Wiz told himself. What he had just written functionally was very close to a Forth interpreter. And he was basing his language in part on Forth. Apparently the shape of a demon was influenced by the mental image the magician has of the process.

I wonder if he speaks with a lisp?

Then he sobered. More to the point, how could he be sure that his language’s commands would respond only to the explicit spells that defined them and not by some chance idea or mental image? Wiz made his way back to the castle in deep thought.

It wasn’t at all as easy as that. The first thing Wiz discovered was that the universe was not orthogonal. The rules of magic were about as regular as the instruction set on a Z80. Some things worked in some combinations and not in others. Murphy said “constants aren’t” and Murphy was apparently one of the gods of this universe.

He was uncomfortably aware that he didn’t really understand the rules of magic. He deliberately limited his language to the simplest, most robust spells, counting on the power of the compiler to execute many of them in rapid succession to give him his power. But even that turned out to be not so simple.

There were some things which seemed to work and which were very useful, but which didn’t work consistently or wouldn’t work well when called from other spells. Wiz suspected the problem was that they were complex entities composed of several fundamental pieces. He deliberately left them out of the code. After all, he rationalized, this is only version 1.0. I can go back and add them later.

He benchmarked his compiler at about 300 MOPS (Magical Operations Per Second). Not at all fast for someone used to working on a 3 MIPS (Million instructions per Second) workstation, but he wanted reliability, not speed. Besides, my benchmarks are for real, he told himself, not some vapor wafting out of the marketing department.

There were other problems he hadn’t anticipated. Once he tried to write down a simple definition using a combination of mathematical notation and the runes of this world’s alphabet. He gave up when the characters started to glow blue and crawl off the board. After that he was careful never to put a full definition on a single piece of anything. He split his boards into strips and wrote parts of code on each board.

The clean, spare structure of his original began to disappear under a profusion of error checking and warning messages. To keep side effects to a minimum he adopted a packaging approach, hiding as much information as possible in each module and minimizing interfaces.

Wiz spent more and more time at the hut poring over his tablets and testing commands. Sometimes the mice would come out and watch him work at the rude plank bench under the window. Wiz took to eating his lunch in the hut and left crumbs for the mice. Winter was a hard time for the poor little things, he thought.

Moira noticed the change in Wiz, but said nothing at first. Part of her was relieved that he was no longer constantly underfoot, but part of her missed the ego boost that had given her. Deep down there was a part of her which missed seeing Wiz constantly, she finally admitted to herself.

Pages: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127

Leave a Reply 0

Your email address will not be published. Required fields are marked *