The History of C Language :->
Every language was designed for some specific purpose, in earlier days. For an example, FORTRAN (Formula Translator) – for mathematical and scientific Calculations. COBOL (Common Business Oriented Language) – for business applications.
Flow of Generation of Programming Languages :- >
|Machine Code and Assembly Language
|CPL and BCPL
In 1954, “The IBM Mathematical Formula Translating System” (The FORTRAN project) was developed by IBM and designed by John Backus using Speed Coding[*see @ end of page]. The main purpose of this project was creating an imperative (sequences of commands to perform for computer) programming language FORTRAN. Especially for numeric computation and scientific calculations Fortran was very suited.
At the time, more than30 years, it has been in continuous use. It was also used in applications such as computational chemistry physics, analysis of finite elements etc.
There were many versions of Fortran language derived by adding extra feature with previous one. (FORTRAN70 (Character based programming) FORTRAN90 (Array and Modularity based programming), (FORTRAN95) (High performance)).
In 1958, The Algorithmic Language (Algol–58) was derived from Fortran language. After then Algol-60 was developed in 1960.
In 1963, CPL (Combined Programming Language) was developed out of Algol60, by Christopher Strachey. Then BCPL (Basic CPL) was derived from CPL in 1967; by Martin Richards at Cambridge University. In 1969-70 B language was developed by Ken Thompson at AT&T Bell laboratories.
In the early days for doing specific operation, even a small task, you had to write many pages of code. Language B made it possible to write a few lines of code for that same operation.
In B language, everything was mentioned or expressed in machine words. And also it didn’t provide use of any data-types and structure. B language was type less. These were main drawbacks of B language.
So, to eliminate these drawbacks of language B, in 1971-73 at AT&T Bell laboratories, C language was developed by Dennis Ritchie. Base for C language is B language. Because, he derived the language C from language B, by keeping most of the syntax of the language B as same while adding data types and many other changes with it.
At the initial stage, C language was designed for specific purpose (i.e) OS (Operating System) programming of UNIX. After that the entire UNIX operating system and its tools including the C compiler were rewritten in C.
For popularity of both UNIX and C, main reason was that portability of UNIX. Because, C was very helpful for the system programmers in the way of writing only few system dependent files or parts for any new machine and then writing a C compiler specifically for the new machine instead of creating whole new operating system for that new machine. Since, mostly system utilities were written in C. This is a reason to made sense to write a new utilities in C.
To standardize the C language, a committee was formed by ANSI (American National Standard Institute), in 1983.In 1988-89 finally, ANSI C was produced a “machine dependent and an unambiguous definition of the language C which is known as the standard for C language. In the standard of ANSI C little changes made, by it, on original C design.
This standard was based on and from the book “The C Programming Language 1st edition” which written by Kernighan and Ritchie in 1978. Programmers called this book as K&R C Book (K&R Book). This version of C was called as K&R C. This was called as Traditional C. From this book only, the “Hello, World” program is famous, still.
Later on, ISO (International Standards Organization) was adopted the ANSI C language. So, actually ISO C should be correct term. But still everybody calls it as ANSI C only.
Above figure illustrates just overview for generation of programming languages (from top to bottom).Finally language C was developed from language B. After that C++, Java etc were developed.
(*) Speed coding or Speed code was the 1st higher level language created by John Backus for IBM computer in 1953. Especially it was created for IBM 701 computer to support floating point computations. And also it was the 1st language implementation of decimal i/p and o/p operations. This was derived by using machine code and an assembly language.
An assembly language is low level programming language for any programmable devices (like processors, controllers) or computers. It provides a strong correspondence link or relationship between language and architecture’s machine code instructions. The main difference between low level programming language and high level programming language is that each low level language i.e assembly language is specific to particular computer architecture where as high level language is portable for multiple architectures, but requires compilation or interpretation.
Machine code or Machine language is defined by set of instructions (Each instruction does perform very specific operation or task like MOV JUMP ADD etc) executed by CPU (Central Processing Unit) of computer directly. Now days most of the practical programs are written in high level language or assembly language and translated to executable machine code by using compiler and/or assembler etc.