Searching for effective methods of writing software once and using it many times has been an effort not unlike the search for the Holy Grail--you know it probably doesn’t exist in exactly the form you think, and may not exist at all, and yet you keep on looking. This book is for new recruits to the search. It is a survey of the logic for, problems with, and methods of providing software portability. There is nothing technically wrong with the book. It might have been somewhat relevant when first assembled in 1981, or perhaps when originally published in France in 1984, but today it misses the mark.
After a glance at business driving forces and a quick look at major portability problems of software environments, numeric software, and data, the authors take us on a three-chapter (96 pages) tour inclu`ing software aids like macroprocessors (really]), higher-level and extensible languages and compiler writers, and language implementation methods. Two additional chapters (55 pages) give case studies of translator and interpreter implementations and a few words on operating system portability.
Software portability is described from the point of view of reusability, i.e., how easy or difficult it is to make software that is devehoped for one platform run on another. This is a useful insight, as many think that portability means that no changes should be required. Portability means literally the ability to port. The fact that portability can be achieved, attested to by the vast amount of software that runs on multiple hardware and operating system platforms with different database systems and communications facilities, proves that these problems are solvable.
This book’s usefulness is very questionable. It deals at great length with low-level topics of limited interest to the vast majority of developers, and it treats the more relevant issues inadequately. Today’s portability problems exist at relatively high-level interfaces to operating systems, database formats and database definition and manipulation languages, and communications interfaces. Public standards (e.g., SQL, X.400 Electronic Mail format),de facto public standards (e.g., dBASE III and WKS data formats, VT100 and 3270 terminal commands), and vendor-generated standards (e.g., UNIX, VAX/VMS, and MS-DOS, the Macintosh Toolbox and Microsoft Windows) have to be observed, and code must still be functional, reliable, and efficient.
Modern interface standards offer the promise of independence from the environment and raise portability issues to a high level. This is both easier and harder than dealing at a lower level. This book is of little help in understanding this, as high-level topics are treated lightly or not at all.