History of programming languages

from Wikipedia, the free encyclopedia

The history of programming languages begins as early as the 19th century and was strongly influenced by mathematics and engineering . From when a programming language is available cannot be clearly assessed.

Beginnings

The punch card control of the jacquard machine

With the onset of the industrial revolution , many previously manual activities were increasingly given control of machines. Due to their cyclical functionality, these were especially designed for repetitive tasks. On the other hand, it became more and more important to provide alternatives to the machine-run processes, especially since these processes could also be run faster and faster.

The introduction of the programmable loom by Joseph-Marie Jacquard at the beginning of the 19th century is an example of this need . The loom received information about the pattern to be woven through discreet omissions in the punched tape. The handicraft of weaving could now be continued as "programming art" on a medium analogous to the fabric pattern.

The first work in the field of mathematical-logical programming is a rule for the calculation of Bernoulli numbers , which Ada Lovelace created in the years 1842/1843 for the mechanical analytical engine by Charles Babbage . At that time, this program could only be carried out by hand, because there was no functioning machine in the 19th century due to manufacturing problems.

The 1930s and 1940s: Logical Calculations

The lambda calculus was developed by Alonzo Church and Stephen Kleene in the 1930s. It was proven early on that the lambda calculus is a universal programming language . Even then, theoretically just as powerful programs could have been written as they are today in any modern programming language.

With the completion of the first electronic calculating machines and the use of Boolean algebra , the development of programming languages ​​continued. In this regard, the patents of Konrad Zuse around 1937 , which describe a computer architecture that later became known as the Von Neumann machine , should be emphasized. In the 1940s, Zuse completed his Plankalkül programming language , which incorporated ideas from the Lambda calculus.

The 1950s: First modern programming languages

Grace Hopper developed the first compiler and is known as " Grandma COBOL "

In the 1950s, the first three widespread, practically used high-level programming languages ​​were developed in the USA : The oldest language Fortran ( FOR mula TRAN slator) that is still in widespread use was developed in 1954 by John W. Backus et al. designed, 1959 came Lisp ( LIS t P rocessor) by John McCarthy et al. which has a core that can be written on on one side. Also in 1959, Grace Hopper et al. with COBOL ( CO mmon B usiness O riented L anguage) a programming language for commercial applications. The aforementioned languages ​​and their successors still exist today. LISP in particular had a strong influence on the programming languages ​​later developed at American universities.

The next major milestone was set between 1958 and 1960 when an international committee drafted a "new language for algorithms" later called Algol 58 during a series of conferences. The committee completed its development with the Revised Report on Algol 60 ( ALGO rithmic L anguage). The report on the conference included many ideas that were circulating in the professional community at the time, as well as two innovations: On the one hand, the Backus-Naur-Form (BNF) for the context-free description of the syntax of the programming language. Almost all of the following programming languages ​​use the BNF to represent the syntax as context-free grammar . On the other hand, areas of validity were defined for the first time.

Although Algol 60 did not prevail in North America for political reasons, mainly because IBM offered a counter development in the form of PL / I , but also partly because of the decision not to integrate input and output into the language definition, Algol subsequently became the Standard in the (West) European world. It influenced the training of a whole generation of computer scientists and the design of later languages, particularly Simula 67 , Pascal and Scheme .

The 1960s and 1970s: Developing New Paradigms

Ken Thompson and Dennis Ritchie are the developers of the
C programming language, which is still widely used today

In the period that followed, a large number of programming languages ​​was developed, as the possibility and the need was given by the rapid progress of computer technology (see also: digital technology , microelectronics ) . The greatest success was achieved by further developments of the programming languages ​​that were already in existence, ie primarily "state change-oriented" concepts. For example, at 1964, BASIC ( B eginner's A ll-purpose S ymbolic I nstruction C ode) designed to students to facilitate the entry into the programming with Algol and FORTRAN.

In the mid-1960s, during the so-called software crisis, the phenomenon that the cost of the software exceeded the cost of the hardware appeared for the first time. As a result, there were the first major failed software projects.

BASIC eventually became popular in the more affordable home computers built in the late 1970s . The C programming language , designed in 1972 for the newly developed Unix operating system , also has its roots in Algol. It prevailed over BASIC for general application programs ; the basic functional parts ( kernels ) of many operating systems are programmed in C. Both programming languages ​​have had many variants to this day.

However, new concepts also emerged during this time. Great importance was the object-oriented programming , the data, procedure and reference aspects in the single concept of the object combined. The way of thinking and concepts of object orientation were first shown in Simula 67 , a language for simulation purposes, which was the first language to introduce object-oriented processes (not yet known at the time). It is said that their developers Ole-Johan Dahl and Kristen Nygaard worked on ship simulations. The unmanageable number of parameter relationships resulted in a confusing variety of ways in which the various attributes of the different ships could influence each other. So the idea came to them on the different types of ships each as separate objects to be treated, each class of objects for their own data and their own behavior was itself responsible. In 1962 they met at the Norwegian Computing Center in Oslo and created the first formal description of the language, which was presented in Munich. A first prototype of a Simula compiler was already running in 1964. In the 1970s, Simula was widely used in practice. The object-oriented concepts of the language had a great influence on the further development of programming languages.

While the new concepts in Simula were not yet clearly distinguished from their implementation, the concepts were further developed in the period that followed. Their terms and procedures have been refined in the Xerox Palo Alto Research Center since the early 1970s using the Smalltalk language and implemented more consistently than in Simula. Small talk was finally released to the general public in the 1980s. Smalltalk was designed as a fully dynamic system in which objects could be created and changed interactively - in contrast to the previously used system of static programs. The integration of the language in an innovative graphical user interface , which enabled real interaction for the first time, is also remarkable compared to its successors .

After Niklaus Wirth was disappointed in his work on Algol, he developed Pascal together with Kathleen Jensen and from 1971 consistently used Pascal for teaching language concepts. After discovering how difficult it was to develop software for larger projects with several developers, in 1978 he published the further development Modula-2 with a strict module and interface concept .

Prologue by Alain Colmerauer , Phillipe Roussel , and Robert Kowalski established the logical programming from 1972 and was established until 1975.

The 1980s: Consolidation and Object Orientation

In the 1970s, the United States Department of Defense expressed concern about the number of over 450 programming languages ​​used in its projects. Many of the programming languages ​​were also not standardized , but dependent on the provider. A working group should clear this jungle and find a language that meets the military requirements of the ministry. Many existing languages ​​were checked, but in 1977 the working group decided that none of the existing languages ​​was suitable. After four language drafts had been written out, the decision was made in 1980 for the Ada language, composed from the best ideas of the drafts . This design was standardized under the name MIL-STD 1815, since the namesake Ada Lovelace was born in 1815 . The US Department of Defense temporarily required that any software project with more than 30% new code had to be written in Ada. In order to support the dissemination of standards, which funded US Air Force development of the free GNAT - compiler . The number of different programming languages ​​in the ministry was eventually reduced to 36.

The object-oriented programming languages got stronger and stronger over time.

The object-oriented programming began in the mid-1980s to become popular, mainly due to the influence of C ++ , which was conceived as a syntactic extension of the C language. Bjarne Stroustrup introduced C ++ in 1983. Since then, many existing programming languages ​​have received object-oriented extensions such as Pascal or LISP (see the illustration).

In 1988 Niklaus Wirth , who had already designed the structured programming language Pascal and the modular programming language Modula-2, published the object-oriented programming language Oberon . With this, all not absolutely necessary elements of the relatively powerful programming language Modula-2 were left out and the object orientation was implemented through the simple concept of expanding the data types ( declared with RECORD ) . Together with Jürg Gutknecht , he was able to use this programming language to program an Oberon compiler and the Oberon System operating and runtime system in a short time , which is equipped with automatic garbage collection , as is necessary for full object orientation .

In 1995, object orientation was also included in the new Ada 95 version as an extension . The position of object-oriented programming was further strengthened by the rapidly growing popularity of graphical user interfaces, which were very easy to program in an object-oriented manner.

Adding object-oriented extensions to languages ​​that were not originally designed for this often led to problems with the compatibility and maintainability of previously written source code . In turn, many purely object-oriented languages ​​lacked procedural programming capabilities to which many programmers had become accustomed. In order to close this gap, attempts have increasingly been made to create new object-oriented languages ​​that simultaneously allow procedural programming. The Eiffel programming language was an early attempt in this direction in 1985. In the meantime, however, Eiffel has been almost completely ousted by Java (1995). The programming language C # (2001), based on Java and C ++, pursues goals similar to those of Java.

The 1990s until today: The Internet age

James Gosling is considered to be the inventor of Java

The rapid growth of the internet presented a new challenge. Especially the Hypertext Markup Language (HTML) allowed here as markup language to make the appearance of the Internet. The Internet formed a completely new basis for the creation of software systems and thus also for the development of new types of programming languages. The Java programming language is characterized by the fact that it integrated itself into web browsers at an early stage and is the reason for its popularity. A wide variety of scripting languages ​​have also established themselves for the development of web server applications. Although none of the languages ​​brought fundamental changes in language design with them, aspects such as automatic garbage collection or strong and static typing have now been given greater consideration. The code security and the portability of the program code also attracted increasing attention , which led to the development of virtual machines as runtime environments .

The triumphant advance of object-oriented programming continued. In this context, the graphic notation forms of the Unified Modeling Language (UML) designed for object-oriented programming should be mentioned. The mostly visual modeling in UML turns software development into an orderly process. You can see that so far only the level of abstraction has been increased. However, with its increasing specification, UML is increasingly becoming a programming language in its own right.

Modern programming with development environment

Newer integrated, visual development environments have made significant advances in terms of time and cost. User interfaces can now be designed visually, code fragments can be reached directly with a click. Documentation on other program parts and libraries can be viewed directly. Usually there is even a so-called “look-up” functionality that finds out while you are writing which symbols are allowed at a certain point and suggests appropriate selections.

See also

Web links