A language is a system of communication. Humans communicate with one another in some language, like English, German or in many other languages. We, humans, can also communicate through gestures, facial expressions, even through our emotions we can express our selves and our feelings. In order to make computers work for us, some sort of instructions must be stored in a some kind of language. And that language is called a Programming Language. A programming language consists of all the symbols, characters, and usage rules that permit people to communicate with computers. There are at least several hundred, and possibly several thousand different programming languages. Some of these are created to serve a special purpose (controlling a robot), while others are more flexible general-purpose tools that are suitable for many types of applications.
What is a Programming Language?
A programming language is a set of written symbols that instructs the computer hardware to perform specific tasks. Typically, a programming language consists of a vocabulary and a set of rules (called syntax) that the programmer must learn".
1st generation of programming languages
Machine language is the only programming language that the computer can understand directly without translation. It is a language made up of entirely 1s and 0s. There is not, however, one universal machine language because the language must be written in accordance with the special characteristics of a given processor. Each type or family of processor requires its own machine language. For this reason, machine language is said to be machine-dependent (also called hardware-dependent).
In the computer’s first generation, programmers had to use machine language because no other option was available. Machine language programs have the advantage of very fast execution speeds and efficient use of primary memory. Use of machine language is very tedious, difficult and time consuming method of programming. Machine language is low-level language. Since the programmer must specify every detail of an operation, a low-level language requires that the programmer have detailed knowledge of how the computer works. Programmers had to know a great deal aobut the computer’s design and how it functioned. As a result, programmers were few in numbers and lacked complexity. To make programming simpler, other easier-to-use programming languages have been developed. These languages, however must ultimately be translated into machine language before the computer can understand and use them.
2nd Generation of programming languages
The first step in making software development easier and more efficient was the creation of Assembly languages. They are also classified as low-level languagesbecause detailed knowledge of hardware is still required. They were developed in 1950s. Assembly languages use mnemonic operation codes and symbolic addresses in place of 1s and 0s to represent the operation codes. A mnemonic is an alphabetical abbreviation used as memory aid. This means a programmer can use abbreviation instead of having to remember lengthy binary instruction codes. For example, it is much easier to remember L for Load, A for Add, B for Branch, and C for Compare than the binary equivalents i-e different combinations of 0s and 1s.
Assembly language uses symbolic addressing capabilities that simplify the programming process because the programmer does not need to know or remember the exact storage locations of instructions or data. Symbolic addressing is the ability to express an address in terms of symbols chosen by the programmer rather than in terms of the absolute numerical location. Therefore, it is not necessary to assign and remember a number that identifies the address of a piece of data.
Although assembly languages represented an improvement, they had obvious limitations. Only computer specialists familiar with the architecture of the computer being used can use them. And because they are also machine dependent, assembly languages are not easily converted to run on other types of computers.
Before they can be used by the computer, assembly languages must be translated into machine language. A language translator program called an assembler does this conversion. Assembly languages provide an easier and more efficient way to program than machine languages while still maintaining control over the internal functions of a computer at the most basic level. The advantages of programming with assembly languages are that they produce programs that are efficient, use less storage, and execute much faster than programs designed using high-level languages.
3rd Generation of programming languages
Third generation languages, also known as high-level languages, are very much like everyday text and mathematical formulas in appearance. They are designed to run on a number of different computers with few or no changes.
Objectives of high-level languages
- To relieve the programmer of the detailed and tedious task of writing programs in machine language and assembly languages.
- To provide programs that can be used on more than one type of machine with very few changes.
- To allow the programmer more time to focus on understanding the user’s needs and designing the software required meeting those needs.
Most high level languages are considered to be procedure-oriented, or Procedural languages, because the program instructions comprise lists of steps, procedures, that tell the computer not only what to do but how to do it. High-level language statements generate, when translated, a comparatively greater number of assembly language instructions and even more machine language instructions. The programmer spends less time developing software with a high level language than with assembly or machine language because fewer instructions have to be created.
A language translator is required to convert a high-level language program into machine language. Two types of language translators are used with high level languages: compilers and interpreters.
4th Generation of programming languages
Fourth generation languages are also known as very high level languages. They are non-procedural languages, so named because they allow programmers and users to specify what the computer is supposed to do without having to specify how the computer is supposed to do it. Consequently, fourth generation languages need approximately one tenth the number of statements that a high level languages needs to achieve the same results. Because they are so much easier to use than third generation languages, fourth generation languages allow users, or non-computer professionals, to develop software.
Objectives of fourth generation languages
- Increasing the speed of developing programs.
- Minimizing user effort to obtain information from computer.
- Decreasing the skill level required of users so that they can concentrate on the application rather than the intricacies of coding, and thus solve their own problems without the aid of a professional programmer.
- Minimizing maintenance by reducing errors and making programs that are easy to change.
Depending on the language, the sophistication of fourth generation languages varies widely. These languages are usually used in conjunction with a database and its data dictionary.
Five basic types of language tools fall into the fourth generation language category.
- Query languages
- Report generators.
- Applications generators.
- Decision support systems and financial planning languages.
- Some microcomputer application software.
Query languages allow the user to ask questions about, or retrieve information from database files by forming requests in normal human language statements (such as English). The difference between the definitions for query language and for database management systems software is so slight that most people consider the definitions to be the same. Query languages do have a specific grammar vocabulary, and syntax that must be mastered, but this is usually a simple task for both users and programmers.
Report generators are similar to query languages in that they allow users to ask questions from a database and retrieve information from it for a report (the output); however, in case of a report generator, the user is unable to alter the contents of the database file. And with a report generator, the user has much greater control over what the output will look like. The user of a report generator can specify that the software automatically determine how the output should look or can create his or her own customized output reports using special report generator command instructions.
Application generators allow the user to reduce the time it takes to design an entire software application that accepts input, ensures data has been input accurately, performs complex calculations and processing logic, and outputs information in the form of reports. The user must key into computer-useable form the specification for what the program is supposed to do. The resulting file is input to the applications generator, which determine how to perform the tasks and which then produces the necessary instructions for the software program.
Decision support systems and financial planning languages combine special interactive computer programs and some special hardware to allow high level managers to bring data and information together from different sources and manipulate it in new ways.
Some microcomputer applications software can also be used to create specialized applications – in other words, to create new software. Microcomputer software packages that fall into this category include many spreadsheet programs (such as Lotus 1-2-3), database managers (Such as dBase IV), and integrated packages (such as Symphony).
5th Generation of programming languages
Natural Languages represent the next step in the development of programming languages, i-e fifth generation languages. The text of a natural language statement very closely resembles human speech. In fact, one could word a statement in several ways perhaps even misspelling some words or changing the order of the words and get the same result. These languages are also designed to make the computer “smarter”. Natural languages already available for microcomputers include Clout, Q&A, and Savvy Retriever (for use with databases) and HAL (Human Access Language).
The use of natural language touches on expert systems, computerized collection of the knowledge of many human experts in a given field, and artificial intelligence, independently smart computer systems.