1. INTRODUCTION

The major challenge for present technology is to generate software more efficiently. Computers are being used in essentially all areas of human activities; even products that seemingly have nothing to do with computers contain a significant portion of computer related cost.

More efficient software means three things: coding and debugging programs faster; generating programs with less errors; and producing cleaner, more readable code, which is easier to maintain.

This library provides major improvements in all three of these areas. Current experience indicates that, with this library, algorithmic programs can be developed 2-4 times faster (coding and debugging). The increase in software productivity is even bigger for in-core databases (5-10 times faster development and testing compared to hand coded C++). The resulting code is more readable, and therefore easier to maintain or transfer to another programmer.

When you use this library, software productivity is increased without sacrificing run-time performance. Programs developed with this library are just as fast as those developed with hand coded C++, and have no memory overhead. The class generator carries the overhead for data management and converts the original source into efficient, simple C++ code which does not use offsets or indexing for pointers.

Also note that there is also a C version of this library. We prefer to use C++, but if you or some of your friends need advanced data structures and persistency which handles almost as easily as C++, contact Code Farms.

This library is not just a package for the management of data, it is a new methodology, which extends the idea of structured programming. It requires not only program logic, but also the data to be structured and well organized. This library brings order into your thinking process; both you and the program will benefit.

The library helps in the development of solid production code, but it is also useful for rapid prototyping. Examples with complicated data structures including graphs and hash tables can be coded and tested within hours. For this reason, this library is invaluable for software engineering classes; students can test complicated applications without losing time on implementation details.

This text starts with the most important but simple to understand concepts, and leaves the more advanced features for later. You can read any chapter independently, but if you are a new user, reading the chapters one by one will give you the best introduction to the library.

Most programmers are able to use this library within one day. Within a week, you will be confident enough to use some advanced features.

If you are a new user, read only Chap. 1 to 15, and leave the remaining parts for later. You may never attempt to expand the existing library or to use the program in multi-user mode, and too much information would clutter your perception in the beginning.

As you read this text, try to code simple test programs as soon as you can. After reading the example in Chap.7, type your own program into the orgC/test directory as myTest.c. Then try1 myTest will run the class generator, and ctry2 myTest will compile your code. If you have any problems, see Chap. 4, the section on the test directory. Most likely, you will have to set up a proper link to your compiler.

Once you get through your first program, the spell will be broken, and progress will be rapid.

Don't be frustrated if you get a lot of class generator and compiler errors. When you program with this library, you will have a harder time to get your program through the compiler, but once it compiles, there will be very little or no run-time debugging.<\p>

If you don't plan to use the library right away, and you are only curious about it, start with Chap.6 and Chap.7. They will explain what this library is, and will lead you through a complete example.

Other data management packages come with big binders, which describe a variety of functions available from their libraries. The size of these binders may be impressive, but such systems are difficult to use. Nobody can remember all those functions. This library is just the opposite. It includes all the usual data structures, and it requires only a few pages to describe them (Chap. 11). Generic functions such as add() or del() are easy to remember and apply to most organizations in the library.

A part of the library installation is the test directory, which contains examples of every feature presently in the library. That has two advantages:

The documentation has three parts:

The last chapter (Chap.19) contains a record of new features added to library in recent versions.

The library evolved gradually and includes the experience of many people who worked with me over the past 15 years. In particular, I would like to express my gratitude to Mike Yamin(Bell Labs), Ken Keller (Frame Tech.), Mark Bales (CADENCE), Mikael Palzcewski (CADENCE), and the late Rick Stockburger (BNR). I would also like to thank Hans Gethoffer (ZUKEN, Japan), Carl Seaquist (AT&T Bell Labs), and Bill Williams (BNR) for suggestions that lead to substantial improvements of the program.

Just to avoid confusion, I would like to mention that the graphical CASE tool called "Soukup Method", which was developed in Europe, has nothing to do with Code Farms' libraries. The similarity of authors' names is purely coincidental.

Note that, throughout the documentation, instead of saying "this library", we use the acronym OrgC++ (or OrgC for the C version of the library). This name has historical reasons. In 1989, the library was originally called "Organized C Library". At that time, only the C version was available, and the name emphasized the main purpose - the management of data organizations and, in general, bringing more organization into the software design process. OrgC was the abbreviation for Organized C. Unfortunately, some programmers found the name misleading; some thought it was a new language, while others thought that Organized C and Objective C were the same thing. After some variations of the name, the package is now sold as C/C++ DATA Object Library which, I believe, better explains the purpose of the whole package.

 

Title Page Chapter 2. Installing Floppy or Tape