Demand for the python language. Why Python is the best choice for machine learning. We analyze ratings and narrow the search

Python programmer uses a high-level programming language to create client-server applications, different types games, microservices, large and small sites, bots for social networks. He is engaged not only in the creation of software, but also in technical support, integration, optimization, trains the company's staff to work with programs and services. The profession is suitable for those who are interested in computer science (see choosing a profession for interest in school subjects).

Short description

In the early 90s of the last century, a Dutch developer created Python, which combined the features of different programming languages. The considered high-level language takes 4th place in the world ranking, it is used and supported by Mail, Pinterest, Youtube, the creators of large search engines.

Experienced Python programmers highlight the following strengths of the language and the pros of working with it:

  • language extensibility, integration with C/C++;
  • simplified syntax, Unicode support;
  • cross-platform;
  • dynamic typing;
  • the ability to quickly create the most complex code;
  • a huge number of development environments;
  • can be used to write all kinds of software products;
  • simplified maintenance of the created software;
  • free license;
  • a large community of competent programmers.

The disadvantages of Python include slowness and the fact that the language in question is quite specific. Most often, programmers who study this language seek to expand their horizons and improve their skills. The network contains a huge amount of interesting materials about Python: useful books and tutorials, videos, Russian-speaking communities, translated instructions.

Features of the profession of a Python programmer

Experienced programmers are constantly learning, because if you do not gain new knowledge, then the developer will quickly lose both qualification and value in the labor market. Python is a general-purpose programming language that a developer would like to know. Most often, programmers who already have solid experience with C ++ or Java take up the study of Python. The fact is that the skills of working with object-oriented programming allow you to master Python in a short time.

The Python language is considered by many developers to be outdated and too slow, so they do not pay enough attention to learning it. But large technology companies are actively using this programming language, it has been in the top lines of the rating for many years, so it can be considered promising.

A Python developer maintains software that he has developed or upgraded, trains employees, prepares instructions, and documentation.

Pros and cons of the profession

pros

  1. The ability to learn on your own, which is convenient for people who decide to move away from complex programming.
  2. Fast learning.
  3. Large Russian-speaking community of programmers.
  4. Beautiful and simple language code, which significantly speeds up the development process.
  5. A small number of programmers who are proficient in Python.
  6. Demand, so there will be a lot of work.

Minuses

  1. The Python language is less popular than Java, C/C++, which has a significant impact on wages.
  2. The programming language in question may be a second language, but not a first language.
  3. Python programmers are in demand in well-known companies based in Moscow, St. Petersburg and other large cities. Therefore, a developer who knows only one programming language may have problems finding work in remote regions.
  4. For employment in a large company, you must have 2-3 years of work with Java, C / C ++.

Important Personal Qualities

  1. Patience.
  2. Diligence.
  3. Determination.
  4. Initiative.
  5. Purposefulness.
  6. self-confidence.
  7. Attentiveness.
  8. Self control.

Python programmer training

Anyone with a higher technical or IT education can learn Python. A college degree is another plus on a resume, as employers looking for a Python programmer prefer developers with a university degree.

You can learn the language in 2-6 months in Python programming courses, which can be both paid and free. You can also learn Python on your own using videos, blogs, textbooks. Another good option is to find a practicing programmer who is ready to take on an apprentice.

Experienced teachers (each with at least five years of experience) help students, this is possible even if the students have no programming experience. In practical classes, work is carried out with real projects. Accordingly, after the completion of the work, students receive finished works in their portfolio, with which they can come to job interviews.

Well . You will gain knowledge and skills that allow you to implement projects different levels complexity, ranging from small web applications, simple scripts and programs, ending with software for spacecraft and artificial intelligence. The training takes place in a convenient and effective format in the form of step-by-step lessons with individual analysis of homework.

Python is a high-level programming language that is used in various areas of IT, such as machine learning, application development, web, parsing, and others.

In 2019, Python became the most popular programming language, overtaking Java by 10%. This is due to many reasons, one of which is the high wages of qualified specialists (about 100 thousand dollars a year).

Python programming language

Various programming languages ​​usually dominate some industry (or several) for which they are well suited. But that doesn't mean that a programmer is limited to using a strictly defined tool, so any general purpose language like Python can be used to build anything.

Python was able to capture a small part of the web development market, is sometimes used to write desktop applications and, of course, totally dominates the field. machine learning. In addition, many prototypes are created on it, which allow you to quickly sketch out the functionality and appearance future project.

origin of name

This TV show allowed the author to relax and take his mind off the development of the language. However, despite the real origin of the name, it is more obvious for people to associate Python with the word “snake”. This is also facilitated by the logo, which depicts a reptile.

And although the creator of the language has repeatedly said that the name has nothing to do with snakes, it was not possible to influence the opinion of society.

Python or Python?

Whether it's the name of a British TV show or the English sound of the word "snake", Python to pronounce correctly like Python. However, about 80% of the Russian community is used to using the word "Python".

It cannot be said that it is definitely correct to use one of the options, many names adapt to the pronunciation of a particular language, and it is very difficult to change the established habits of society. However, the variant of the name “Python” is appropriate to use only in a conversation with Russian-speaking interlocutors, because on any international conference the meaning of the word "Python" simply will not be understood, because in English language it is not there, there is only “Python (Python)”.

Logo

The logo depicts two snakes forming a square with a bulging center, which often misleads users into associating the name of the language with a reptile.

History of creation

The language was developed by a programmer, Guido van Rossum, in the late 1980s. At that time he worked in the center of mathematics and computer science in the Netherlands.

Guido van Rossum has been fond of working with hardware since his school years, and although he did not find support and approval from his peers, this did not stop him from developing a programming language on his own.

Rossum worked on Python at free time, as a basis he took the ABC programming language, in the development of which he once participated.

Stages in the history of the Python programming language:

  • In February 1991, the source code for the language was published on alt.sources. Even then, the language adhered to an object-oriented approach, could work with classes, inheritance, functions, exception handling and all basic data structures.
  • In 2000, the second version of Python was released.. Many important tools have been added to it, including Unicode support and a garbage collector.
  • On December 3, 2008, the third version of Python was released, which is still the main one.. Many features of the language have been reworked and made incompatible with previous versions. And although the functionality of the third version is in no way inferior to the second, the development of the language was divided into two branches. Someone continued to use Python 2 to support old projects, someone completely switched to the third version.

The date of death of the second version was set for 2015, however, fearing not to have time to transfer all existing code to Python 3, Python 2 lifetime extended to 2020.

Python is a simple language

Python's syntax has always set it apart from other programming languages. It does not suffer from redundancy, the similarity of the syntax with ordinary English allows you to understand the code even ordinary user, in addition, the programmer writes fewer lines of code, because there is no need to use the characters: ";", "(", ")". Nesting is indicated by indentation, which increases the readability of the code and teaches beginners how to format correctly.

The simplicity is partly due to the fact that Python is based on the ABC language, which was used to teach programming and the daily work of non-programmers.

Python simplifies writing code and makes development fast because it has the following features:

  • Dynamic typing. The programmer does not need to specify the type of variables, the language will assign it itself. operands different types, participating in one operation, is automatically reduced to the required one according to certain rules.
  • Convenient return of multiple values ​​by a function. They can be listed separated by commas and are automatically converted to . To return from a function, just write " return array_name ". No need to allocate memory and pass pointers to the function.
  • Automatic Memory Allocation. The programmer does not need to allocate memory for anything. On the one hand, this reduces the programmer's control over the program, on the other hand, development is significantly accelerated.
  • Garbage collector. If an object becomes useless (nothing refers to it anymore), it is automatically deleted by the garbage collector. The garbage collector allows you to optimize the use of memory and not delete useless objects manually.
  • a, b = b, a. This line swaps the values ​​of the variables, now what was in a is in b and vice versa. This is possible because Python first considers the variables to the right of the “=” sign and puts them in the list, it does the same with the elements to the left of the “=”, then it associates each element of the right list with the left one. In this way, you can exchange the values ​​of not only two variables, but also three, five, and so on.
  • Data Type Binding. The data type is bound to a value, not a variable. That is, a value is some kind of object with attributes that define its type and other characteristics, and a variable is just a reference to this object. This approach eliminated the need for explicit type definitions and greatly simplified the re-assignment of a variable value (especially if the type of the new value is different from the initial one).
  • for loop. Working with arrays, lists, and other containers in Python is easy and convenient. When it is necessary to iterate over all its elements, the construction looks like this: “for x in container:” (iteration goes from 0 to the last element, its index can be denoted as -1). If you want a certain number of loops to go through, write this: “for x in range(1,9):” (the loop will be executed with x values ​​from 1 to 8).
  • Interpreted language. The written code does not need to be compiled, it is enough to run it and get the result. Moreover, you can work interactively and get the result literally after each operation.

Python combines both simplicity and powerful tooling. It can be used to prototype almost any program.

To speed up development, part of the program (usually not greatly affecting the speed of work) is written in Python.

It is thanks to its simplicity that this programming language has been able to take a dominant place in the field of machine learning. People who are involved in science in one way or another prefer not to spend a lot of time on things like writing code, so Python was perfect for the implementation of the tasks assigned to them.

Code example:

Def what_bigger(a, b): if a > b: print(a, "greater than", b) else: print(b, "greater than", a) def max_arr(arr): max = 0 for x in arr : if arr > max: max = arr[x] return max def arr_to_2arr(array): array = array * 2 return array print("A simple Python program") a = what_bigger(1,5) r1 = max_arr(a ) r2 = arr_to_2arr(a) print("Return of function max_arr - ", r1) print("Return of function arr_to_2arr - ", r2)

Execution results:

Simple Python program 5 more than 1 max_arr function return - 6 arr_to_2arr function return -

Popularity

Even though the language is over 29 years old, it is popular among programmers all over the world. Python is used in almost every medium or large project, if not as the main development tool, then as a tool for prototyping or writing some part of it.

It has gathered a huge community of developers around itself, according to a poll on Stackoverflow, Python took 7th place with almost 39% of the votes.

TIOBE index

This index shows the popularity of programming languages, the information is updated every month. The popularity rating is based on the number of skilled professionals worldwide. All popular search engines. It is important to understand that the index does not show best language programming, it only shows their popularity.

According to the TIOBE index, Python ranked 3rd with 9 percent popularity. He only gave in Java languages and C.

PYPL

This index is based on the number search queries concerning teaching materials by language.

According to PYPL data, Python ranks first with over 29% popularity and 10% ahead of Java.

statista.com

The service provides different kinds statistics, among which is the popularity of programming languages.

According to a survey of more than 85,000 respondents, Python is ranked 4th, behind languages ​​such as JS, markup languages, and SQL.

Work speed

Programmers often ask themselves: “Won't using Python lead to performance degradation?”. Do not draw any conclusions without a detailed examination.

If we consider only the speed of code execution, then it becomes clear that Python is inferior to other programming languages ​​such as C. Indeed, dynamic typing, interpretability, and other features that make the programmer's job easier lead to performance degradation.

However, in modern IT, not only the speed of programs is important, but also the speed of their development. Development, testing, debugging and support - all this costs a lot of money. And if Python is inferior in the speed of the programs, then it has no equal in the speed of development.

For any project, it is important to choose the right tool and the best implementation. Improving one, the programmer sacrifices another, his task is to find the perfect balance, focusing on a specific technical task.

Python allows you to write fairly fast code, but it can let you down in some “narrow” places, which have greatest influence on the performance of the entire project. In order not to delay development and get a program running on high speed, its structure is designed in such a way that the ratio “performance / development time” is maximum.

Programmers use tricks to level out the insufficient speed of executing programs in Python:

  • Embedding C code. Using this technique, you can noticeably improve performance, usually those sections of code that process many requests per unit of time are written in C. For example, a function that receives data from one database, processes it, and sends it to another would be better written in C if the amount of information passing through is large enough.
  • Using the best algorithms and tools. The same problem can be solved in different ways. Firstly, the programmer must choose the most efficient algorithm that provides the best performance, for example, to search for an element in a sorted array, you can iterate it from beginning to end, in the best case (element at the beginning of the array) the search will be performed quickly, in the worst (element at the end array) - slowly. It is more efficient to use the bisection method (binary search), which will find the desired element in the minimum number of iterations in an array of any length. Secondly, to implement the task, you need to select the right tools. For example, if the sequence of elements is strictly defined and does not change, it is better to use a tuple rather than a list. It requires less space, is processed faster and is protected from accidental changes.
  • Interpreter optimization. The speed of Python programs is highly dependent on the work of the interpreter, some constructs are faster, others are slower.
  • Modules for testing. To determine which parts of the code are greatly reduced overall performance, the programmer can use special modules for testing. Thus, you can understand which code needs to be optimized or replaced with C code.
  • Ready Tools. For most tasks already developed effective solutions. It is better to use ready-made, debugged code of some library than to write your own solution from scratch, which will not be 100% as effective.

What can be written in Python

Python is used in many areas of programming, so you can write anything on it.

Website back end

For the development of the server side of the site, frameworks are used: Django and Flask. They turn Python into a server-side programming language with capabilities that rival other popular tools.

The programmer can easily work with URL links, database accesses, and creating HTML files that the user sees in the browser.

And although PHP controls most of the server-side web development market, more and more programmers are giving their preference to development in Python.

blockchain

Blockchain is a sequential chain of blocks, where each block contains information and is always connected to the previous one. The technology can be used in any area and is especially popular in the financial sector and in the field of bitcoin cryptocurrency.

Blockchain combines the security and openness of information, it allows you to access data from anywhere in the world, at the same time it is almost impossible to hack, the data is stored on some main computer, and hacking each block is very costly and time consuming.

In Python, you can easily write a full-fledged blockchain, if it is correctly designed, then it will not lag behind solutions in other languages ​​in performance.

Bot

This is a program that automatically performs some action at a given time or in response to an incoming signal. Bots can primitively simulate human behavior, so they are often used to work in technical support(chat bots), searching for information on the Internet (search bots), simulating the actions of a person or other creature in the virtual world (computer games).

Python allows you to quickly create feature-packed and relatively smart bots. It is important to understand that bots are not simple program in 500 lines of code. An order to create a bot for a business can cost several million. The price is due to the fact that it is very difficult to design a bot that will be difficult to distinguish from a person. It is necessary to provide for many options for dialogues, analyze human behavioral factors and implement them in the program. Simply put, from a machine that understands only zeros and ones, you need to make a primitive “brain”.

Database

A database is information systematized according to common features and special rules. In any large project, databases are used, they store information about users, changes in the program, etc.

The database management system can be written in Python.

augmented reality

Augmented reality complements the physical world with the help of virtual technologies. That is, virtual objects are projected onto the real environment, and imitate the features and behavior of ordinary physical objects.

Augmented reality can be seen in films such as Iron Man. In the real world, it is used, for example, in combat fighters (aiming system).

The work of augmented reality is based on interaction with labels. An electronic device receives information and analyzes the surrounding space, with the help of computer vision, it “understands” what a person sees in front of him. The device then overlays a "virtual layer" over the real world.

Professional augmented reality applications cost about half a million rubles, it is not easy to design and write them, various specialists are involved in the development process, from 3D designers to programmers.

Python is a great tool for creating augmented reality projects.

BitTorrent Client

BitTorrent is a unique technology that allows you to quickly exchange large amounts of data over the Internet.

Prior to version 6, the BitTorrent client was written entirely in Python. And although it was later completely rewritten in C++, this shows that Pyton can be used to implement these kinds of tasks.

Neural network

The concept of “neural network” came to programming from biology. In biology, a neural network is a sequence of neurons connected to each other. Programmatically created neural networks are capable of not only analyzing and storing information, but also reproducing it from memory.

They are used to solve complex problems that require calculations that are performed by the human brain. Usually, neural networks are used to classify something by features, predict, recognize, for example, a person from a photo or video.

Python is a clear leader in development neural networks. In addition to standard tools, he acquired a huge number of libraries for machine learning. Thanks to this, even a large and complex project can be written relatively quickly in Python.

parser

This is software for collecting and processing information. You can parse information such as the dollar exchange rate, or you can monitor and analyze changes in the shares of various companies.

Parser can be written in many languages, Python is not the only one good tool for this, however, its capabilities are quite enough to write an application that collects information quickly and efficiently.

Calculator

This task was carried out, perhaps, by every student of the Faculty of Informatics. can be written in any programming language, and Python is no exception.

It is important to understand that the calculator requires 100% calculation accuracy. Therefore, all errors related to rounding and binary representation of numbers can be critical. However, libraries have been written for Python that completely solve this problem.

The game

Not created in Python big games, it is either used to develop a prototype, or to implement some part (for example, the server logic of the game or the modding system).

To write a small project, you can use the Pygame library, which provides all the necessary tools to create a small 2D game.

Text editor

It can be used to write and edit not only text but also code. Many text editors are able to detect the programming language being used and highlight its syntax. Some of them even resemble a full-fledged IDE.

Writing a small text editor is not difficult, but creating a large project requires a lot of knowledge and effort. Despite the speed of development in Python, creating text editor with sufficient functionality by modern standards - this is work for a whole team of programmers.

Programming language

A computer is always a layered device. Using the most complex and inconvenient tool, the programmer creates a simpler one, and from it an even simpler one. Although this reduces performance (if everything was written in assembler, programs would run tens or even hundreds of times faster), but it also significantly reduces development time, its convenience and complexity.

Python is a fairly high-level language, so writing another programming language based on it is impractical, although it is possible. It would be more useful to develop an interpreter for Python itself or another programming language. You can also create a compiler (a program that converts programming language code into machine code).

Such projects are not suitable for commercial purposes, but creating your own compiler, interpreter or language will give you a lot of invaluable experience.

Today, Python is one of the most popular programming languages, and its applications are only expanding. For the past few years, it has been in the TOP-3 most popular languages ​​in the IT market.

Python is used to solve scientific and business problems. In the west, it is used by scientists (mathematicians, physicists, biologists), since it is not too difficult to learn this language. It is more often used for writing front-end websites and back-end for mobile and web applications, as well as creating various kinds of services and APIs. In general, it is a universal language, one of the three languages ​​for big data analysis.

A web developer working in Python needs to know additional technologies from front-end development and the JavaScript programming language to fully support any project.

Over the past 5 years, Python developers have been in demand in the labor market, and there are still not enough specialists in this field.

Where to look for jobs for a Python developer

You should look for vacancies in Russia on popular specialized sites:

The leaders in the number of employer offers are HeadHunter and Indeed.

Job offers in other countries come across at https://ru.indeed.com/. There is a specialized website for finding work abroad - in the CIS, China, Europe and the USA - https://24ru.com/, but the salary level is underestimated on it. The opportunity to find a job abroad is also provided by platforms for freelance programmers, for example https://www.upwork.com/, where after the successful completion of the project, you may be noticed and offered cooperation.

On these sites there are offers both for beginners - even students, and for experienced ones. Full-time, part-time and remote work available. Basically, remote work often pays less, but it’s realistic to find remote work with a free schedule and a salary of 150-200 thousand rubles. It all depends on the company's policy and your qualifications.

Some companies offer only 20,000 rubles to interns in the last courses of the institute, but in general, salaries on the market do not always correspond to the qualifications of a programmer (usually they are underestimated), so it is very important for the applicant to correctly assess his qualifications and the labor market.

Requirements for a Python Developer

Requirements for candidates vary depending on the field of activity and, of course, on the specific project. If we talk about a typical vacancy, then the following requirements are relevant:

  • Strong knowledge of the Python language and libraries
  • Knowledge of Django or Flask/Pyramid/Tornado framework
  • Basic knowledge of HTML, CSS, JavaScript - for page layout
  • Ability to work with Git
  • Knowledge of SQL, experience with relational databases (PostgreSQL, MySQL), ability to use ORM (for example, Django ORM)
  • English, from basic technical to advanced conversational, depending on the vacancy
  • Experience with non-relational databases such as MongoDB
  • Ability to work in a team, understand other people's code. Understanding Agile (Scrum) and traditional development methodologies
  • Higher education - mainly in the field information technologies and mathematicians, but some organizations employ specialists without higher education (trained in courses or independently).

These are general requirements. The range of vacancies and software products that you will have to work with is very wide. Therefore, each organization requires knowledge that will be useful in its work. General rule is such that the more popular and necessary programming languages, frameworks and databases you know (Js, HTML, C, C++, PHP, Django, SQL, Mongo), and the more experience you have, the greater the chances of a successful job and a decent salary.

The Go language is quite popular now. For example, a well-known Joom marketplace offers a salary of 270,000 rubles per month for a programmer with a Senior Backend developer qualification, knowledge of Go, and experience in developing under Linux / Unix.

English proficiency also affects salary, especially if you are looking for work abroad. An additional advantage will be not only perfect English, but also knowledge of the language of the country of interest.

Typical jobs with knowledge of python

A Python developer can hold the following positions:

Junior Python Developer- from 6 months to 1.5 years of work experience. Writes code. A person who solves small problems himself, but does not master complex ones. Or he will spend a lot of time on them and will need to check the work with more experienced colleagues.

Middle Python Developer- 1 to 3 years experience. A specialist who independently writes code for medium and complex tasks, almost without mistakes. Or is able to quickly find the error. Advises juniors.

Senior Python Developer- Experience from 4 to 6 years. An expert capable of developing complex applications on the framework. His knowledge can be applied in the architecture of the application, the level of payment is much higher than that of beginners. Leads a project or team.

Python Team Lead- position above Senior. Responsibilities include managing their development team, owning the technical side, participating in the work on the project architecture, code review, as well as developing some of the complex assignments on the project. Combines the core knowledge of Senior and Software Engineer level specialists.

QA Automation Engineer- tester, quality assurance specialist software. Responsibilities include finding errors in the program. You can't get a program without testing High Quality- therefore, QA specialists are in great demand in IT companies involved in development.

Python Backend Developer- creates a server part in web applications, administers databases, architecture, program logic. Back-end developer should know server programming languages ​​such as PHP, Python, Ruby, Java, Perl, Node JS ( software platforms). In addition to Node JS, it is useful for this specialist to study Express (a library for the interaction of the Node JS platform with the server) and Mongo DB (a database for receiving and storing information).

data scientist is a specialist with practical knowledge of methods of statistical data analysis, skills in building mathematical models (from neural networks to clustering, from factorial to correlation analysis). He must be able to work with large data sets and find patterns.

The level of salaries in Russia and in other countries

In Moscow, a Python programmer receives from 30,000 to 450,000 rubles, depending on the company and his skill level. In St. Petersburg, from 25,000 to 350,000. The average salary of a developer is 120-150 thousand in federal cities and 75-100 in regional centers.

In the CIS countries, there is a wide spread of salaries. For example, in Uzbekistan, the average income is from 20 to 40 thousand in terms of Russian rubles. In Belarus, the average salary is 2-3 thousand dollars.

The salary in European countries ranges from 1,500 to 5,000 dollars per month, depending on the country and the qualifications of the employee. In the US, programmers are offered from 2,500 to 8,500 thousand dollars a month.

Every novice developer is faced with the question “Which language to learn first?”. 10 programmers can give 10 different answers to it.

At the same time, all of them can be authoritative people who have taken place in the profession and strongly argue their choice. After all, each developer has his own way of mastering the profession, which depends on personal preferences and projects on which he had to work.

How can a novice developer choose the best option for himself if he does not know what specific type of programming he wants to do? To answer this question, let us turn to the experience of American universities.

Top 40 US Universities Choose Python

Higher education institutions in the US often teach Python in introductory Computer Science courses. According to a study by the Association Computing 2014, this language was chosen by 27 of the top 39 American universities. There are several reasons for this:

1. "Low" entry threshold. English-speaking people quickly get the hang of Python and write their first programs easily. In addition, many American students learn this language in computer science classes.

2. Wide scope of use. Knowledge of Python can be useful for students to study other subjects. This language is used for data analysis and scientific research.

3. High popularity of the language in "real development".

Popular all over the world services for online education - Coursera, Codecademy, Udacity, edX - are also recommended to start learning programming with Python.

The popularity of Python compared to other languages

According to the annual rating of the IEEE Spectrum magazine, Python is the first most popular programming language. To compile the rating, journalists analyzed public developer chats, job postings, Github, StackOverflow, and dozens of other sources.

In August 2017, Python was ranked fifth on the Tiobe Index. It is compiled on the basis of the results of queries like "programming" in popular search engines.

Where is Python used?

Python is used in:

How much do Python developers earn?

As mentioned above, the scope of Python is wide. Therefore, the demand for programmers working in this language is very high.

According to the American portal gooroo.io, the highest “salary ceiling” among developers in popular languages ​​is for Python programmers. The maximum annual remuneration indicated in the vacancies is 148 thousand dollars.

Python developers are also in demand in Russia. The salary of a senior developer reaches 200 thousand rubles a month.

How to learn to program in Python

Rate.

Adapted translation of the article "Programming Languages ​​InfoQ Trends Report - October 2019"

Key points

  • Elixir appeared - a functional general-purpose language with multithreading support. Runs on the Erlang virtual machine. In the current report, it is in the innovative category.
  • Domain-oriented languages ​​are gaining popularity, designed to work with infrastructure and cloud technologies. These are instruments such as Ballerina and Pulumi. The authors of the report also noted the Dark language, which was not included in the trends only because it is in beta. Rust has moved from being innovative to being mastered. The InfoQ authors believe that infrastructure and data plane manipulation tools such as Habitat and Linkerd 2.0 are the reason for this. Facebook uses this language to develop its own cryptocurrency.
  • Python continues to gain popularity, mainly due to the fact that it is used for data analysis and processing and teaching programming.
  • Swift for iOS has moved into the early majority category, likely due to the popularity of iOS as an app framework. Kotlin is showing similar progress.
  • In the .NET family, .NET Core 3 is of particular interest. The tool is still in the innovative category, but it has every chance of catching up with .NET Core 2. But Visual Basic fell into the laggard category.

Opinions

Abel Avram, Senior Lecturer, Department of Informatics and Automation, Polytechnic University of Timisoara

jetbrains published the results of the 2019 State of the Developer Ecosystem study (The State of Developer Ecosystem 2019 ), where a survey of 7,000 developers came to the following conclusions:

  • Java is the most popular mainstream programming language;
  • JavaScript is the most commonly used language;
  • Go is the most promising language;
  • Python is the most studied language.

Go started with an 8% share in 2017 and has now reached 18%. In addition, the majority of developers (13%) listed Go as the language they would like to learn.

stackoverflow notes that in 2019, Python overtook Java in the rankings and remains the second most beloved after Rust.

Arthur Casals, researcher working in the field of artificial intelligence and multi-agent systems

Although the use of Rust is still somewhat limited and the language itself is seen more as an alternative to C ++, the emergence of new libraries and the use of this language by large companies make it a potential candidate for the category of mastered languages.

Elixir is gaining popularity in its homeland, Brazil. It is used by at least one major startup, Movile.

Go is still in the development stage. Languages ​​have a much slower life cycle than, for example, frameworks, and Go has not yet reached the stage of ubiquity. Elixir and Elm are also in the development stage in my opinion.

Swift is already categorized as a ubiquitous language, probably because it's the most user-friendly tool for iOS app development.

Cloud IDEs have also gained significant popularity in recent years.CodeSandbox and StackBlitz. They provide a wide range of options for both in-browser editing and integration with local development tools.

I don't think Pony has progressed further than the innovative category, sadly. I like this language even though I find its type system rather complicated. And I think there's been an impressive amount of work done on it, but there's still too little community around the language.

I'm hearing more and more about Dark, though it's still in beta. In the context of infrastructure-oriented languages, I find this interesting.

I think there's a lot of effort on .NET Core. It is worth moving this tool from innovative to mastered. I think when .NET Core 3 is released, it should be separated into a separate branch and placed in innovative.

F# seems to follow the same path as Clojure for the JVM. It looks pretty good, but I do not see a serious development, as well as a decline.

I think Jython is dead. The last time I checked the site, it had not been updated for several years, and in current state it wasn't even close to Python 3.x.

Infrastructure Languages: Seems like a new trend of merging some new languages ​​and rolling out.

  • Pulumi and the like - Typescript;
  • Ballerina;
  • Unison Language - a new functional language from the developers of Scala/Haskell, but without monads. It is still too early to evaluate it;
  • Dark language - Not yet available to the public.

It is not yet clear what this could lead to. This merger may turn out to be just an unsuccessful development branch, or it may be the first step towards new features of the language. Perhaps in 15 years we will consider this approach as natural as the use of subroutines.

Maybe we are now seeing a new future of wasm programming (browser, server with WASI, etc.), as well as a new renaissance of native languages ​​(serverless, using virtual machines and containers). This approach will reduce the appeal of JVM/bytecode and allow everyone to just use native versions of languages ​​(the canonical versions that have been developed for decades). To clarify, the above does not apply to native JVM languages ​​such as Clojure, Scala, Kotlin, etc.

It seems that most Elixir fans prefer it mainly because of its novelty and/or because they have a so-called “Java allergy” (usually caused by the fact that the platform is over 10 years old), but… I have not seen anything in this language , which could not have been quite easy to implement with the JVM (even with a little more fiddling) - while the JVM is much better integrated with libraries.

I have nothing against Python (I even enjoy writing in it), but I think it's worth noting that, despite its popularity, it's actually rarely used commercially. I rarely see a large, deployed commercial application written purely in Python. They often start with it, but then switch to something more productive.

If you ask the community, F# has two problems:

  • poor support from Microsoft;
  • the emphasis is on compatibility with C# at the expense of ease of use;
  • it gets harder and harder, just like computer scientists love. However, F# teachers are focused on teaching people who are far from programming and simply need a scripting language. Excessive complexity makes it difficult to work.

I also think that C# 8 will quickly move into the mastered category. People have been asking for nullable reference types… To be honest, since .NET 1.