Crossing the Software Boundaries

EDITORIAL

Spring 1997 Dr. Dobb's Journal

by Eugene Eric Kim

Eugene is Associate technical editor at Dr. Dobb's Journal.
Whenever the opportunity arises, I like to chat with students from my alma mater, reminisce nostalgically about the good old days, complain about how things have changed, and give advice about the real world of life, careers, and relationships. I try my best to ignore their looks of disgust and constant reminders of how recently I graduated from college.

While it hasn't been long since I traded my books for a business card, it's been long enough to discover how much I didn't know. Back then, I thought the computer industry consisted of Intel and Microsoft, some also-rans, and scattered groups of pony-tailed computer libertarians. Not only is the market much broader than that, but I've also come to realize that the software industry is very provincial. People in certain niches—like the PC market—tend to be unaware of the work (or even the existence) of other software fields.

Embedded systems are a good example. If you consider that a microprocessor and memory are what make a computer a computer, then PCs are only part of the picture. In fact, according to market-research firm IDC, only 20 percent of all microprocessors made in 1996 were used in PCs; the remaining 80 percent were used in embedded systems. If you think about it, this isn't all that surprising. Stereos, coffee makers, and cars all have microprocessors and memory, and are "computers" in every sense of the word. And all computers need software.

This need for software makes it somewhat surprising that embedded systems have traditionally been the realm of electrical engineers rather than computer scientists. While some unique expertise is obviously required, embedded-systems developers still face many of the same issues as programmers in other fields. Consider an automobile—like that described by Willard Dickerson in his article "68HC05-Based System Design," (Dr. Dobb's Journal, August 1995) or by Richard Soja in "Inside Motorola's TPU" (Dr. Dobb's Journal, December 1996)—that has chips controlling the various components of the engine and braking system. Every component—again, computers in their own right—needs to communicate with others. Programmers developing software for this system have to worry about the same things as fellow programmers writing software for networked workstations: protocols, synchronicity, latency, and the like.

Embedded systems have all sorts of nifty software applications. At the May 1996 Harvard Conference on the Internet and Society (covered in my article in the September/October 1996 issue of Dr. Dobb's Sourcebook), Ron Skelton of the Electric Power Research Institute claimed that putting electric meters on the Internet for networked meter reading would save utility companies $1 billion annually. At the July 1996 RSA Cryptographer's Colloquia, Bell Labs' Andrew Odlyzko suggested that the mostly idle processors in coffee machines (similar to the one described by Gil Gameiro in "Networking Intelligent Devices," Dr. Dobb's Journal, February 1996) could be used to crack large crypto keys on the Internet.

The point is that software tools and techniques are by no means limited to one specific field. Java, for instance, is an excellent example of technology going full circle. Sun originally envisioned Java (then called "Oak") as a language for controlling household embedded systems, then realized that Java's virtual machine could be used for distributing portable binaries over the Internet. However, Java isn't the first mainstream language on PCs to use virtual machines. Pascal's wide acceptance was arguably attributable to p-code, a virtual-machine-based implementation of Pascal that allowed people to distribute Pascal compilers and applications that would run on any system.

Crossover occurs often in software, and programming skills are portable. Readers of Dr. Dobb's—which covers all software, regardless of language or platform—have discovered over the years that you can learn something interesting from an article on, say, UNIX, even if you're a Macintosh programmer. The bottom line is that if you're planning a career in software and you have the basic skills, don't limit your horizons. You may be surprised at what's out there.