HISTORY OF PROGRAMMING LANGUAGES

 

 

ADA   FORTRAN  COBOL   ALGOL  PROLOG LOGO LISP SQL SMALL TALK

JAVA      C++     C     Pascal     BASIC

               

 

 

 

 

 

 

 

 

 

 

 

The next step in computer languages came in 1957 with the introduction of FORTRAN, which stands for Mathematical FORmula TRANslating System.  One of the first sites to use this language was the Westinghouse-Bettis Atomic Power Laboratory.  They loaded up the compiler, ran a simple test program written in FORTRAN and the machine promptly spit out an error message on the printer.  Behold, the first of many programming errors.  After correcting the card, they ran the test program again which remarkably spit out… the right answers!

                The main man behind the language called FORTRAN?  John Backus.  Backus, after serving in World War II, enrolled in a school for radio technicians.  An instructor at the school noticed John’s mathematical prowess and told him to continue his learning at Columbia University.  After graduating with a master’s in mathematics, at the ripe young age of 25, Backus went to work for IBM.  He lead a team that developed an interpreter called Speedcoding for the IBM 701 machine.  But programming was not all Backus could do, after that project, he aided in the development with the 701’s successor, the 704. 

In late 1953, Backus talked to his boss about making a computer language to aide in the speed of development in programs.  The idea was that his compiler would allow users to write programs in algebraic notation and the compiler would convert the language into machine code automatically.  It was the correct time for such an idea.  IBM was pushing it’s computer sales.  The language would not only bring down the high cost of programming (because only a small percentage of people write in machine code), but it would also make programming appear more friendly.  The green light given, Backus went to work.

The computer language was easy to make, the compiler on the other hand, was not.  The team was inundated with problems:  solving input, output, loops, and the conversion to machine code all at once.  What was originally a 6 month project turned into a 4 year one.  To make sure they were not disturbed, towards the end of the project, the team slept during the day and worked at night, alone with the IBM 704.  Westinghouse-Bettis received the compiler in punch card form with no instructions in an attempt to see how blindly FORTRAN would work.  Later, other firms got their compilers on different media including magnetic tape and it came with a nice manual. 

                What was originally intended for mathematical use, FORTRAN was soon used for many diverse programs.  Being the first of higher level languages, FORTRAN was widely used and soon became the standard in programming.  As such, FORTRAN is still one of the most used programming languages today.

                Mathematicians had a language, businessmen wanted theirs.  In 1959, the Defense Department requested a special conference on computer languages.  This conference became known as CODASYL, which stands for, the Conference on Data Systems Languages.  The conference noted there was a need for such a business oriented language.  The formed three task groups, a long-range, intermediate-range, and short-range.  The short-range task group immediately began to work on this new language despite IBM’s firm stand that any development on a new language was beyond the group’s mandate.  Later that year, the language was already forming, and a name was given to it, the Common Business Oriented Language, COBOL. 

                The intermediate-range group was quite upset over this.  They hurriedly met and approved a new language called FACT (Fully Automatic Compiling Technique).  FACT was quietly being developed and had some interesting features.  It allowed data entry via cards and a report writer.  CODASYL was asked to embrace FACT and not COBOL.  There was a civil war between the short-range group and the intermediate, but in 1960, a resolution to use COBOL was passed.

                COBOL was embraced by the business world immediately.  The specifications were published in 1960 and by the end of the year already two COBOL compilers hit the markets.  In 1962, COBOL received an upgrade, which made it even more useable.   It fitted the business world perfectly.  COBOL could do simple mathematical functions to very large amounts of data.  COBOL was also not machine specific.  It was ported to many different computers and was universal.  A program written in COBOL worked on numerous machines without problems.

                Even better, was the near English quality of the coding.  Statements were made like this:  IF TIME IS GREATER THAN 1800, PERFORM IST-CLASS-ROUTINE.  Readability was improved, debugging was easier, and changing features was faster.  Because of this, some programs outlived the machines they were made for.

                Before COBOL was invented, there was a third language being researched.  Algorithmic Language or ALGOL was algebraic based like FORTRAN.  Like COBOL, ALGOL was being designed by a committee.  European firms did not like the support FORTRAN was receiving and feared domination by IBM.  In 1958, there was a meeting in Zurich on the development of a universal language for scientific computing.  ALGOL 58 was born.  Among the members present was John Backus and Joe Wegstein who was to be a chairman of the COBOL short-range committee.

                There was trouble from the start.  On the second day of the meeting, talks became a tempest of furry over the decimal point.  The Europeans wanted the comma, Americans wanted the period.  After resolving not to tackle that problem for a while, the language began to take shape.  ALGOL took much of it’s form from FORTRAN.  It took the ideas FORTAN had and turned them into a more logical and aesthetically pleasing structure.  Unfortunately, because of ALGOL’s rush to completion, many features were omitted.  Absent was the procedure for input and output of data.  The idea was that those who chose to use the language would write up their own machine specific programs.

                Backus, one of ALGOL’s staunch supporters, kept working with the development despite lack of interest from his employer.  Backus began to think about syntax and devised a system to define terms in a logical way.  He developed the Backus Normal Form which later, thanks to refinement by a Danish astronomer, became known as Backus Naur Form or BNF.  ALGOL takes on significant importance as the impetus to the creation of BNF. 

ADA

      Ada was designed for the United States Department of Defense (DOD) as a common language for real-time systems. Ada is a strongly typed algorithmic language with common control structures for iteration, recursion, branching, procedures, and functions. It also pro­vides for modularity.  Modularity is when data types and procedures are packaged and com­piled separately. To facilitate real-time programming, Ada provides for modeling parallel tasks and handling exceptions without stopping program execution.

      DOD was concerned about program portability and supported the devel­opment of a standard language definition of Ada 83, which was followed by Ada 95.  Ada was written with three concerns: program reliability and maintenance, programming as a hu­man activity, and efficiency.

      In the 1970’s, DOD was spending $3 billion a year on software. We’re all used to seeing such large amounts of money going to the military, but in this case the cost was a too high. Some­thing had to be done to lower prices.  A major part of the problem was that more than 450 different programming languages were being used by the military. This produced many problems of limited portability from machine to machine and limited reusability of procedures in subsequent programs. It was time to find a standard language in which all programs for the department would be written.

About 56 percent of the software purchased was used for embedded or mission-critical computer applications, it was decided that the standard language should be geared toward those applications. Much of the computer programming done by the military is used for controlling military hardware, like tanks and air­planes.

           

 

To control such hardware, a computer program must op­erate in real-time.  Real-time is like when a tank is rolling or the plane is flying. A fighter pilot can’t wait for information to be returned from the computer center the next day. Embedded real-time systems are embedded within a larger mechanical system, such as a robot.

In 1975, the DOD set up the Higher-Order Language Working Group (HOLWG) to find a standard language for embedded computer applications.  One of HOLWG’s first step was to develop a set of requirements for the language with input from the Army, Navy, Air Force, and universities. From 1975 to 1979, as the set of requirements evolved, the name given to the set changed from Strawman, to Woodenman, to Tinman, to Ironman, to Steelman. This final Steelman set contains about 100 requirements. These constrained the language to have language constructs with specified characteristics in areas such as data types, control structures, modules, tasks, and exceptions.  Also included are simplicity, and verifiability.

The next step was to study other languages to see if any met the requirements. After studying 26 existing languages, it was determined that none filled all the requirements, and that a new language would have to be developed. HOLWG recommended that one of ALGOL 68, Pascal, or PL/I should be used as a base for the design.

      A language design competition was held. Seventeen groups sent proposals, but only four were chosen for further development. These were funded for six months to produce a preliminary language design. Each group was given the name of a color to preserve anonymity and insure fair evaluations. These groups were CII Honeywell Bull (green), Intermetrics (red), Softech (blue), and SRI Inter­national (yellow). All the groups chose Pascal as a base for their language design. At the end of six months, the Intermetrics and the CII Honeywell Bull groups were chosen as finalists and given an additional year for further development.

      In 1979, the CII Honeywell Bull team was the winner. This team, led by Jean Ichbiah, re­named the CII Honeywell Bull language to Ada. The name honors Augusta Ada Byron www.math.twsu.edu/history/Women/ada.html, the Countess of Lovelace and daughter of the English poet, Lord Byron.

She was the assistant and supporter of Charles Babbage http://ei.cs.vt.edu/~history/Babbage.html, the mathematician and in­ventor of a calculating machine called the Analytical Engine http://www.fourmilab.ch/babbage/contents.html.

                               

With the help of Babbage, she wrote a nearly complete program to compute the Bernoulli numbers, called circa 1830.

      Jean Ichbiah’s team completed the design of Ada in September 1980, only after considering 7000 comments and suggestions from language ex­perts in more than 15 nations. In January 1983, Ada became a military and Ameri­can national standard. Beginning in 1984, all embedded military software had to be programmed in Ada.

    After Ada was developed, the problem of too many languages was not solved. The DOD realized that if subsets and supersets of Ada developed and were allowed to retain the Ada name, the portability prob­lem would return. To make sure that this wouldn’t happen, the DOD took the un­precedented action of registering the name ‘Ada’ as a trademark. This provided the ability to control the use of the name and to guarantee that anything called ‘Ada’ was the standard language. That is, subsets and supersets of Ada could not legally be called ‘Ada”. Also, DOD set up the Ada Compiler Validation project to develop a set of tests to determine if a compiler does in fact implement the standard language. This process includes over 2500 tests.

      Although designed for embedded processes, Ada is not restricted to these ap­plications. Ada can be also used in both business and education.  Ada has rich general-purpose features that helped it become more popular, and in doing so is being used as the beginning programming language at a number of colleges and universities.

    Although Ada is based on the small language Pascal, Ada is very large.  It is three times the size of Pascal. This size is Ada’s biggest flaw. A real-time language should be close to 100 percent reliable.

      The updated version of the Ada 83 is Ada 95. It was initially named Ada 9X because it was due in the 1990s, though the last digit of the year was unknown at the time of development. Aside from correct­ing minor errors, several improvements are included, mainly in the areas of object -oriented programming and in parallel and distributed processing. It was con­sidered important to maintain upward compatibility so that other tools and software wouldn’t become obsolete. The needs of information systems software are different from those of real-time systems. It is hoped that various additions to the language may provide for the specific needs of different users.

 

Declarative languages are languages in which a program specifies a relation or a function.

The declarative languages we will be broken down into two categories logic based languages/ Artificial Intelligence, Functional Based Languages, and Database Languages.

 

Logic based languages/ Artificial Intelligence

PROLOG

Prolog is a programming languages for Artificial Intelligence. It owes much of its popularity to the Japanese "Fifth-Generation Computer Systems" project.

Prolog syntax is simple and similar to first order predicate logic. It is a declarative programming language that differs in many ways from more widespread procedural languages. Languages following this paradigm have their commands executed in the order necessary to achieve the solution, not the order that can be easily followed from the source code. Prolog consists of a set of facts (predicates), which are information about objects in the real world, and (inference) rules, which are relations among these objects. Predicates and constants must start by lower-case letters, while variables must be capitalized. Predicate looks like

likes(john, ann).


On the other hand, rules have the form of

conclusion :- premises

where the :- sign means "if" and the commas between premises mean "and". There is also a special predicate, not, that can be used to negate predicates. For example:

grandparent_of(X, Z) :-

                parent_of(X, Y),

                parent_of(Y, Z).

parent_of(X, Y) :-

                mother_of(X, Y).

parent_of(X, Y) :-

                father_of(X, Y).

 

Logo

"Logo means "word", "idea", and the LOGO programming language is a language of words. Words in Logo are used as names for procedures and for data, in properties & relationships".

A team from MIT developed logo, and it was originally designed to introduce children to programming. The though behind LOGO was it would help develop better thinking skills that could be transferred to other subjects. Logo was supposed to be a language for the teaching of mathematical ideas to children through computer programming. It was intended to be easy to learn, easy to use, easy to read, but a powerful enough to solve complex problems. Eventually it was discovered that Logo extended far beyond mathematical teaching. Seymour Paper. Became the spoke person for LOGO. The slogan he used was "A language for learning." This logo actually had two meanings. One Logo is a language for learning how to program a computer. This is known as Logo Thinking. This means Logo helps the user in learning how to program by first writing a program in Pseudocode, and translating into a working program.

"Second Logo also means "Learning with Logo which means LOGO is designed to learn and understand the power of computing for making abstract ideas more concrete and more modifiable."

"Significant Language Features

·         Extensible - . Logo comes with basic operations called "primitives". Words that you define, act & look just like primitives.

·         Working Definitions - A logo procedure gives the definition of some new word or concept. It is also a definition that works or computes.

Definitions Have an Inside and an Outside - Outside, or title line, tells the user what the word does. The inside defines how it is done."

Functional Based Languages

Lisp

Lisp stands for LISt Processing language, and it was first developed in the late 1950s

at MIT. One of the more famous LISP programs is Maclisp, which was written in the 1960’s at MIT’s project MAC. MACLISP set the groundwork for which other LISP programs based their model on. Years later the descendents of MACLISP programmers got together and developed a standard for Lisp systems called Common Lisp. Common LISP was intended to be portable, thus eliminating features that cannot be implemented on a large number of machines. Efforts were made to make it consistent, powerful, and stable. The LISP programming language major achievement was at one time the Department of Defense used LISP as the basis for a very high level language in developing prototypes.

 

Database Languages

SQL

The Structured Query Language (SQL) is a language for accessing data in a relational database, and it was originally created by IBM.

SQL has been through several versions and continues to evolve..

·         Version Features SQL/86 Mostly IBM's SQL dialect.

·         SQL/89 Added referential integrity.

·         Embedded SQL (C, ADA, etc.) was adopted as a separate standard in 1989.

·         SQL2 Includes embedded SQL, system catalogs and 'schemas', domains, more data types, and conversions between types called 'casts'.

·         SQL3 Includes enhanced relational capabilities, such as active rules or 'triggers', and support for object features, such as user-defined data types and inheritance.

 

The SQL3 standard was important because, among a variety of new features, it allowed defining new data types. "Historically, database vendors have invested the most product development cycles towards meeting the needs of the business community".

Imperative Languages

Imperative languages are those which facilitate computational by means of state changes. State, in this context means the condition of the computer's random access memory.

One of the main features of Imperative Languages is block structure. Block structure refers to having blocks nested within other blocks. In a block-structured language, the procedure is the principal building block of programs. Some of the more popular block structure programming languages are ALGOL, Pascal, ADA and C.

Another concept of the Imperative Languages is Object Oriented programming.

Examples of object oriented programming languages are SMALLTALK, JAVA, and C++

Object Oriented Programming

 

An OO program consists of classes that model the real world objects that we are simulating in our application. Object-oriented (OO) programming has many advantages. The most important ones are:
1. Easy to understand: OO programs are akin to the way our mind thinks in terms of real world objects.
2. Improved reliability: OO programs are modular and therefore changes to different parts of the program can be made independent of each other. This minimizes the risk of programmer error.
3. Ease of maintenance: Again the modularity of OO programs facilitates ease of implementing changes i.e. the concerned module only needs to be changed instead of modifying and rebuilding a gargantuan application to make a few changes to one particular aspect of it.
4. Faster development cycles: Development cycles are much more efficient because of the inherent code reuse that is made possible in OO programming.

There are almost two dozen major object-oriented programming languages in use today. But the leading commercial o-o languages are

C++

Smalltalk

Java

Small Talk

           

Smalltalk can be traced back to Europe in 1960. The first "object-like" system developed was B1000 in 1961 followed by Sketchpad in 1962, with Clones and Instances. In 1965, Simula was designed and built at the Norwegian Computing Center by Nygaad and Dahl for system description and simulation. In 1967, Simula 67 was designed and later introduced in 1970 to become the first programming language with Objects and Classes.

In 1972, Alan Kay (who had designed and built the first OOP-based personal computer called FLEX in 1967-68) and others at XEROX PARC created Smalltalk 72, whose roots were tied to Simula 67. Smalltalk 76, a completely object-oriented programming language, later followed this.

In 1980, Smalltalk 80, a uniformly object-oriented programming environment became available as the first commercial release of the Smalltalk language

In 1981, the out-of-print August issue of Byte magazine was the first publication to present the language to the programming community publicly.

Smalltalk language has influenced other languages such as C++ and Java.

 

  Java

Java is the latest, flashiest object-oriented language. It has taken the software world by storm due to its close ties with the Internet and Web browsers. It is designed as a portable language that can run on any web-enabled computer via that computer's Web browser. As such, it offers great promise as the standard Internet and Intranet programming language.

Java is a curious mixture of C++ and Smalltalk. It has the syntax of C++, making it easy (or difficult) to learn, depending on your experience. But it has improved on C++ in some important areas. For one thing, it has no pointers, low-level programming constructs that make for error-prone programs. Like Smalltalk, it has garbage collection, a feature that frees the programmer from explicitly allocating and de-allocating memory. And it runs on a Smalltalk-style virtual machine, software built into your web browser which executes the same standard compiled Java bytecodes no matter what type of computer you have.

Java development tools are being rapidly deployed, and are available from such major software companies as IBM, Microsoft, and

Symantec.

 

JAVA Time Line

January 15, 1991

"Stealth Project" (as named by Scott McNealy) brainstorming meeting in Aspen with Bill Joy, Andy Bechtolsheim, Wayne Rosing, Mike Sheridan, James Gosling and Patrick Naughton.

February 1, 1991

Gosling, Sheridan, and Naughton begin work in earnest. Naughton focuses on "Aspen" graphics system, Gosling on programming language ideas, Sheridan on business development.

June 1991

Gosling starts working on the "Oak" interpreter, which, several years later (following a trademark search), is renamed "Java." August 19, 1991

Green team demonstrates basic user interface ideas and graphics system to Sun co-founders Scott McNealy and Bill Joy.

Summer 1992

Massive amounts of hacking on Oak, and related components.

October 1, 1992

Wayne Rosing joins from SunLabs (which had formed in July 1990) and assumes management of the team.

March 15, 1993

The development team, now incorporated as FirstPerson, focuses on interactive television after learning about Time Warner's RFP for its interactive cable TV trial in Orlando, FL.

April, 1993

NCSA Mosaic 1.0, the first graphical browser for the Internet, is released.

June 14, 1993

Time Warner goes with SGI for its interactive cable TV trial, despite acknowledged superiority of Sun technology and assurances in mid-April that Sun won the deal.

Summer, 1993

Naughton flies 300,000 miles selling Oak to anyone involved in consumer electronics and interactive television; meanwhile, the rate at which people are gaining access to the Internet reaches breakneck speed.

August, 1993

After months of promising negotiations with 3DO to provide set-top box OS, 3DO president Trip Hawkins offers to buy the technology outright. McNealy refuses, and deal falls through.

September, 1993

Arthur Van Hoff joins team, originally to do application development environment aimed at interactive television; ends up doing mostly language design.

February 17, 1994

Alternative FirstPerson business plan for doing CD-ROM/online multimedia platform based on Oak presented to Sun executives to very mixed reviews.

April 25, 1994

Sun Interactive created, half of FirstPerson employees leave to join it.

June, 1994

"Liveoak" project started. Designed by Bill Joy to use Oak for a big small operating system project.

July, 1994

Naughton reduces the "Liveoak" project's scope to simply retargeting Oak at the Internet after writing a throwaway implementation of a Web browser in a long weekend hack.

September 16, 1994

Jonathon Payne and Naughton start writing "WebRunner," a Mosaic-like browser later renamed "HotJava"

September 29, 1994

HotJava prototype is first demonstrated to Sun executives.

Autumn, 1994

Van Hoff implements Java compiler in Java. (Gosling had previously implemented it in C.)

May 23, 1995

Sun formally announces Java and HotJava at SunWorld '95.

May 23, 1995

Netscape announces its intention to license Java for use in Netscape browser.

September 21, 1995

Sun-sponsored Java development conference held in New York City.

September 25, 1995

Sun announces expanded alliance with Toshiba and a joint project to develop remote information retrieval products which incorporate Java.

September 26, 1995

Sunsoft announces suite of business-oriented development products incorporating Java.

October 30, 1995

Oracle announces its WebSystem suite of WWW software which includes a Java-compatible browser.

October 30, 1995

At the Internet World Conference in Boston, Lotus Development Corp., Intuit Inc., Borland International Inc., Macromedia Inc.,and Spyglass Inc. announce plans to license Java.

December 4, 1995

Sun and Netscape announce Javascript, a scripting language based on the Java language which is designed to be accessible to non-programmers.

December 4, 1995

Sun, Netscape and Silicon Graphics announce new software alliance to develop Internet interactivity tools.

December 4, 1995

Borland, Mitsubishi Electronics, Sybase and Symatec annouce plans to license Java.

December 6, 1995

IBM and Adobe announce licensing agreement with Sun for use of Java.

December 7, 1995

Microsoft announces plans to license Java during announcement of suite of new Internet products, including Visual Basic Script.

 

 

 

 

Bjarne Stroustrop

C++

C++ originated with Bjarne Stroustrop, and although it is not an entirely new language, C++ represents a significant extension of C abilities. We might then consider C to be a subset of C++. C++ supports essentially every desirable behavior and most of the undesirable ones of its predecessor, but provides general language improvements as well as adding OOP capability. Note that using C++ does not imply that your are doing OOP. C++ does not force you to use its OOP features. You can simply create structured code that uses only C++'s non-OOP features.

The designers of C++ wanted to add object-oriented mechanisms without compromising the efficiency and simplicity that made C so popular. One of the driving principles for the language designers was to hide complexity from the programmer, allowing her to concentrate on the problem at hand. Because C++ retains C as a subset, it gains many of the attractive features of the C language, such as efficiency, closeness to the machine, and a variety of built-in types. A number of new features were added to C++ to make the language even more robust, many of which are not used by novice programmers

Two important features are that C++ has a strong compiler type checking and a user-extensible language. By enforcing stricter type-checking, the C++ compiler makes us acutely aware of data types in our expressions. Stronger type checking is provided through several mechanisms, including: function argument type checking, conversions, and a few other features we will examine below. C++ also enables programmers to incorporate new types into the language, through the use of classes. A class is a user-defined type. The compiler can treat new types as if they are one of the built-in types. This is a very powerful feature. In addition, the class provides the mechanism for data abstraction and encapsulation, which are key to object-oriented programming.

Another type of Imperative language is referred to as Parallel Processing, which refers to the simultaneous use of more than one CPU to execute a program. It is possible with single-CPU computers, to perform parallel processing. This is done by connecting the computers in a network. However, this type of parallel processing requires very

sophisticated software called distributed processing software. Parallel processing differs from multitasking, in which a single CPU executes several programs at once. One example of the parallel processing language is Occam

Occam

Occam is a parallel computing language based on the Communicating Sequential Processes programming model designed by Tony Hoare. The CSP model is based on the idea of several 'regular' sequential processes that are running in parallel to each other. There were two versions of the Occam language Occam and occam2.

 

 

.