Monday, July 31, 2017

Translators (Programming Language Translators)

What is a Translator?

A translator is a utility software which converts a source code written in programming language, by a programmer, into executable machine code. Translator takes source code as input and convert it into target language (i.e. machine language) as output. A translator is also known as programming language processor.

Source code

A source code is a set of instructions and commands written by a programmer using a programming language. Basically, source code is the set of instructions written in a programming language to give commands to computer, which is converted by a translator into executable machine code for processing.

Object code

The executable machine code, that has been translated from a programming language, with the help of a translator, is called object code.

Types of Translators

There are three types of Translators:
  • Assembler
  • Interpreter
  • Compiler

Assembler

An assembler is a utility software which converts source code written in assembly language into executable machine code, i.e., object code. An assembler serves as a bridge between symbolically coded instructions written in assembly language and the computer system.

Interpreter

An interpreter is a utility software which converts source code written in high level language into low level language, i.e., machine language. It converts source code into executable machine code line by line and directly executes the code. This means that it does not create object code, but, instead, it directly executes the code while converting it. This makes the execution of the programs faster, but only if program is small. It can be time-consuming if the program is long. So, interpreters are sometimes used to quickly test small sections of a program.
Some of the programming languages that use interpreter are BASIC and LISP.

Compiler

A compiler is a utility software that converts source code written in high level language into low level language, i.e., machine language. It converts source code into object code, at once (not line by line), which is then executed. This process takes some time, which makes the compiler's working slow, but, this is only true for small programs. If program is long then compiler executes it much faster than interpreter. Most of the high level languages use compilers. Some of them are, C, C++, etc.



Saturday, July 29, 2017

Evolution of Programming Languages

Ernest Tello, a well known writer in the field of artificial intelligence, compared the evolution of software technology to the growth of a tree. Like a tree, the software evolution has had distinct phases or "layers" of growth. These layers were built up one by one the last five decades, as shown in the figure, with each layer representing an improvement over the previous one. However, the analogy fails if we consider the life of these layers. In software systems, each of the layers continues to be functional, whereas in the cases of trees, only  the uppermost layer is functional.

 Since the invention of the computer, many programming approaches have been tried. These include techniques such as modular programming, top-down programming, bottom-up programming and structured programming. The primary motivation in each case has been the concern to handle the increasing complexity of programs that are reliable and maintainable. These techniques have become popular among the programmers over the last two decades.

With the advent of languages such as C, structured programming became very popular and was the main technique of the 1980s. Structured programming was a powerful tool that enabled programmers to write moderately complex programs fairly easily. However, as the programs grew larger, even the structured approach failed to show the desired results in terms of bug-free, easy-to-maintain, and reusable programs.

Object-Oriented Programming (OOP) is an approach to program organization and development that attempts to eliminate some of the pitfalls of the conventional programming methods by incorporating the best structured programming features with several powerful new concepts. Its a new way of organizing and developing programs and has nothing to do with any particular language. However, not all languages are suitable to implement the OOP concepts easily.

EVOLUTION


First Generation 

The first generation programming language is machine language, that is just ones and zeros. Programmers had to design their code by hand then transfer it to a computer by using a punch card, punch tape or flicking switches. There is no need to translate the code and it will run straight away. This may sound old fashioned and time taking but it has some advantages, they are:
  • Fast execution of codes.
  • No need of translators.
  • Codes can make use of special features of the processors such as special registers.

And the language had some disadvantages too, they are:

  • Code is machine dependent.
  • Time consuming.
  • Difficult to find error.
  • Difficult to modify.
  • Code cannot be ported to other system, hence, needs to be rewritten for every machine.

Second Generation

The second generation programming language is Assembly language. This language was developed by David J. Wheeler in early decades of 20th century. This language uses alphanumeric mnemonic codes, such as LDA for load and STA for store, therefore, code becomes easier to read, write and understand. Assembly language is also machine dependent, i.e., specific to a particular computer architecture. Assembly language requires a utility software called Assembler to convert the code into executable machine code.

Advantages
  • Fast execution of codes (but, slower than machine code).
  • Codes can make use of special features of the processors such as special registers.
  • Close to English, so, easier to read, write and understand.
  • Easy to modify.
  • Easy to find errors.

Disadvantages

  • Code is machine dependent.
  • Code cannot be ported to other system, hence, needs to be rewritten for every machine.


Third Generation

Although assembly language codes are close to English and are easy to understand, they are can be very slow for writing large programs and also very difficult to find errors in large code. Performing loops and conditionals are also not a straight forward task in assembly language. The third generation programming languages, or the High Level Languages, brought new programmer-friendly features for performing loops, conditionals, etc., and are easier to understand than the assembly language. These languages enable the programmers to write the codes using simple English words and familiar arithmetic symbols. The first high level language developed was FORTRAN, in 1954 by John Backus and a team of IBM software programmers.
Fortran is a general-purpose, imperative programming language that is mostly used for numeric computation and scientific computing. It is a popular language for high performance computing and is also used for the programs that benchmark and rank the world fastest supercomputers.
Some other third generation programming languages are C, C++, JAVA,C#,BASIC,etc.


Advantages

  • Machine independent, i.e., can be ported to other systems.
  • Easy to understand.
  • Easy to modify.
  • Easy to remove errors.
  • Time efficient.
Disadvantages
  • Slow in execution.
  • Requires translator.
  • Might be able to take the best use of the special features of the processor, unlike first or second generation.

Fourth Generation (4GL)

The fourth generation programming languages are also known as very high level languages. These languages are developed to make programming easier and also to develop softwares in less time, hence, reducing development cost of the software. The term 4GL was first used formally by James Martin in 1981, to refer to non-procedural high level languages.
Some fourth generation programming languages are RAMIS, Perl, PHP, SQL, Oracle reports, XUL.

Advantages
  • More programmer friendly.
Disadvantages
  • Sometimes code become inelegant and hard to maintain.

Fifth Generation (5GL)

The fifth generation programming languages are mainly used in artificial intelligence. These language use constraints rather than algorithms, given by programmer, to solve a problem. These languages are designed to make a computer solve a given problem without the programmer. In this way, users can concentrate upon the problems needed to solve and the conditions required to be met, without worrying about the algorithm to solve them.
Some fifth generation programming languages are Prolog,OPS5 and Mercury.











VigLink badge