Overview of C Language:-

C is a structured programming language developed by Dennis Ritchie in 1973 at Bell Laboratories. It is one of the most popular computer languages today because of its structure, high-level abstraction, machine independent feature etc.

History of C language:-

C language has evolved from three different structured language ALGOL, BCPL and B Language. It uses many concepts from these languages while introduced many new concepts such as datatypes, struct, pointer etc. In 1988, the language was formalised by American National Standard Institute(ANSI). In 1990, a version of C language was approved by the International Standard Organisation(ISO) and that version of C is also referred to as C89.

The idea behind creating C language was to create an easy language which requires a simple compiler and enables programmers to efficiently interact with the machine/system, just like machine instructions.

C language compiler converts the readable C language program into machine instruction.

Applications of C:-

C language has widely uses, some main uses are given below.

  1. Used to develop softwares that control embedded systems. Examples of some embedded systems are washing machine, microwave oven, etc.
  2. For creating computer applications.
  3. UNIX operating system is developed in C language.

Features of C language:-

  1. Simple, C is a simple language in the sense that it provides structured approach (to break the problem into parts), rich set of library functions, data types etc.
  2. Machine Independent or Portable,Unlike assembly language, c programs can be executed in many machines with little bit or no change. But it is not platform-independent.
  3. Mid-level prorgramming language,C is also used to do low level programming. It is used to develop system applications such as kernel, driver etc. It also supports the feature of high level language. That is why it is known as mid-level language.
  4. Structured prorgramming language,C is a structured programming language in the sense that we can break the program into parts using functions. So, it is easy to understand and modify.
  5. Rich Library,C provides a lot of inbuilt functions that makes the development fast.
  6. Memory Management,It supports the feature of dynamic memory allocation. In C language, we can free the allocated memory at any time by calling the free() function.
  7. Speed,The compilation and execution time of C language is fast.
  8. Pointer,C provides the feature of pointers. We can directly interact with the memory by using the pointers. We can use pointers for memory, structures, functions, array etc.
  9. Recursion,In c, we can call the function within the function. It provides code reusability for every function.
  10. Extensible,C language is extensible because it can easily adopt new features.

Types of Programming Languages:-

Programming Languages broadly categorized into 4 categories.

  • Machine Language.
  • Assembly language .
  • High Level Language.
  • Low Level Language.

Machine Language:-

A machine language consists of the numeric codes for the operations that a particular computer can execute directly. The codes are strings of 0s and 1s, or binary digits (“bits”), which are frequently converted both from and to hexadecimal (base 16) for human viewing and modification. Machine language instructions typically use some bits to represent operations, such as addition, and some to represent operands, or perhaps the location of the next instruction. Machine language is difficult to read and write, since it does not resemble conventional mathematical notation or human language, and its codes vary from computer to computer.

Assembly language:-

Assembly language is one level above machine language. It uses short mnemonic codes for instructions and allows the programmer to introduce names for blocks of memory that hold data. One might thus write “add pay, total” instead of “0110101100101000” for an instruction that adds two numbers. Assembly language is designed to be easily translated into machine language.

High Level Language:-

Sometimes abbreviated as HLL, a high-level language is a computer programming language that isn't limited by the computer, designed for a specific job, and is easier to understand. It is more like human language and less like machine language. However, for a computer to understand and run a program created with a high-level language, it must be compiled into machine language. The first high-level languages were introduced in the 1950's. Today, high-level languages are in widespread use. These include BASIC, C, C++, Cobol, FORTRAN, Java, Pascal, Perl, PHP, Python, Ruby, and Visual Basic.

Low Level Language:-

Low-level languages are designed to operate and handle the entire hardware and instructions set architecture of a computer directly. Low-level languages are considered to be closer to computers. In other words, their prime function is to operate, manage and manipulate the computing hardware and components. Programs and applications written in a low-level language are directly executable on the computing hardware without any interpretation or translation.

Assembler Compiler and Interpreter:-

Assembler:-

A program which translates an assembly language program into a machine language program is called an assembler.

Compiler:-

It is a program which translates a high level language program into a machine language program. A compiler is more intelligent than an assembler. It checks all kinds of limits, ranges, errors etc. But its program run time is more and occupies a larger part of the memory. It has slow speed. Because a compiler goes through the entire program and then translates the entire program into machine codes.

Interpreter:-

An interpreter is a program which translates statements of a program into machine code. It translates only one statement of the program at a time. It reads only one statement of program, translates it and executes it. Then it reads the next statement of the program again translates it and executes it. In this way it proceeds further till all the statements are translated and executed.