Sunday, June 21, 2009

History of C++

During the 60s, while computers were still in an early stage of development, many new programming languages appeared. Among them, ALGOL 60, was developed as an alternative to FORTRAN but taking from it some concepts of structured programming which would later inspire most procedural languages, such as CPL and its succesors (like C++). ALGOL 68 also directly influenced the development of data types in C. Nevertheless ALGOL was an non-specific language and its abstraction made it impractical to solve most commercial tasks.

In 1963 the CPL (Combined Programming language) appeared with the idea of being more specific for concrete programming tasks of that time than ALGOL or FORTRAN. Nevertheless this same specificity made it a big language and, therefore, difficult to learn and implement.

In 1967, Martin Richards developed the BCPL (Basic Combined Programming Language), that signified a simplification of CPL but kept most important features the language offered. Although it too was an abstract and somewhat large language.

In 1970, Ken Thompson, immersed in the development of UNIX at Bell Labs, created the B language. It was a port of BCPL for a specific machine and system (DEC PDP-7 and UNIX), and was adapted to his particular taste and necessities. The final result was an even greater simplification of CPL, although dependent on the system. It had great limitations, like it did not compile to executable code but threaded-code, which generates slower code in execution, and therefore was inadequate for the development of an operating system. Therefore, from 1971, Dennis Ritchie, from the Bell Labs team, began the development of a B compiler which, among other things, was able to generate executable code directly. This "New B", finally called C, introduced in addition, some other new concepts to the language like data types (char).

In 1973, Dennis Ritchie, had developed the basis of C. The inclusion of types, its handling, as well as the improvement of arrays and pointers, along with the later demonstrated capacity of portability without becoming a high-level language, contributed to the expansion of the C language. It was established with the book "The C Programming Language" by Brian Kernighan and Dennis Ritchie, known as the White Book, and that served as de facto standard until the publication of formal ANSI standard (ANSI X3J11 committee) in 1989.

In 1980, Bjarne Stroustrup, from Bell labs, began the development of the C++ language, that would receive formally this name at the end of 1983, when its first manual was going to be published. In October 1985, the first commercial release of the language appeared as well as the first edition of the book "The C++ Programming Language" by Bjarne Stroustrup.

During the 80s, the C++ language was being refined until it became a language with its own personality. All that with very few losses of compatibility with the code with C, and without resigning to its most important characteristics. In fact, the ANSI standard for the C language published in 1989 took good part of the contributions of C++ to structured programming.

From 1990 on, ANSI committee X3J16 began the development of a specific standard for C++. In the period elapsed until the publication of the standard in 1998, C++ lived a great expansion in its use and today is the preferred language to develop professional applications on all platforms.

C++ has been evolving, and a new version of the standard, c++09, is being developed to be published before the end of 2009, with several new features.

HTTP//www.cplusplus.com

Tuesday, June 16, 2009

HISTORY OF C LANG.

C Programming Language History

- Dennis Ritchie
What is or is not implemented in the kernel represents both a great responsibility and a great power. It is a soap-box platform on 'the way things should be done.' Even so, if 'the way' is too radical, no one will follow it. Every important decision was weighed carefully. Throughout, simplicity has been substituted for efficiency. Complex algorithms are used only if their complexity can be localized.
- Ken Thompson; UNIX Implementation; The Bell System Technical Journal; July - August 1978.
The development of Unix in the C language made it uniquely portable and improvable.
The first version of Unix was written in the low-level PDP-7 assembler language. Soon after, a language called TMG was developed for the PDP-7 by R. M. McClure. Using TMG to develop a FORTRAN compiler, Ken Thompson instead ended up developing a compiler for a new high-level language he called B, based on the earlier BCPL language developed by Martin Richard. Where it might take several pages of detailed PDP-7 assembly code to accomplish a given task, the same functionality could typically be expressed in a higher level language like B in just a few lines. B was thereafter used for further development of the Unix system, which made the work much faster and more convenient.
When the PDP-11 computer arrived at Bell Labs, Dennis Ritchie built on B to create a new language called C which inherited Thompson's taste for concise syntax, and had a powerful mix of high-level functionality and the detailed features required to program an operating system. Most of the components of Unix were eventually rewritten in C, culminating with the kernel itself in 1973. Because of its convenience and power, C went on to become the most popular programming language in the world over the next quarter century.
This development of Unix in C had two important consequences:
• Portability. It made it much easier to port Unix to newly developed computers, because it eliminated the need to translate the entire operating system to the new assemble language by hand:
o First, write a C-to-assembly language compiler for the new machine.
o Then use the new compiler to automatically translate the Unix C language source code into the new machine's assembly language.
o Finally, write only a small amount of new code where absolutely required by hardware differences with the new machine.
• Improvability. It made Unix easy to customize and improve by any programmer that could learn the high-level C programming language. Many did learn C, and went on to experiment with modifications to the operating system, producing many useful new extensions and enhancements.

Monday, June 15, 2009

FLOWCHART

OVERVIEW
• Quality Improvement Tool: Flow charts used specifically for a process.
• A flow chart is defined as a pictorial representation describing a process being studied or even used to plan stages of a project. Flow charts tend to provide people with a common language or reference point when dealing with a project or process.
• Four particular types of flow charts have proven useful when dealing with a process analysis: top-down flow chart, detailed flow chart, work flow diagrams, and a deployment chart. Each of the different types of flow charts tend to provide a different aspect to a process or a task. Flow charts provide an excellent form of documentation for a process, and quite often are useful when examining how various steps in a process work together.
• When dealing with a process flow chart, two separate stages of the process should be considered: the finished product and the making of the product. In order to analyze the finished product or how to operate the process, flow charts tend to use simple and easily recognizable symbols. The basic flow chart symbols below are used when analyzing how to operate a process.

In order to analyze the second condition for a flow process chart, one should use the ANSI standard symbols. The ANSI standard symbols used most often include the following:
Drive Nail, Cement, Type Letter.
Move Material by truck, conveyor, or hand.
Raw Material in bins, finished product on pallets, or filed documents.
Wait for elevator, papers waiting, material waiting
Read gages, read papers for information, or check quality of goods.
Any combination of two or more of these symbols show an understanding for a joint process.
| HISTORY | INSTRUCTIONS | INTERPRETATION | EXAMPLE | SOFTWARE | RELATED TOPICS |
________________________________________
HISTORY AND BACKGROUND
As a whole, flow charting has been around for a very long time. In fact, flow charts have been used for so long that no one individual is specified as the "father of the flow chart". The reason for this is obvious. A flow chart can be customized to fit any need or purpose. For this reason, flow charts can be recognized as a very unique quality improvement method.
| OVERVIEW | INSTRUCTIONS | INTERPRETATION | EXAMPLE | SOFTWARE | RELATED TOPICS |
________________________________________
INSTRUCTIONS
Step-by-Step process of how to develop a flow chart.
• Gather information of how the process flows: use a)conservation, b)experience, or c)product development codes.
• Trial process flow.
• Allow other more familiar personnel to check for accuracy.
• Make changes if necessary.
• Compare final actual flow with best possible flow.
________________________________________
Note: Process should follow the flow of Step1, Step 2, ... , Step N.
Step N= End of Process
CONSTRUCTION/INTERPRETATION tip for a flow chart.
• Define the boundaries of the process clearly.
• Use the simplest symbols possible.
• Make sure every feedback loop has an escape.
• There is usually only one output arrow out of a process box. Otherwise, it may require a decision diamond.
| OVERVIEW | HISTORY | INTERPRETATION | EXAMPLE | SOFTWARE | RELATED TOPICS |
________________________________________
INTERPRETATION
• Analyze flow chart of actual process.
• Analyze flow chart of best process.
• Compare both charts, looking for areas where they are different. Most of the time, the stages where differences occur is considered to be the problem area or process.
• Take appropriate in-house steps to correct the differences between the two seperate flows.
| OVERVIEW | HISTORY | INSTRUCTIONS | EXAMPLE | SOFTWARE | RELATED TOPICS |
________________________________________
EXAMPLE
Process Flow Chart- Finding the best way home
This is a simple case of processes and decisions in finding the best route home at the end of the working day.
________________________________________