During the 1960s, many large software-development efforts encountered severe difficulties. Software schedules were typically late, costs greatly exceeded budgets and finished products were unreliable. People began to realize that software development was a far more complex activity than they had imagined. Research activity in the 1960s resulted in the evolution of structured programming a disciplined approach to writing programs that are clearer than unstructured programs, easier to test and debug and easier to modify. One of the more tangible results of this research was the development of the Pascal programming language by Niklaus Wirth 1971. Pascal, named after the seventeenth-century mathematician and philosopher Blaise Pascal, was designed for teaching structured programming in academic environments; it rapidly became the preferred programming language in most universities. Unfortunately, the language lacks many features needed to make it useful in commercial, industrial and government applications, so it has not been widely accepted outside the universities.
The Ada programming language was developed under the sponsorship of the United States Department of Defense(DoD) during the 1970s and early 1780s. Hundreds of separates languages were being used to produce DoD’s massive command-and-control software systems. DoD wanted a single language is quite different from Pascal. The language was named after Lady Ada Lovelace, daughter of the poet Lord Byron. Lady Lovelace is generally credited with writing the world’s first computer program in the early 1800s(for the Analytical Engine mechanical computing device designed by Charles Babbage). One important capability of Ada is called multitasking; this allows programmers to specify that many activities are to occur in parallel.
Here the key Software Trend: Object Technology
One of the authors, HMD, remembers the great frustration that was felt in the 1960s by software-development organizations, especially those developing large-scale projects. During his undergraduate years, HMD had the privilege of working summers at a leading computer vendor on the teams developing time-sharing, virtual memory operating systems. This was a great experience for a college student. But, in the summer of 1967, reality set in when the company “decommitted” from producing as a commercial product the particular system on which hundreds of people had been working for many years. It was difficult to get this software right. Software is “complex stuff.”
Improvements to software technology did start to appear with the benefits of so-called structured programming(and the related disciplines of structured system analysis and design) being realized in the 1970s. But it was not until the technology of object-oriented programming became widely used in the 1990s, that software developer finally felt they had the necessary tools for making major strides in the software development process
What are objects and why are they special? Actually, object technology is a packaging scheme that helps us create meaningful software units. These are large and highly focused invoice objects, audio objects, video objects, file objects, record objects and so on. In fact, almost any noun can be reasonably represented as an object.
We live in a world of objects. Just look around you. There are cars, planes, people, animals, buildings, traffic lights, elevators, and the like. Before object-oriented languages appeared, programming languages(such as FORTRAN, Pascal, Basic, and C) were focussed on actions rather than on things or objects. Programmers living in a world of objects program primarily using verbs. This paradigm shift made it awkward to write programs. Now, with the availability of popular object-oriented languages such as Java and C++, programmers continue to live in an object-oriented world and can program in an object-oriented manner. This is a more natural process than procedural programming and has resulted in significant productivity enhancements.
A key problem with procedural programming is that the program units do not easily mirror real-world entities effectively, so these units are not particularly reusable. It is not unusual for programmers to “start fresh” on each new project and have to write similar software “from scratch.” This wastes time and money as people repeatedly “reinvent the wheel.” With object technology, the software entities created(called classes), if properly designed, tend to be much more reusable on future projects. Using libraries of reusable componentry, such as MFC(Microsoft Foundation Classes) and those produced by Rogue Wave and much other software development organizations, can greatly reduce the amount of effort required to implement certain kinds of systems(compared to the effort be required to reinvent these capabilities on new projects).
The advantage of creating your own code is that you will know exactly how it works. You will be able to examine the code. The disadvantage is a time-consuming and complex effort that goes into designing and developing new code.
Basics of a Typical C++ Enivornment
C++ systems generally consist of three parts: a program-development environment, the language, and the C++ Standard Library
C++ programs typically go through six phases These are edit, preprocess, compile, link, load and execute
The first phase consists of editing a file. This is accomplished with an editor program. The programmer types a C++ program with the editor and makes corrections if necessary. The program source file is then stored on a secondary storage device such as a disk.C++ program file names often end with the .cpp, .cxx, .cc or .C extensions.There are Two editors widely used on UNIX systems are vi and emacs.C++ software packages for Mircosoft Windows such as Borland C++, Metrowerks Code Warrior, and Microsoft Visual C++ have built-in editors that are integrated into the programming environment.
Next, the programmer gives the command to compile the program. The compiler translates the C++ program into machine language code. In a C++ system, a preprocessor program executes automatically before the compiler’s translation phase begins. The C++ preprocessor obeys commands called preprocessor directives, which indicate that certain manipulations are to be performed on the program before compilation. These manipulations usually include other text files to be compiled and pre-compilation. These manipulations usually include other text files to be compiled and performed various text replacements.