What levels of programming languages ​​exist. Review of programming languages. The most popular programming languages

The introduction of computers into all spheres of human activity requires specialists different profiles mastering the skills to use computer technology. The level of training of university students is increasing, who from the first year are introduced to the use of computers and simple numerical methods, not to mention the fact that when completing coursework and diploma projects, the use of computer technology is becoming the norm in the vast majority of universities.

Computer technology is now used not only in engineering calculations and economic sciences, but also in such traditionally non-mathematical specialties as medicine, linguistics, and psychology. In this regard, it can be stated that the use of computers has become widespread. A large category of specialists has emerged - computer users who need knowledge on the use of computers in their industry - skills in working with existing software, as well as creating their own software adapted to solve specific task. And here descriptions of programming languages ​​come to the aid of the user.

2. What is a programming language

Programming language- a formal sign system designed to describe algorithms in a form that is convenient for the performer (for example, a computer). A programming language defines a set of lexical, syntactic, and semantic rules used to compose a computer program. It allows the programmer to determine exactly what events the computer will react to, how data will be stored and transmitted, and what actions should be performed on it under various circumstances.

Since the creation of the first programmable machines, humanity has already come up with more than two and a half thousand programming languages. Every year their number is replenished with new ones. Some languages ​​are used only by a small number of their own developers, while others become known to millions of people. Professional programmers sometimes use more than a dozen different programming languages ​​in their work.

Language creators interpret the concept differently programming language. Among the common points recognized by most developers are the following:

· Function: a programming language designed to write computer programs, which are used to transmit instructions to the computer to perform a particular computing process and organize the control of individual devices.

· Task: A programming language differs from natural languages ​​in that it is designed to transmit commands and data from a person to a computer, while natural languages ​​are used only for people to communicate with each other. In principle, we can generalize the definition of “programming languages” - this is a way of transmitting commands, orders, clear guidance for action; whereas human languages ​​also serve to exchange information.

· Execution: A programming language can use special constructs to define and manipulate data structures and control the computation process.

3. Stages of solving a problem on a computer.

Most effective application VT was found when carrying out labor-intensive calculations in scientific research and engineering calculations. When solving a problem on a computer, the main role still belongs to the person. The machine only carries out his tasks according to the developed program. The role of man and machine is easy to understand if the process of solving a problem is divided into the stages listed below.

Formulation of the problem. This stage consists of a meaningful (physical) formulation of the problem and determination of final solutions.

Construction mathematical model. The model must correctly (adequately) describe the basic laws physical process. Construction or selection of a mathematical model from existing ones requires a deep understanding of the problem and knowledge of the relevant branches of mathematics.

Development of the World Cup. Since a computer can perform only the simplest operations, it does not “understand” the formulation of the problem, even in a mathematical formulation. To solve it, a numerical method must be found that makes it possible to reduce the problem to some computational algorithm. In each specific case, you must choose suitable solution from already developed standard ones.

Algorithm development. The process of solving a problem (computational process) is written as a sequence of elementary arithmetic and logical operations leading to the final result and called an algorithm for solving the problem.

Programming. The algorithm for solving the problem is written in a machine-understandable language in the form exactly a certain sequence operations - programs. The process is usually carried out using some intermediate language, and its translation is carried out by the machine itself and its system.

Adjustment of the program. The compiled program contains various kinds of errors, inaccuracies, and clerical errors. Debugging includes monitoring the program, diagnosing (searching for and determining the contents of) errors, and eliminating them. The program is tested by solving control (test) problems to obtain confidence in the reliability of the results.

Carrying out calculations. At this stage, initial data for calculations are prepared and calculations are carried out using a well-established program. at the same time, to reduce manual labor in processing results, you can widely use convenient forms for issuing results in the form of text and graphic information, in a form understandable to humans.

Analysis of results. The calculation results are carefully analyzed, and scientific and technical documentation is drawn up.

4. What are programming languages ​​for?

The process of computer operation consists in executing a program, that is, typing completely certain teams quite in a certain order. The machine form of the command, consisting of zeros and ones, indicates exactly what action should be performed. CPU. This means that in order to give the computer a sequence of actions that it must perform, you need to specify a sequence of binary codes for the corresponding commands. Machine code programs consist of thousands of instructions. Writing such programs is a difficult and tedious task. The programmer must remember the combination of zeros and ones of the binary code of each program, as well as the binary codes of the data addresses used in its execution. It is much easier to write a program in some language that is closer to natural human language, and entrust the work of translating this program into machine codes to a computer. This is how languages ​​designed specifically for writing programs arose - programming languages.

There are many different languages programming. In fact, you can use any of them to solve most problems. Experienced programmers know which language is best to use to solve each specific problem, since each language has its own capabilities, orientation towards certain types of problems, and its own way of describing concepts and objects used in solving problems.

All the many programming languages ​​can be divided into two groups: languages low level And languages high level.

Low-level languages ​​include assembly languages ​​(from the English toassemble - assemble, assemble). Assembly language uses symbolic commands that are easy to understand and quick to remember. Instead of a sequence of binary codes of commands, their symbolic designations are written, and instead of binary addresses of data used when executing a command, symbolic names of this data chosen by the programmer are written. Assembly language is sometimes called mnemonic code or autocode.

Most programmers use high-level languages ​​to write programs. Like ordinary human language, such a language has its own alphabet - a set of symbols used in the language. These symbols are used to make up the so-called keywords of the language. Each of the keywords performs its own function, just like in our familiar language, words made up of letters of the alphabet of this language, can perform functions different parts speech. Keywords are linked together into sentences according to certain syntactic rules of the language. Each sentence defines a certain sequence of actions that the computer must perform.

A high-level language acts as an intermediary between a person and a computer, allowing a person to communicate with a computer in a way more familiar to humans. Often this language helps to choose correct method solving the problem.

Before writing a program in a high-level language, the programmer must write algorithm solving the problem, that is step by step plan actions that need to be performed to solve this problem. Therefore, languages ​​that require a preliminary compilation of an algorithm are often called algorithmic languages.

    Lists of programming languages ​​By category Chronological Genealogical A list of programming languages ​​grouped by category is provided. Some languages ​​fell into more than one category. Contents... Wikipedia

    Lists of programming languages ​​By category Chronological Genealogical A genealogical list of programming languages ​​is provided. Languages ​​are classified according to antecedent languages ​​that had a strong influence on the formation of ... Wikipedia

    Contents 1 By manufacturer or platform 1.1 Flash 1.2 Java 1.3 Microsof ... Wikipedia

    Lists of Programming Languages ​​By Category Chronological Genealogical Chronology of Programming Languages ​​is a chronologically organized list of programming languages. Contents... Wikipedia

    This article should be Wikified. Please format it according to the article formatting rules. Legend... Wikipedia

    This page is an informational list. Programming languages ​​.NET (CLI-enabled languages ​​or CLI languages) computer programming languages ​​used to create libraries and programs that satisfy the requirements of Comm ... Wikipedia

    Main article: Text editor List of text editors Windows editors and comparison table. Contents 1 Comparison table of known text editors... Wikipedia

    The C# programming language is one of the most popular programming languages ​​today. Paint.NET open source processing software raster graphics SharpDevelop open IDE for C# languages, Visual Basic.NET (VB.NET), Boo ... Wikipedia

    This is the list software, developed by the Free Software Foundation as part of the GNU UNIX project, a similar operating system consisting entirely of free software. Most of these packages also... ... Wikipedia

    This article or section needs revision. Please improve the article in accordance with the rules for writing articles... Wikipedia

Books

  • Python for kids. Programming tutorial, Briggs Jason. About the book This book is a tutorial on one of the most popular programming languages ​​today - Python. Starting from the very simple actions, step by step you will write your...
  • JavaScript for kids. Programming Tutorial, Morgan Nick. About the book This book will allow you to dive into programming and master JavaScipt with ease. You will write several real games - searching for treasures on the map, "Hangman" and "Snake". On every...

Recoursia users often wonder which programming language is worth learning. We have prepared short guide for those who are deciding on their first programming language. We'd like to point out that it's not meant to be comprehensive - it's just a very quick look at what developers are doing today, and which programming language may or may not be the first.

One of the fairly popular Web programming languages, which, however, in the Belarusian labor market is not always able to provide its native speaker with a top-paying job. Ruby courses are hardly worth studying to master the first programming language, because with a high degree of probability the search for an employer will be delayed, since vacancies for junoirs in Ruby appear quite rarely.

Just five to seven years ago, Delphi was the standard first programming language - of course, because the Pascal language, which is the predecessor of Delphi, was invented to teach schoolchildren and students programming. But for real life Delphi is already very suitable, since programming on it pays noticeably below average, and new major projects You won't find it in this language. Therefore recommend

When you're trying to figure out which programming language to start learning, you'll likely come across the terms "high level" and "low level". People talk about high-level and low-level programming languages ​​all the time. But what exactly does this mean? And what does it mean to learn to write code? Let's start with the definitions of each.


“High” and “Low Level” programming languages

In this article I will talk about “high” and “low level” languages. But there are no special criteria to determine this. Just keep in mind that this largely depends on your perspective. If you are a C programmer, Java may seem quite high-level. If you're used to Ruby, Java may seem like a low-level language.

Machine code and low-level languages

Regardless of whether a language is considered high-level or low-level (or somewhere in between), we're talking about about abstraction. Machine code has no abstraction - it contains separate instructions, transferred to the computer. And since machines only deal with numbers, they are represented in binary (although they are sometimes written in decimal or hexadecimal notation).

Here is an example of machine code:

In machine code, operations must be specified precisely. For example, if a piece of information needs to be retrieved from memory, machine code will have to tell the computer where in memory to find it.

Writing directly to machine code is possible, but very difficult.

Low-level programming languages ​​add a bit of abstraction to machine codes. This abstraction hides specific instructions machine code behind declarations that are more human readable. Assembly languages ​​are the lowest level languages ​​next to machine code.

In machine code you could write something like "10110000 01100001", but assembly language can simplify this as "MOV AL, 61h". There is still an almost one-to-one correspondence between what is written in assembly language and the instructions given to the machine.

Moving into more popular programming languages, you end up with something like C. Although this language is not as low level as assembly language, there is still a strong correspondence between what is written in C and machine code. Most operations written in C can be completed a small amount machine code instructions.

High level programming languages

Like lower-level languages, higher levels cover a wide range of abstractions. Some languages, such as Java (many consider it an intermediate programming language), still give you a lot of control over how the computer manages memory and data.

Others, like Ruby and Python, are very abstract. They give you less access to features lower level, but the syntax is much easier to read and write. You can group things into classes that inherit characteristics, so you only need to declare them once.

Variables, objects, subroutines and loops are important parts high level languages. These and other concepts will help you tell the machine a lot of things with short, concise statements.

While assembly language has a nearly uniform mapping between its instructions and machine code instructions, a higher-level language can send dozens of commands with a single line of code.

It's important to note that "high-level programming languages" can include anything that is more abstract than assembly language.

Which language to study: low or high level?

This is definitely general question among new and aspiring programmers. Which programming languages ​​are better to learn: high-level or low-level? As with many programming questions, the question of high-level and low-level programming languages ​​is not so simple.

Both types of languages ​​have important advantages. Low-level languages, because they require little interpretation by the computer, tend to be very fast. And they give programmers a lot of control over data storage, memory, and retrieval.

However, high-level languages ​​are intuitive and allow programmers to write code much more efficiently. These languages ​​are also considered "safer" because there are more safeguards that prevent the coder from issuing poorly written commands that could cause damage. But they don't give programmers the same control over low-level processes.

With that in mind, here is a list of popular languages ​​on a scale from low to high:

  • JavaScript
  • Python

Of course, this is partly subjective. And it only includes a tiny fraction of the available languages.

But this should give you some idea of ​​what level the languages ​​you're interested in are at.

What do you want to do?

When deciding which language you will learn, your first question should be: what do you want to program?

If you want to program operating systems, kernels, or anything that needs to run on maximum speed, a lower level language may be good choice. Big part of Windows, OS X and Linux are written in C and C-derived languages ​​such as C++ and Objective-C.

Many modern applications written in higher-level languages ​​or even domain-specific languages. Python and Ruby are especially popular for web applications, although HTML5 is becoming more powerful. Languages ​​like Swift, C#, JavaScript, and SQL have their own strengths and weaknesses.

I was recently reading a thread on a programming forum and came across interesting offer: Study both levels at once. You'll gain a deeper understanding of the types of abstractions that make a higher-level language more efficient.

Of course, learning two languages ​​at the same time is not easy, so you may want to spread out your learning a little. And choosing two languages ​​that are most similar can be helpful.

Again, we'll go back to what I said earlier: choose a language based on what you want to do. Do some research to find out what languages ​​people use in their field. Then use this information to choose a high and low level language and start learning them.

You'll soon see the parallels and you'll gain a much deeper understanding of how programming works.

Focus on the end, not the means.

There are many criteria you can use to choose a programming language. One of the criteria is high and low level. But in almost every case, the criteria you should use is what you want to program.

Your project could benefit from a low-level language. Or it can be much more effective at a high level. You must choose for yourself the right tool for work. Focus on your goal and choose the right language every time.

Do you have experience with high and low level languages? Do you prefer one over the other? Share your thoughts in the comments below!

PROGRAMMING LANGUAGE AND ITS TYPES

A programming language is a formal sign system designed to write computer programs. A programming language defines a set of lexical, syntactic and semantic rules that define appearance programs and actions that the performer (computer) will perform under its control.

A high-level programming language is a programming language designed to be fast and easy to use by the programmer. The main feature of high-level languages ​​is abstraction, that is, the introduction of semantic constructs that briefly describe such data structures and operations on them, the descriptions of which in machine code (or other low-level programming language) are very long and difficult to understand.

Low-level programming language (low-level programming language) is a programming language that is close to programming directly in the machine codes of the real or virtual (for example, Java, Microsoft .NET) processor used. A mnemonic notation is usually used to denote machine instructions. This allows commands to be remembered not as a sequence of binary ones and zeros, but as meaningful abbreviations of words in the human language (usually English).

LOW LEVEL PROGRAMMING LANGUAGES

Early computers had to be programmed using binary machine codes. However, programming in this way is quite labor-intensive and difficult task. To simplify this task, low-level programming languages ​​began to appear, which made it possible to specify machine commands in a form more understandable to humans. To convert them to binary code were created special programs- translators.

Fig.1. An example of machine code and its representation in assembler

Translators are divided into:

    compilers - turn program text into machine code, which can be saved and then used without a compiler (an example is executable files with extension *. exe);

    interpreters - turn part of the program into machine code, execute it and then move on to the next part. In this case, an interpreter is used every time the program is executed.

An example of a low-level language is assembly language. Low-level languages ​​are focused on a specific type of processor and take into account its features, so in order to port an assembly language program to another hardware platform, it must be almost completely rewritten. There are also certain differences in the syntax of programs for different compilers. True, central processors for computers from AMD and Intel are practically compatible and differ only in some specific commands. But specialized processors for other devices, for example, video cards and phones, contain significant differences.

Advantages

Low-level languages ​​create efficient and compact programs because the developer has access to all the capabilities of the processor.

Flaws

    A programmer working with low-level languages ​​must be highly qualified and have a good understanding of the structure of the microprocessor system for which the program is being created. So, if a program is created for a computer, you need to know the device of the computer and, especially, the device and operating features of its processor;

    the resulting program cannot be transferred to a computer or device with a different type of processor;

    significant development time for large and complex programs.

Low-level languages ​​are usually used for writing small system programs, device drivers, interface modules with non-standard equipment, programming specialized microprocessors, when the most important requirements are compactness, speed and the ability to directly access hardware resources.

Assembly is a low-level language that is still widely used today.

HIGH LEVEL PROGRAMMING LANGUAGES

The first high-level programming language is considered computer language Plankalkül, developed by the German engineer Konrad Zuse back in the period 1942-1946. However, a translator for it did not exist until 2000. The world's first high-level language translator is PP (Programming Program), also known as PP-1, successfully tested in 1954. Translator PP-2 (1955, 4th in the world translator) was already optimizing and contained its own loader and debugger, a library of standard procedures, and the PP translator for the Strela-4 computer already contained a linker of modules. However, the widespread use of high-level languages ​​began with the advent of Fortran and the creation of a compiler for this language (1957).

High-level languages ​​strive not only to make it easier to solve complex program tasks, but also to simplify the porting of software. The use of various translators and interpreters ensures the connection of programs written using high-level languages ​​with various operating systems and hardware, while their source code remains, ideally, unchanged.

This kind of isolation of high-level languages ​​from the hardware implementation of the computer, in addition to many advantages, also has disadvantages. In particular, it does not allow you to create simple and precise instructions for the equipment used. Programs written in high-level languages ​​are easier for the programmer to understand, but are less efficient than their counterparts created using low-level languages. One of the consequences of this was the addition of support for one or another low-level language (assembly language) to a number of modern professional high-level programming languages.

Examples: C, C++, C#, Java, Python, PHP, Ruby, Perl, Pascal, Delphi, Lisp. High-level languages ​​are characterized by the ability to work with complex data structures. Most of them have integrated support string types, objects, operations file I/O etc. The disadvantage of high-level languages ​​is larger size programs compared to programs in a low-level language. Therefore, high-level languages ​​are mainly used for developing software for computers and devices that have a large amount of memory. And different subtypes of assembler are used for programming other devices where the size of the program is critical.

Imperative languages ​​are based on several important ideas, including the representation of actions as mathematical formulas, the concept of data type, and the structural transformation theorem.

A program in an imperative language is built from functions (subroutines). Assembly language programs can also consist of subroutines and this is nothing new, but high-level languages ​​allow you not to think about such issues as organizing calls, transmitting source data and returning results. The description of a function consists of a name, a list of parameters (initial data), the type of result and the actions leading to obtaining this result. One of the functions of the program is the main one, its execution is the work of the program.

A simple example is a function that calculates the sine of a number. It can be called sin, its input data consists of one real number, the result is also a real number, obtained by summing a segment of a known infinite series (or executing the fsin command of a mathematical coprocessor).

The set of actions that can be performed inside a function is very limited. It consists of evaluating formula expressions, calling other functions (which is not a separate action - a function call is often included in an expression), assignments, branches (a group of actions that are performed only if some condition is true) and loops (a group of actions that are performed repeatedly, the number repetitions depends on some condition). Actions can be nested within each other. It may seem that the set of branches and loops is too small, but this is not so. It has been proven that any algorithm composed of functional blocks (at a low level - arithmetic commands and data transfer commands), conditional and unconditional transitions can be converted into an equivalent algorithm composed only of structural blocks - functional blocks, branches and loops with condition checking in end. This statement was formulated in the paper by Corrado Bohm and Giuseppe Jacopini, “Flow diagrams, turing machines and languages ​​with only two formation rules” (Communications of ACM, Volume 9 / Number 5 / May, 1965).

If intermediate results need to be stored somewhere to perform the necessary actions, special declarations containing variable names and possibly other information are placed inside the function. The addresses of the RAM cells will be assigned to them automatically. In some languages, functions may also contain constant and type definitions. In Pascal-like languages, a function is like a program and can include definitions of not only constants, types and variables, but also other functions.

A data declaration is a list of named objects. These objects are called variables. In a number of languages, the type of a variable must be specified, which determines the amount of memory required for its placement and the set of operations in which it can participate. But this is not necessarily the case; there are languages ​​in which the type of a variable is not specified and can change during program execution.

Typically, programming languages ​​provide a fairly limited set of predefined variable types and tools for creating new types. Some of the following types are predefined:

    natural and integer numbers of various sizes;

    real numbers;

    symbols - letters, numbers, arithmetic signs, etc.;

    character strings;

    boolean values;

    pointers

Actions on data can be performed using functions and operators.

In the C language, for example, symbols, strings and booleans are not defined. Its type char is actually a short integer and allows arithmetic operations.

New types are formed by combining into a single whole several elements of the same type (an array, each element has a serial number) or elements of different types (a structure, each element has its own name). For example, complex numbers are not defined in most languages, but they can be defined:

In some languages ​​(for example, C++), operators can also be defined for created types, which allows you to use variables of these types in the same way as variables of predefined types.

There are other ways to create new types. For example, in Pascal language it is possible to create:

    range types (by specifying a range of values);

    enumeration types (by enumerating possible values);

    set types

Variables of set types can be used to store information about a set of properties of any objects. Something similar can be done using variables of an integer type, whose set bits indicate the presence of the corresponding properties. Apparently, using sets is more resistant to programmer errors.