| Previous | Table of Contents | Next |
The development group had to select a programming language for the project. The VLIC programming language, called PL/MP and used since the original System/38 development, was based on the PL/I language. The MP in the name stands for Machine Product, a name that was often used to describe the hardware and both levels of microcode. The PL/MP compiler, like the IMPI assembler, generated the IMPI binary machine-level instructions.
The PL/MP language was not usable for OO programming, but the team could still use it for those LIC components that would be migrated and not rewritten. We developed a new PL/MP compiler that produced PowerPC binary machine-level instructions. In addition, we developed a special porting tool that would scan the code looking for any IMPI dependencies before converting it to the new PL/MP.
Over the years, we had looked at other development languages and had tried a few of them in various VLIC components. For example, one of our newer translators was written in Modula-2. Some other components used the C language. However, we felt none of these was suitable for the OO project we were about to undertake.
Selection of the C++ programming language was reasonably straightforward. We needed to develop some very low-level operating-system code. At times it would be necessary to drop into assembly language for optimum performance, and using C++ made this easier. In fact, the C++ language is sometimes thought of as todays version of an assembly language.4
4Dick Baines likes to compare programming languages to carving a bar of soap. For example, he says programming in RPG is like carving a bar of soap with a plastic spoon. Programming with C++ is like carving that same bar of soap with a double-edged razor; you can make some very precise cuts, but before you are done, you will have lots of blood on the soap.
The other advantage of C++ was our ability to hire programmers with knowledge of this language. We needed many new programmers for this development project, and we started a massive hiring campaign. We soon had more than 200 people working on the SLIC project.
Education was critical to our success. New people had to learn about the AS/400s internals.5 Our existing VLIC programmers had to learn to program in C++. We had people who knew C++, but for the most part they were using it as a better C language. We needed to educate everyone on how to do OO design. This was a real problem, because we didnt have anyone in Rochester who had done much more than read a few books on the subject.
5I originally created much of the contents of this book for that education.
Chris Jones, who with the other project leaders put together the original software plan to get to the PowerPC processors, stepped in with a solution: He had found an outside consultant who was an expert in OO technology and C++. We had never before gone outside to find someone to train our people. IBM did its own internal education, and our education people were not too keen on hiring an outsider. Chris persevered and convinced management to hire the consultant, who put all our people through six weeks of intensive training. We even constructed a special classroom, which we used exclusively for teaching this material, right in the middle of our development area.
The ability to iterate the design is a fundamental strength of OO programming, but this also makes it difficult to measure progress. The technique we used to gauge progress was to create Bring up Binds (BUBs). Each BUB was a collection of objects that provided a clearly defined set of operating-system functions and interfaced to other components. By creating and testing these BUBs against the other components, we could ensure that we were making progress. BUBs allowed the operating system to be staged in an orderly manner (they also gave rise to a take-off on a well-known Budweiser advertising slogan, This BUBs for you.).
OO technology held out the promise of greater productivity for our programmers. During the SLIC development, our programmers who used OO saw a gain of four times the productivity over using traditional methods. OO delivered on its promise. The SLIC project, which began in June of 1992, produced more than 1 million lines of C++ code and more than 7,000 classes. Counting all the ported code, we had more than 3 million lines of operating-system code under the MI.
| Previous | Table of Contents | Next |