Tools for Programming

or: How to use a computer real good

Close your eyes.

A tree towers before you, a massive machine with branches reaching to the heavens. The bark, inlaid with soft glowing lines and patches, hums with a quiet energy. Each leaf shimmers in its own hue, forming a kaleidoscopic umbrella that eclipses the sky.

You reach out and press your hand to the trunk. The metallic–yet–organic texture elicits a reverent gasp from your lips. Light pulses away from your fingertips, arcing into the core of the trunk. You press again, more firmly. Sparks shoot up the limbs and the canopy twinkles as leaves blink into new colors. You grasp a leaf between your thumb and forefinger and it gently curls around your hand, warm and suede. A feeling of serene curiosity washes over you.

You subconsciously relax your muscles. As you do, a letter slips from your other hand, breaking your reverie. You reach down and retrieve the instructions from your professor. “Write a program to convert an NFA to its equivalent DFA using the algorithm I showed you in class.”

You stare up at the tree, dumbfounded. Finite automata make plenty of sense to you, but this…creature before you is altogether foreign. Frustrated, you tug at the leaf in your grip. The world around you shakes with your motions. The leaves all go shades of brown, and the tree's soft hum takes on a harsh note.

“Why, how now!” a voice rings out from behind you. You turn to see a witch with flowing pink hair and glasses tinted for gazing into the kernel source. Orange light flickers from the ground beneath her boots to the trunk of the tree.

“I conjure you, by that which you profess, howe'er you come to know it, answer me: by what measure may I compel this tree to perform what I command of it?” (Why are you suddenly talking like this?)

“Heed this tome,” she utters, “but say thou nought.” With one hand, she proffers a book, its gilt cover glinting in the dim light of the boughs. With the other hand, a ThinkPad.

Open your eyes.

Before you is not a physical volume, but a book nonetheless. It holds not mystical, ancient secrets, but practical advice on the sometimes messy task of getting a computer to listen to your ideas. Each topic is covered in detail enough to enable you to be productive without having to become an expert. Crack it open, then reinforce your knowledge with review questions and lab exercises!