Sunday 22 March 2015

HISTORY OF PROGRAMMING LANGUAGE

HISTORY OF PROGRAMMING LANGUAGE
This history was written in the spring of 2000 when I was in eighth grade. For several years after I wrote it, the text was available online and it became a reference for other articles, Wikipedia entries, and even college courses. I have placed the report here for posterity and amusement (how could I have possibly left out Python??). In 2004, I made two updates in response to e-mailed criticisms, but the text is otherwise unchanged. For a more up-to-date reference, I shamelessly point you to Wikipedia. —Andrew Ferguson   A History of Computer Programming Languages Ever since the invention of Charles Babbage’s difference engine in 1822, computers have required a means of instructing them to perform a specific task. This means is known as a programming language. Computer languages were first composed of a series of steps to wire a particular program; these morphed into a series of steps keyed into the computer and then executed; later these languages acquired advanced features such as logical branching and object orientation. The computer languages of the last fifty years have come in two stages, the first major languages and the second major languages, which are in use today. In the beginning, Charles Babbage’s difference engine could only be made to execute tasks by changing the gears which executed the calculations. Thus, the earliest form of a computer language was physical motion. Eventually, physical motion was replaced by electrical signals when the US Government built the ENIAC in 1942. It followed many of the same principles of Babbage’s engine and hence, could only be “programmed” by presetting switches and rewiring the entire system for each new “program” or calculation. This process proved to be very tedious. In 1945, John Von Neumann was working at the Institute for Advanced Study. He developed two important concepts that directly affected the path of computer programming languages. The first was known as “shared-program technique” (www.softlord.com). This technique stated that the actual computer hardware should be simple and not need to be hand-wired for each program. Instead, complex instructions should be used to control the simple hardware, allowing it to be reprogrammed much faster. The second concept was also extremely important to the development of programming languages. Von Neumann called it “conditional control transfer” (www.softlord.com). This idea gave rise to the notion of subroutines, or small blocks of code that could be jumped to in any order, instead of a single set of chronologically ordered steps for the computer to take. The second part of the idea stated that computer code should be able to branch based on logical statements such as IF (expression) THEN, and looped such as with a FOR statement. “Conditional control transfer” gave rise to the idea of “libraries,” which are blocks of code that can be reused over and over. (Updated Aug 1 2004: Around this time, Konrad Zuse, a German, was inventing his own computing systems independently and developed many of the same concepts, both in his machines and in the Plankalkul programming language. Alas, his work did not become widely known until much later. For more information, see this website: http://www.epemag.com/zuse/, or the entries on Wikipedia: Konrad Zuse and Plankalkul.) In 1949, a few years after Von Neumann’s work, the language Short Code appeared (www.byte.com). It was the first computer language for electronic devices and it required the programmer to change its statements into 0’s and 1’s by hand. Still, it was the first step towards the complex languages of today. In 1951, Grace Hopper wrote the first compiler, A-0 (www.byte.com). A compiler is a program that turns the language’s statements into 0’s and 1’s for the computer to understand. This lead to faster programming, as the programmer no longer had to do the work by hand. In 1957, the first of the major languages appeared in the form of FORTRAN. Its name stands for FORmula TRANslate




GENERATION  OF PROGRAMMING LANGUAGE

A language is a system of communication. 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 thousA language is a system of communication. 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.

Definition of 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". 
generations of programming languages

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 languages because 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.
  1. Query languages
  2. Report generators.
  3. Applications generators.
  4. Decision support systems and financial planning languages.
  5. Some microcomputer application software.

Query languages

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

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

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.
References

History of Programming Languages, Richard L. Wexelblat (ed.), Academic Press 1981.

Fourth Generation Languages Volume 1: Principles, by James Martin and Joe Leben, Prentice Hall. 1986
High Level Languages and Their Compilers, Des Watson, Addison-Wesley, 1989.

Article 1 - Standards and relation to programming languages

No comments:

Post a Comment