The history of the emergence of programming languages. The first high-level programming language is Planckalkühl. Choosing a language for the task

Programming is a laborious and complex process that not everyone can comprehend. Machine language is made up of many algorithms and And today's computers are such perfect hardware because they are programmed. And the development history would not have been so successful software, if a special language had not been invented for machines that translate symbolic keywords into machine codes. Let's consider how the history of the development of programming languages \u200b\u200bevolved.

The first autocodes appeared in 1955 by the efforts of IBM developers under the guidance of engineer John Backus. It was a language high levelnamed Fortran, not a set of disparate simple commands, and the organization of larger codes, which came to be called operators, or algorithmic languages... To translate them into machine autocode, translators were invented that transform the algorithms and make it understandable for an electronic computer. This happens in two ways: interpretive and compilation. Due to its simplicity, the versions of Fortran quickly came into use, and the last of them is still one of the computers today.

However, this is not the only autocode for cars. The history of the development of programming languages \u200b\u200bcontinues with the creation of Algol algorithms, which are used mainly in the scientific environment and have a large number of new concepts in their composition. This event takes place in 1960. And a little later, inquisitive employees of IBM came up with the Cobol language, oriented to use in a business environment and used to process complex and voluminous information of an economic nature.

The history of the development of programming languages \u200b\u200bis continued by professors of the College in Dartsmouth T. Kurtz and J. Kemeny, who developed the well-known BASIC. It is much simpler than Fortran, and therefore was used in It made an explosion, becoming the main set of programming autocodes, and making computers the property of the most common users.

Ease of use and the possibility of interactive communication are the most important advantages of the BASIC language. The disadvantages include the absence of restrictions on the compilation of programs, which very often confuses them and makes them logically incomprehensible. BASIC programs are slow because they are not based on compilers, but on interpreters.

Today, scientists continue to work on its improvement and try to bring Pascal closer to the program, which further marked the history of the development of programming languages. Its creator, by right, is considered a professor at the Zurich Polytechnic University Niklaus Wirth. And he gave the name to his invention in honor of Pascal, who was the first designer of the very first computing machine. It is one of the easiest and most accessible programming languages, allowing you to write clear and understandable programs.

The history of programming would be incomplete without the Ada language, named after the first female programmer, Ada Lovelace, the daughter of the well-known sweat. It is a more advanced and versatile programming language based on Pascal.

The history of software development has in its arsenal many more programming languages \u200b\u200bthat are written for special areas of application. For example, Simul, Simkrit and GPSS are used in modeling. The FORT language is used to control the equipment. written in SI language. Databases are created by the Kodasil language. For teaching programming, Logo, Robik and A.P. are convenient. Ershova.

The history of the development of programming has not yet been written to the end and this is unlikely to happen in the near future.

Initially, programming was extremely primitive and practically did not differ from an ordered binary code with a formalized approach. In fact, when the sphere was born, there were few differences between a programming language and computer code. There were no obvious and natural conveniences for the programmer; he was obliged to have knowledge of the numerical codes for each command of the machine. Even the allocation of memory for executing commands fell on the specialist.

To simplify the handling of computers, people began to actively develop languages, one of the first was Assembler... Symbolic names were used to display variables. Instead of numerical operations, it is enough for a person to know mnemonic names, their memorization was greatly facilitated. Already at this stage, programming languages \u200b\u200bhave become closer to a human-readable language.

The pioneers among programming languages \u200b\u200binclude Fortran is an abbreviated combination of 2 words: Formula and Translation... Created already in the mid-50s. Until now, the language is used due to the ease and simplicity of writing, as well as the developed system of libraries for Fortran. It is more often used for scientific and engineering calculations, and is also actively used in physics and other sciences related to mathematics.

Narrow languages

Due to the increase in the scope of use computer other languages \u200b\u200bhave appeared for individual developments in new areas:

  • the economic direction remained unoccupied until the appearance of the Kobol;
  • Snobol - processes algorithms related to texts;
  • Lisp. Works on the basis of algorithms for working out symbols. It is actively used for the formation of artificial intelligence.

Already in 1968, a competition was launched for the first time, in which the main place was the title of the best programming language to start a career. It was planned to use the data for training specialists. Won the victory ALGOL-68, but he remained little known, and we are not talking about popularity.

Especially for participation in the competition was created Pascal, the developer was Niklaus Wirth. The language is very accessible, convenient and combines many powerful tools for structuring information. Despite the initial development for the purpose of teaching students, Pascal was widely adopted and actively developed. Even today it is one of the best and most famous programming languages.

To educate children in schools, Logo, stood at the origins Samuel Pipert... Advantages - ease of work and an abundance of opportunities.

A simple BASIC language began to be taught in schools, it easily interacts with computer as a direct dialogue. Time has not influenced this area in any way, until now BASIC is the most simple language to start learning most of the common areas of programming.

Creating the C language

The development of the capabilities of computing equipment led to the need to write capacious programs for control computer... This place was rightfully taken by the C language, which began to be actively used in the 70s. A clear advantage of the language is its versatility. It outperforms Pascal in that it has nested collaboration capabilities with different machine instructions and suitable pieces of memory.

C is used everywhere as an instrumental language for writing operating platforms, translation devices, databases, and other applied, system tasks. does not have a clear focus, it is suitable for many tasks due to its efficiency, ease of transfer and economical consumption of resources. Often Si data processing speed is comparable to Assembler, the performance of programs in both languages \u200b\u200bwill be approximately equal. A small language has a lot of power.

Prologue and Hell

The introduction of functional programming inevitably led to the creation of Prolog. The tasks of the language were reduced to the analysis and interaction with human languages. The application logic is formal, it is optimal for automatic solution problems and theorems.

It wasn't until the 80s that the language of Hell was developed. It expands on the classical understanding and properties of the languages \u200b\u200bof the period. Ada was able to solve problems in real time and simulate independent solutions.

Classification

Today, classifications of languages \u200b\u200bhave been developed according to the level of work, this distribution is the most common. There are 3 main levels:

  1. Low. This includes various machine languages \u200b\u200bor flavors with symbolic encoding like Assembler and Autocode... Operators of machine instructions are taken as a basis, only they are developed with reference to the mnemonic code. Operands are no longer exact addresses, but symbolic designations of names. All models are designed for specific varieties PC, they are machine dependent. In such languages, there is a strong dependence of the language on the internal features of the system;
  2. Tall. Languages \u200b\u200bare much more common and easier to use. These include: Algol, S, Prologue, Pascal, BASIC, Fortran and others. Listed languages do not have a rigid dependence on the machine, because they are based on the capabilities of the operand system, which are similar for class algorithms. Disadvantages of a high level are high resource intensity and slow execution;
  3. Ultrahigh. There are very few language representatives, only APL and Algol-68. They are considered ultra-high-end due to the development of super-powerful operators.

According to another classification, languages \u200b\u200bare divided into:

  • symbolic - Prologue, Lisp and Snobol;
  • computing - Pascal, S, Algol, Basic, Fortran.

Development directions

Informatics in modern world develops in 3 key areas:

  1. Procedural appeared during the period of active development of computers and other computing devices, and has since been widely used. In the procedural directions, there are pronounced descriptions of the actions required to be performed. To obtain the result, a certain procedure is always carried out, which consists of various sequences of manipulations. Procedural languages \u200b\u200bare further divided into:
    • Structural. They use one operator to write integral algorithm: loops, function, branching and the rest. Better known: Pascal, Ada and S.
    • Operating rooms. Several different actions are taken. Among the most famous varieties: Focal, Fortran and Basic.
  2. Non-procedural. Programming languages \u200b\u200bhave a declarative structure, which appeared in the 70s. They began to develop most actively in the 80s after the appearance of the project for the formation of the 5th generation of computers. The main task is to create opportunities for building highly intelligent machines. They are also divided into:
    • Functional. The program performs calculus certain function, which is based on other relatively simple algorithms and simpler problems. At the heart of functional direction the main element is used - recursion. It involves calculating the values \u200b\u200bof a function by using it in other elements. The language lacks loops and method of assigning values.
    • Brain teaser. The program does not require a description of actions at all, it is based on the ratio of data and their values. Only after the calculation can you receive answers to questions. After going through the known parameters, the answer is displayed. There is no method or order in the program to detect the response; it is implicitly set by the language. Prologue is a prominent representative. Algorithmic thinking has been completely eliminated from the direction, only static relations between objects, and all dynamics is hidden from the developer and comes down to data enumeration.
  3. Object Oriented Languages, they are all a kind of high-level programming. Such languages \u200b\u200bdo not need to describe a clear sequence of manipulations to obtain the result of a task, but separate components of the procedural direction are present. It is much easier for users to work with such languages, since they have an accessible and rich interface. The best example a similar direction with visual communication is Object Pascal.

There are scripting languages, known are Rexx, Tcl, Perl and Pythonas well as shell languages unix systems... They develop an individual style of coding that differs from the well-known principle of system-level programming. They are not used to create lower-level applications, but rather to combine different components from different languages \u200b\u200bto make up a set of distinct functions.

They began to develop most actively with the spread of the Internet, from which scripting languages \u200b\u200bbegan to be widely used. Most often used for scripting Perl, and for Web parts popular JavaScript.

With this text I want to start a series of articles about the history of the development of programming languages. It is an adapted version of this collection.

Programming appeared long before the 50s of the XX century. The first ideas were expressed by Charles Babbage (1792-1871), who is rightfully considered the father of the computer. He did not know about transistors, microcircuits and monitors, but he accurately described the basic principles on which all computers will be built. The idea was developed by Countess Ada Lovelace (1815-1852). Its place in history still causes a lot of controversy, but one thing is absolutely certain - it was Ada who actually became the first famous programmer. Thanks to her work, it became clear that the path to effective use machines - algorithms described in the code.

Babbage's Analytical Engine

But programming could not have developed in isolation from computers. Without them, it's just mind games, abstraction, regardless of the quality of ideas. Therefore, until the 1950s, programming languages \u200b\u200bwere a set of machine instructions, often highly specialized and dying out along with the target device.

The essence of the problem

Today you don't need to know anything about computer architecture, for most programmers only the language is important, everything else is secondary. In the 1950s, everything was different - you had to work with elementary machine codes, which is almost like programming with a soldering iron.

Another problem was that the people directly involved in the creation of computers were responsible for the development of languages \u200b\u200b- primarily engineers and only forced programmers. Therefore, they represented the language in the form of a sequence of numbers of operations and memory cells. Roughly speaking, it looked like this:

01 x y - add the contents of the memory cell y to the cell x;

02 x y is a similar subtraction procedure.

As a result, the program code turned into an endless string of numbers:

01 10 15 02 11 29 01 10 11…

Today, this code will seem dreadful to you, but in the early 1950s it was the norm.


1940s computer

Programmers had to study machine instructions for a long time, then carefully write the code, and after completion, recheck it several more times - the risk of error was great. Problems arose when the development of machines began to be hampered by a lack of staff to write programs. An urgent decision was required.

First collector

The solution lay on the surface: it was necessary to translate the numerical designations of operations into letters. That is, instead of "01 10 15" use "ADD 10 15". This required additional translation of characters into the machine command, but considering the problem, the sacrifice was minimal.

The solution turned out to be so obvious that it is not known for certain who first invented the assembly language. Most likely, it appeared simultaneously in several places at once. The authors of the book "The preparation of programs for a digital computer" by Wilkes, Wheeler and Gill are considered responsible for the title and popularization. It is easy to guess that the name Assembler comes from the English word assemble - to assemble, to assemble, which quite accurately describes the process. Later, symbols began to concern not only the simplest operations, but also addressing, which greatly simplified the readability of the code.

Now this seems like an elementary solution, but then the implementation was complex process, requiring the creation of correspondence tables, assigning a designation to each memory cell. This led to three fundamental things:

  • The emergence of the concept of a symbolic variable or just a variable.
  • Creation of tables with the help of which you could find the correspondence of symbols, operations and memory cells.
  • Understanding that programming can be an art.

This was the catalyst for a language breakthrough.

Compilers and biases

The assembler allowed for simple transformations. For example, translating 01 to ADD. The macro assembler expanded on this idea and provided programmers with the ability to collapse several instructions into one. For example, if in a program you were constantly adding a value to a memory location and checking to see if it was full, you could write all this into the INCRT macro and use it by changing only the variables. In fact, macro assemblers became the first high-level languages.

But there was an important problem with this approach - each time, before creating the code, it was necessary to fold basic operations into macros. A tool was needed that would free programmers from constant copying. This is how the compiler appeared.

Now we know that thanks to the compiler we can create a programming language with absolutely any syntax, the main thing is that it correctly translates our code into machine instructions. At that time, experts were skeptical about high-level languages. This was partly due to the performance of computers - the simplification of syntax with complex transformations was expensive, it could return technological progress several years ago. Part of the reason was emotion - it was hard to move away from the form of machine instructions, to lose control of the processes. Programmers were seriously afraid that after compilation they would not be able to understand the executable commands. Today we don't give a damn what machine code looks like, but in those days it seemed like an important problem.

Nevertheless, the compiler was the only way out of the situation, but another difficulty appeared here - arithmetic expressions. Their execution is not the same as how the machine reads the code. From the school course, we know the order of calculations in the expression "2 + 3 * 5", but the machine reads the code in one direction, so the answer will be wrong. Yes, the above example can be solved by creating a macro, but for complex expressions of the level “(2 + 3 * 5 + 4/6) * 10 + 16- (14 + 15) * 8” a fundamentally different approach was required.

The era of a new formation

John Backus, the creator of Fortran, managed to find a stack analysis algorithm. He started working on it in 1954 and it took him almost 5 years to prove the right of high-level languages \u200b\u200bto exist. Fortran's full name is The IBM Formula Translating System, or FORmula TRANslator. Despite its 60 years of age, it remains one of the most popular programming languages \u200b\u200band is incredibly in demand in Data Science. During this time, we saw many versions: Fortran 1, II, 66, 77, 90, 95, 2008, and another one will be released next year (Fortran 2015 was planned, but due to delays, the name may change to 2018). It was in Fortran that many attributes of a high-level language were first implemented simultaneously, including:

  • arithmetic and logical expressions;
  • dO loop (an early form of FOR loop);
  • conditional operator IF;
  • subroutines;
  • arrays.

Another important Fortran legacy, which modern programmers don't even know about, is the use of variable constraints for integers. All of them had to start with one of 6 characters I, J, K, L, M, N (derived from I-Nteger). This is where the habit of taking the variables i, j, etc. for enumerations came from.


IBM 704 - the machine on which Fortran was created

At the same time, Fortran remained a language close to cars. For example, there was something like this:

If (expression) doneg, dozero, dopos

The reason was the architecture of the IBM computer, which required an instruction to use the correct register: negative, zero, or positive. The proximity to machines was also evident in famous team GOTO (later it was inherited Basic), which meant a direct transition to a particular command.

Returning to the problem of arithmetic expressions, the stack-busting algorithm (that is, parsing the entire string) was not an efficient solution, but it proved how simple and logical the implementation can be.

Languages \u200b\u200bfor everyone

Fortran 1 was a scientific language based on complex number and floating point operations. He did not even know how to process text, for this he had to convert it into special codes. Therefore, Fortran turned out to be unsuitable for business, where the Cobol language was specially created.

His syntax is fundamentally different, as close as possible to natural English. There was practically no arithmetic, only expressions like:

Move Income To Total Subtract Expenses

Cobol became the personification of the maximum distance from the former machine-arithmetic thinking to the universal one. And most importantly, now it was possible to work with text and notes.

The next fundamental language was Algol (ALGOrithmic Language), intended for scientific reports and publications. For the first time, things natural for us appeared in it:

  • differences between assignment: \u003d and logical equality \u003d;
  • using a for loop with three arguments: initial value, limit, step;
  • the block structure of programs, enclosed between begin and end, this eliminated the need for a GOTO.

It was from Algol that C, C ++, C #, Java and many other popular languages \u200b\u200bcame from.

The fourth whale of the 1950s was Lisp (LISt Processing language), designed specifically to serve artificial intelligence. Its main feature is not working with imperative data, but with functions. To do this, John McCarthy had to provide many mechanisms for normal operation: dynamic typing, automatic memory allocation, garbage collector. Ultimately, it was Lisp that became the progenitor of languages \u200b\u200bsuch as Python and Ruby, and is still actively used in AI today.

Thus, the 1950s changed the way of thinking of programmers, donated four fundamental languages \u200b\u200band put the world on the rails of the computer revolution.
Next time, let's talk about how languages \u200b\u200band the programming world developed in the 1960s.

If you are thinking of learning programming, the programming language you choose first is of great importance, it should be related to what you want to do in the future and be relevant. While programming in general is not for the lazy, some languages \u200b\u200bare easier to learn than others, they have communities dedicated to learning and offer useful skills for learning other programming languages.

Selection scheme

There are questions that are asked so often that whole schemes are created to answer them. For example, one of them is dedicated to the choice of the first programming language.

When choosing the first programming language, it is worth soberly assessing the following factors:

  • Labor market.
  • Long-term perspectives of the language.
  • The difficulty of learning a language.
  • What exactly can you create in the process of learning, and by showing others, keep you motivated.

Popularity and demand

JavaScript

JavaScript, not to be confused with Java, is a programming language that was developed in the 90s by Brendan Eich, formerly owned by Netscape Communications and now by the Mozilla Foundation. JavaScript is one of the fundamental technologies on which the web community as we know it is based. Don't be fooled, JavaScript exists outside the browser as well, but mostly in the context of connected apps and services.

The language itself is dynamic and gives programmers the flexibility to use object-oriented programming styles (since the language itself is mostly object-oriented) as well as functional and imperative. It extracts most of its syntax from C, and if you plan on doing any web development in any way, learning JavaScript should be on your list.

Fortunately, JavaScript is relatively easy to learn, right now in your browser for you to play, and although it has been for a while, it is quickly gaining popularity. Many of you who assigned it have noted that your hitting the dollar in learning JavaScript is huge because you can immediately use it to build things for the web, which may very well be what a lot of people learn to program.

Python

I can also recommend Python.

Despite a number of problems historically inherent in Python, it continues to be a leading tool in a number of niches:

Impressive, isn't it? As for large and popular projects written in Python, these are such monsters as:

You can also find on our website.

>> Articles

How did programming languages \u200b\u200bcome about?

Programming languages \u200b\u200bhave been created for several decades and this work was lengthy, complex and tedious. In fact, a machine language is a chain of logically located zeros and ones, a violation of the sequence of which will entail a program stop and a computer malfunction, and the requirements for programmers who created new ways of writing commands depended on the development of machines.

History of programming languages: The Beginning

The beginning of the 40s was marked by the appearance of the first language for programs - the assembler, which included a set of short words or their abbreviations in the command. Assembler is considered a low-level programming language, therefore it is called a machine-oriented language. However, programs written in this language are distinguished by their efficiency and performance.

High-level languages: algorithmic languages

Development of technologies and introduction of new types digital devices forced programmers to invent a higher-level language with an algorithmic writing reference. This is how additional programs-translators appeared, which launched the action of the algorithm. There are two known broadcast methods:

- Compilation or compilation, when instructions come into active action after the translation of the entire program package;

- Interpretation or an interpretation in which the execution and translation of a machine language is performed in a synchronous manner.

Feature of such programs are: ease of creation (writing code), the ability to adjust when using, ease of reading.

1954: structured programming

The first compiler of a programming language of a very high level became known to the world. It is Fortran, from the English abbreviation FORmula TRANslator. The development of the language was simplified, but when writing large programs, the language became almost unreadable, although many versions of Fortran were released.

The peak of the development of programming languages \u200b\u200bfalls precisely in the 50-60s, then several options are created:

- Algol(1958), created on the basis of separate blocks;

- Cobol(1959) - the language of business and management, the basis of C +;

- Basic (1965), known to programmers to this day.

In 1970, a programming language was created, named after the scientist B. Pascal - Pascal. The programs created in this language were easy to read, and there were no difficulties during training. A simple, well-structured language is still popular with aspiring programmers.

Somewhat later, in 1972, a second programming language, C, was developed, which incorporated the achievements of previously created languages, innovations, it became perhaps the most popular among users and program creators. Simple, well-structured, easy-to-learn, C is becoming a favorite among other languages.

Object Oriented Programming (OOP): 1970

The ideology of procedural programming for functions that are not formally related in processing forced the developers to sit down to create a new concept of language compilation. OOP concepts are based on:

The model of an object that does not yet exist;

An instance of the class;

Abstraction, giving characteristics to an object;

Encapsulation, when properties and methods are combined with the aim of hiding data;

Inheritance;

Polymorphism.

The first language was Simula, a little later Smalltalk was invented. This type of programming language is currently supported modern programs: Object Pascal (Delphi), C ++, C #, Java.

The sequence of development of programming languages \u200b\u200bdepends on the introduction of new innovations, so after the appearance of the Internet, a language was needed to access resources and sites. Technology World Wide web (Www) gave life to new languages \u200b\u200bthat are still actively used: Java, Perl, SQL, HTML, PHP, JavaScript.