Genealogy of Programming Languages

Genealogy of Programming Languages

Genealogy of Programming Languages Pre-computer era Analytical engine The analytical engine, an important step in the history of computers, was the design of a mechanical general- purpose computer by the British mathematician Charles Babbage. It was first described in 1837. Because of financial, political, and legal issues, the engine was never built. In its logical design the machine was essentially modern, anticipating the first completed general-purpose computers by about 100 years.

The input (programs and data) was to be provided to the machine via punched cards, a method being used at the time to direct mechanical looms such as the Jacquard loom. For output, the machine would have a printer, a curve plotter and a bell. The machine would also be able to punch numbers onto cards to be read in later. It employed ordinary base-10 fixed-point arithmetic. There was to be a store (i. e. , a memory) capable of holding 1,000 numbers of 50 decimal digits each (ca. 20. 7kB). An arithmetical unit (the “mill”) would be able to perform all four arithmetic operations, plus comparisons and optionally square roots.

Like the central processing unit (CPU) in a modern computer, the mill would rely upon its own internal procedures, to be stored in the form of pegs inserted into rotating drums called “barrels,” in order to carry out some of the more complex instructions the user’s program might specify. The programming language to be employed by users was akin to modern day assembly languages. Loops and conditional branching were possible and so the language as conceived would have been Turing-complete long before Alan Turing’s concept.

Three different types of punch cards were used: one for arithmetical operations, one for numerical constants, and one for load and store operations, transferring numbers from the store to the arithmetical unit or back. There were three separate readers for the three types of cards. Early computer era Plankalkl Plankalkl is a computer language developed for engineering purposes by Konrad Zuse. It was the _rst high- level non-von Neumann programming language to be designed for a computer and was designed between 1943 and 1945.

Also, notes survive with scribblings about such a plan calculation dating back to 1941. Plankalkl was not published at that time owing to a combination of factors such as conditions in wartime and postwar Nazi Germany. By 1946, Zuse had written a book on the subject but this remained unpublished. In 1948 Zuse published a paper about the Plankalkl in the “Archiv der Mathematik” but still did not attract much feedback – for a long time to come programming a computer would only be thought of as programming with machine code.

The Plankalkl was eventually more comprehensively published in 1972 and the first compiler for it was implemented in 1998. Another independent implementation followed in the year 2000 by the Free University of Berlin. Plankalkl drew comparisons to APL and relational algebra. It includes assignment statements, subroutines, conditional statements, iteration, floating point arithmetic, arrays, hierarchical record structures, assertions, exception handling, and other advanced features such as goal-directed execution.

Thus, this language included many of the syntactical elements of structured programming languages that would be invented later, but it failed to be recognized widely. Short Code Short Code was one of the first higher-level languages ever developed for an electronic computer. Unlike machine code, Short Code statements represented mathematic expressions rather than a machine instruction. Short Code was proposed by John Mauchly in 1949 and originally known as Brief Code. William Schmitt implemented a version of Brief Code in 1949 for the BINAC computer, though it was never debugged and tested.

The following year Schmitt implemented a new version of Brief Code for the UNIVAC I where it was now known as Short Code. While Short Code represented expressions, the representation itself was not direct and required a process of manual conversion. Elements of an expression were represented by two-character codes and then divided into 6-code groups in order to conform to the 12 byte words used by BINAC and Univac computers. Along with basic arithmetic, Short Code allowed for branching and calls to a library of functions.

The language was interpreted and ran about 50 times slower than machine code. A-0 The A-0 system (Arithmetic Language version 0), written by Grace Hopper in 1951 and 1952 for the UNIVAC I, was the first compiler ever developed for an electronic computer. The A-0 functioned more as a loader or linker than the modern notion of a compiler. A program was specified as a sequence of subroutines and arguments. The subroutines were identified by a numeric code and the arguments to the subroutines were written directly after each subroutine code.

The A-0 system converted the specification into machine code that could be fed into the computer a second time to execute the program. The A-0 system was followed by the A-1, A-2, A-3 (released as ARITH-MATIC), AT-3 (released as MATH-MATIC) and B-0 (released as FLOW-MATIC). Modern/Structured programming languages Fortran Fortran (previously FORTRAN) is a general-purpose, procedural, imperative programming language that is especially suited to numeric computation and scientific computing.

Originally developed by IBM in the 1950s for scientific and engineering applications, Fortran came to dominate this area of programming early on and has been in continual use for over half a century in computationally intensive areas such as numerical weather prediction, finite element analysis, computational fluid dynamics (CFD), computational physics, and computational chemistry. It is one of the most popular languages in the area of high-performance computing and is the language used for programs that benchmark and rank the world’s fastest supercomputers.

Fortran (a blend derived from The IBM Mathematical Formula Translating System) encompasses a lineage of versions, each of which evolved to add extensions to the language while usually retaining compatibility with previous versions. Successive versions have added support for processing of character-based data (FORTRAN 77), array programming, modular programming and object-based programming (Fortran 90 / 95), and object- oriented and generic programming (Fortran 2003). Algol ALGOL (short for ALGOrithmic Language) is a family of imperative computer programming languages originally developed in the mid 1950s which greatly nfluenced many other languages and became the de facto way algorithms were described in textbooks and academic works for almost the next 30 years. It was designed to avoid some of the perceived problems with FORTRAN and eventually gave rise to many other programming languages (including BCPL, B, Pascal, Simula and C). ALGOL introduced code blocks and was the first language to use begin and end pairs for delimiting them. John Backus developed the Backus normal form method of describing programming languages specifically for ALGOL 58.

It was revised and expanded by Peter Naur for ALGOL 60, and at Donald Knuth’s suggestion renamed BackusNaur Form. Niklaus Wirth based his own ALGOLWon ALGOL 60 before moving to develop Pascal. LISP LISP is a family of computer programming languages with a long history and a distinctive, fully parenthesized syntax. Originally specified in 1958, Lisp is the second-oldest high-level programming language in widespread use today; only Fortran is older. Like Fortran, Lisp has changed a great deal since its early days, and a number of dialects have existed over its history.

Today, the most widely known general-purpose Lisp dialects are Clojure, Common Lisp and Scheme. Lisp was originally created as a practical mathematical notation for computer programs, influenced by the notation of Alonzo Church’s lambda calculus. It quickly became the favored programming language for artificial intelligence (AI) research. As one of the earliest programming languages, Lisp pioneered many ideas in computer science, including tree data structures, automatic storage management, dynamic typing, and the self-hosting compiler. The name LISP derives from “LISt Processing”.

Linked lists are one of Lisp languages’ major data structures, and Lisp source code is itself made up of lists. As a result, Lisp programs can manipulate source code as a data structure, giving rise to the macro systems that allow programmers to create new syntax or even new domain-specific programming languages embedded in Lisp. Cobol COBOL is one of the oldest programming languages. Its name is an acronym for COmmon Business-Oriented Language, defining its primary domain in business, finance, and administrative systems for companies and governments. A pecification of COBOL was initially created during the second half of 1959 by Grace Hopper. The specifications were to a great extent inspired by the FLOW-MATIC language invented by Grace Hopper, commonly referred to as “the mother of the COBOL language”. Since 1959 COBOL has undergone several modifications and improvements. In an attempt to overcome the problem of incompatibility between different versions of COBOL, the American National Standards Institute (ANSI) developed a standard form of the language in 1968. This version was known as American National Standard (ANS) COBOL.

In 1974, ANSI published a revised version of (ANS) COBOL, containing a number of features that were not in the 1968 version. In 1985, ANSI published still another revised version that had new features not in the 1974 standard. The language continues to evolve today. The COBOL 2002 standard includes support for object-oriented programming and other modern language features. Simula Simula is a name for two programming languages, Simula I and Simula 67, developed in the 1960s at the Norwegian Computing Center in Oslo, by Ole-Johan Dahl and Kristen Nygaard. Syntactically, it is a fairly faithful superset of Algol 60.

Simula 67 introduced objects, classes, subclasses, virtual methods, coroutines, discrete event simulation, and features garbage collection. Simula is considered the first object-oriented programming language. As its name implies, Simula was designed for doing simulations, and the needs of that domain provided the framework for many of the features of object-oriented languages today. Simula has been used in a wide range of applications such as simulating VLSI designs, process modeling, protocols, algorithms, and other applications such as typesetting, computer graphics, and education.

Since Simula-type objects are reimplemented in C++, Java and C# the inuence of Simula is often understated. The creator of C++, Bjarne Stroustrup, has acknowledged that Simula 67 was the greatest influence on him to develop C++, to bring the kind of productivity enhancements offered by Simula to the raw computational speed offered by lower level languages like BCPL. Basic In computer programming, BASIC (an acronym for Beginner’s All-purpose Symbolic Instruction Code) is a family of high-level programming languages.

Haven’t found the essay you want?