Channels ▼
RSS

Design

Dr. Dobb's Journal Excellence in Programming Award



Alexander Stepanov


Linus Torvalds (Photograph courtesy of the Linux Journal.)


In conjunction with the 20th anniversary of Dr. Dobb's Journal, we're proud to announce an annual award recognizing achievement and excellence in the field of computer programming. Selected by a special editorial committee of Dr. Dobb's Journal, this year's recipients — Alexander Stepanov and Linus Torvalds — are being honored for the significant contributions they have made to the advancement of software development.

In developing the C++ Standard Template Library (STL), Alexander has created a body of work that in all likelihood will touch most mainstream programmers for years to come. Likewise, Linus, in creating the Linux operating system, has shown that powerful, sophisticated, innovative system software can be built out of sheer will and raw talent, succeeding where many others have failed.

It's also significant that, in keeping with the spirit and philosophy that has guided Dr. Dobb's Journal since its Tiny Basic days, the development of both STL and Linux was based on the principles of openness, cooperation, and technical superiority: STL has been placed into the public domain, and from its inception, Linux has been freely distributable.

In addition to being acknowledged at the Software Development '95 Conference in San Francisco, Dr. Dobb's Journal and the Miller Freeman Community Connection program are granting $1000 scholarships — in Linus and Alexander's names — to university programs of their choice. At Alexander's behest, the grant will be given to the Department of Mathematics at his alma mater, Moscow State University, Russia, to a graduate student doing research in applying mathematical methods to C++ software. For his part, Linus has designated that a scholarship be awarded to a deserving computer-science student at the University of Helsinki in Finland.

Alexander Stepanov currently heads up the Generic Programming Project at Hewlett-Packard Research Laboratories in Palo Alto, California. A graduate of Moscow State University, Alexander studied mathematics, obtaining a diploma of Teacher of Mathematics from Moscow District Educational Institute. However, it wasn't until 1972, when he was designing computers for controlling hydroelectric power stations at the Research Institute of Complex Automation (TzNIIKA), that Alexander became enamored with computers and computer programming.

Upon emigrating to the U.S., Alexander joined the computer-science staff at General Electric's Research Center in Schenectady, New York, where he established an ongoing research collaboration with Dave Musser and worked with Vladimir Lumelsky on path-planning algorithms for mobile robots.

After teaching at Polytechnic University in Brooklyn, New York (where he developed Ada Generic Library), Alexander found himself at AT&T Bell Laboratories, learning C/C++ from Andrew Koenig and Bjarne Stroustrup. From there, Alexander moved to HP Labs in Palo Alto, where, along with Meng Lee, he developed the C++ Standard Template Library. Andrew's current projects include coauthoring, with Stroustrup, a paper on the language foundations STL, another paper (with Mary Loomis) on generic programming as a programming methodology, and a book on STL with P.J. Plauger, Meng Lee, and Dave Musser.

As Alexander explains in an in-depth interview with Al Stevens beginning on page 115 of this issue, the Standard Template Library is a generic implementation of a suite of template containers which has been adopted by the ANSI C++ committee as a model for virtually the entire C++ library. STL implements a programming model which provides an orthogonal view of data structures and algorithms, as opposed to object-oriented encapsulation. Although the ideas behind STL are not new, it took someone with Alexander's vision, perseverance, and experience — along with the new generation of C++ tools — to turn the promise of generic programming into reality.

Linus Torvalds is the force behind Linux, a UNIX-like, 32-bit, protected-mode, preemptive multitasking operating system that runs on 386/486 PCs. Although a full-time student and part-time instructor at the University of Helsinki, Linus continues to manage the Linux project — which involves hundreds of programmers worldwide, all of whom are donating their time and efforts in the further development of Linux. Currently, most of Linus's time is devoted to handling the kernel development and shepherding the overall project.

Interestingly, Linux didn't start out to be an operating system, as Linus tells us in a May 1994 DDJ interview. Upon buying his first 386-based PC in early 1991, Linus didn't want to run MS-DOS and wasn't satisfied with Minix, a small UNIX-like system developed by Andrew Tanenbaum. Consequently, he began tinkering with the 386's memory management and process switching, ultimately realizing that what he was developing was looking more and more like a real operating system.

After switching development from assembly language to C, Linus made an "unofficial" release of Linux 0.01 in September of 1991. This was followed in early October 1991 with the first "official" release to the Internet of Linux 0.02, which could run the GNU Bourne Shell and GNU C compiler. Shortly thereafter, Version 0.03 arrived, then Linux 0.10. By this time, programmers around the world realized that something special was happening, as evidenced by the exchanges on comp.os.minix, and later, the comp.os.linux hierarchy. Before long, Version 0.95 was released, then 1.0 in March 1992, and finally, today's Linux 1.1, patch level 72.

The current implementation of Linux is quite powerful, running everything from the X Window system and TCP/IP to Emacs, UUCP, mail and news. The full distribution consists of kernel sources, C, C++, man pages, basic utilities, networking support, X Window, XView/OpenLook, DOS emulators, and more.

In addition to being a worldwide development project, Linux has spawned a veritable cottage industry of programming tools and resources. The operating system is distributed both at ftp sites (such as MCC in England and SLC in Canada) and on CD-ROMs published by companies such as Slackware, Yggrdasil, InfoMagic, and Walnut Creek. A number of books, including Running Linux, by Andy Oram and Matt Welsh, and magazines such as the Linux Journal have been published about the system, with many more on the way.

Still, the real significance of Linus's work is that almost single-handedly, he was able to implement true innovation in kernel design (particularly when it comes to features such as on-demand loading of system services) while achieving 100 percent UNIX System V compatibility when no other systems could. It is significant that Linus's work has been somewhat validated by Novell (who acquired UNIX from AT&T), which is evaluating Linux as the foundation for its proposed new-generation "Corsair" project.

Please join us in congratulating both Alexander and Linus. In developing their respective projects, they've demonstrated that individual programmers can make a difference, and innovation can flourish in a cooperative environment — reminding us once again of why we got into this business in the first place.


Related Reading


More Insights






Currently we allow the following HTML tags in comments:

Single tags

These tags can be used alone and don't need an ending tag.

<br> Defines a single line break

<hr> Defines a horizontal line

Matching tags

These require an ending tag - e.g. <i>italic text</i>

<a> Defines an anchor

<b> Defines bold text

<big> Defines big text

<blockquote> Defines a long quotation

<caption> Defines a table caption

<cite> Defines a citation

<code> Defines computer code text

<em> Defines emphasized text

<fieldset> Defines a border around elements in a form

<h1> This is heading 1

<h2> This is heading 2

<h3> This is heading 3

<h4> This is heading 4

<h5> This is heading 5

<h6> This is heading 6

<i> Defines italic text

<p> Defines a paragraph

<pre> Defines preformatted text

<q> Defines a short quotation

<samp> Defines sample computer code text

<small> Defines small text

<span> Defines a section in a document

<s> Defines strikethrough text

<strike> Defines strikethrough text

<strong> Defines strong text

<sub> Defines subscripted text

<sup> Defines superscripted text

<u> Defines underlined text

Dr. Dobb's encourages readers to engage in spirited, healthy debate, including taking us to task. However, Dr. Dobb's moderates all comments posted to our site, and reserves the right to modify or remove any content that it determines to be derogatory, offensive, inflammatory, vulgar, irrelevant/off-topic, racist or obvious marketing or spam. Dr. Dobb's further reserves the right to disable the profile of any commenter participating in said activities.

 
Disqus Tips To upload an avatar photo, first complete your Disqus profile. | View the list of supported HTML tags you can use to style comments. | Please read our commenting policy.
 

Video