Brief History of C language

C is a general purpose and structured programming language. It is a procedural, high-level  and machine independent programming language.

C was evolved in the 1970s from ALGOL, BCPL and B by Dennis M. Ritchie and his team at the Bell Telephone Lab, Inc.(now AT & T Bell Lab) as a system programming language to construct utilities running on Unix.

C uses many concepts of these languages and added the concept of data types,  rich set of operators, clean syntax, direct memory accessibility, simple set of keywords  and many other powerful features.

It was originally created for the specific purpose of writing Operating System software. Since it was developed along with the UNIX operating system, it is strongly associated with the UNIX  operating system and its command.

It is famous for writing system software e.g operating system, device driver, database management system, game engines and many more.

It was designed to be compiled to produce low level  access to memory and language constructs that map efficiently to machine instruction sets, all with minimal runtime support. Because of its low level memory accessibility, the language was plotted to encourage cross-platform programming.

Many other languages have  borrowed  syntax and many features from C language e.g Java, Perl, Python, Go, JavaScript, LPC, Rust, Verilog, Swift and SystemVerilog and many other programming languages.

The origin of C is closely tied to the development of the UNIX operating system, originally implemented in assembly language on a PDP-7 (Programmed Data Processor) by Ken Thompson and Dennis M Ritchie, consolidating several ideas from his team. In the end, they decided to port the Operating system to a PDP-11.

The original PDP-11 version of UNIX operating system was also developed in assembly language.

After that, Ken Thompson desired a programming language to make utilities for the new platform. So, he tried to make a Fortran compiler, but the idea didn't work. Then, he created a cut-down version of the freshly developed BCPL ( system programming language) The official description of BCPL was not available at the time and then Thompson modified the syntax of BCPL to be less wordy, producing the similar but somewhat simpler B language.

However, some utilities  were ultimately written in B because it was very slow, and not able to take advantage of PDP-11 features such as byte addressability. That time Dennis Ritchie was improving the B language, which resulted in a new language called C.

In 1973, UNIX version 4 was released and the UNIX kernal was extensively re-developed in the C language.

Now, we have to understand what the structured, general purpose and procedural programming language means. Let us start with the structured programming language, what is it?

Structured Programming

In structured programming a program is broken down into small independent tasks that are small enough to be understood easily, without having to understand the whole program. Each task has its own functionality and performs a specific part of actual processing. Each part again broken down into subtasks if necessary.

The program designed  using the structured programming technique is well defined control structures so debugging and testing will be easy.

There are some following reasons for preferring structured programming:

  1. It is easy to write a structured program because complex programs are broken down into a number of smaller tasks. Every task can be assigned to a different function or programmer.
  2. It is easy to debug a structured program means if the program has an error or a bug, a structured programming design makes it easier to isolate the problem to a specific part of code.
  3. Code reusability- some line of  repeated code or routines can be accomplished by using functions or macros. It can overcome the redundancy of code writing, for the same problem or task, it can be reused. There is no need to rewrite the code for the same problem, or at least  only need a small modification.

Procedural programming

Procedural programming is a programming technique, which is derived from Structured  programming, based on the concept of procedure call. It contains a series of computational steps to be carried out. Any of the procedures might be called during a program's execution, including by other procedures or itself.

There are many other procedural programming languages e.g BASIC, COBOL, FORTRON, PASCAL etc.

General purpose  programming language

General-purpose programming language is a programming language designed to be used for writing softwares in a broad variety of application domains .

Like any other programming language, the original version of C programming language has undergone a number of revisions.

During the 1970s, C had evolved into what is known as, “Traditional C”.

The language became more popular after the publication of the book ‘The C programming Language’ by Brain Kerningham and Dennis Ritchie in 1978 which is first edition of C and the language come to be known  as “K&R C” among the programming community.

To assure that the C language remains standard, in 1983, American National Standard institute(ANSI) appointed a technical committee to define the standard  for C.

The Committee approved a version of C in  1989 which is now known as ANSI C. It was approved by the International Standard organization(ISO) in 1990.

After the above standards the three more  C standards (link) came out which are C99 ,C11  and C18.