Computers Windows Internet

The best programming language in the world. Five promising programming languages ​​with a bright future

JavaScript is good for adding basic interactivity to web pages, but when your web application code is thousands of lines of code, its weaknesses become apparent. That's why Google created Dart, the language the company believes will be the new native language for web programming.

Like JavaScript, Dart uses the syntaxes and keywords similar to those used in the C language. However, one significant difference is that while JavaScript is based on prototypes, objects in Dart are defined using classes and interfaces, as in C ++ or Java. Dart also allows programmers to additionally define variables with static types. The idea is to make Dart as familiar, dynamic, and flexible as JavaScript, while at the same time allowing developers to write code that is fast and easy to execute, and difficult to make hard-to-find mistakes.

There are few places where you can use Dart. It's designed to run either on the client or on the server (a la Node.js), but the only way to run the client-side Dart code is to cross-compile it to JavaScript. However, even after that, it will not run in all browsers. But since Dart is released under a free BSD-type license, any seller who agrees to Google's terms is free to use this language in their products. All Google has left to do is convince the entire industry.


Programming language under study # 2: Ceylon

Gavin King denies that Ceylon, the language he is developing at Red Hat, should become a "Java killer." King is well known as the creator of the Hibernate Object Relational Mapping framework for Java. He loves Java, but thinks there is still a lot to improve on.

Some of the things King does not like in Java are the language's verbose syntax, the lack of first-class and higher-order functions, and the lack of metaprogramming support. He is particularly saddened by the lack of a declarative syntax for defining structured data, which King says "equates Java to XML." Ceylon aims to solve all of these problems.

King and his team have no plans to reinvent the wheel. There will be no Ceylon virtual machine, the Ceylon compiler will produce java bytecode that can be run on the JVM. But Ceylon will be more than just a compiler. Strategic goal of this project is the creation of a new development kit for Ceylon that will replace Java, which King says is "bloated", awkward and still not thoroughly modernized.

This is a difficult task, and so far Red Hat has not released any utilities for Ceylon. King says the compiler is due out this year. But don't expect any software written in "100% pure Ceylon" anytime soon.


The studied programming language # 3: Go

F # code is somewhat similar to OCaml code, but contains its own interesting syntax. For example, to facilitate scientific calculations, numeric data types in F # can be units. F # also provides constructs to facilitate asynchronous I / O, parallelize the CPU, and output processes to the GPU.

After a long period of maturation at Microsoft Research, F # is now shipped with Visual Studio 2010. Better yet, but not corporate-wide, Microsoft has made an F # compiler and root library available under the Apache open source license. You can get started with it for free and even use it on Mac and Linux systems (using the Mono runtime).


The studied programming language # 5: Opa

Web programming is very difficult. Even the simplest web applications are made up of endless lines written in multiple languages: HTML and JavaScript for the client, Java or PHP for the server, SQL for the database, etc.

Opa does not replace any of these languages ​​individually. Moreover, it tries to replace them all at once, representing a completely new paradigm in web programming. In an Opa application, the client user interface, server logic, and I / O database are all written in the same language, Opa.

This is achieved through a combination of client and server side frameworks. The Opa compiler decides where to run this program(on the client, the server, or both there and there), and then executes its code. For client programs, it translates Opa into the appropriate JavaScript code, including AJAX calls.

Naturally, with this kind of integrated system, there should be something magical in the end. The Opa runtime integrates its own web server and database management system that cannot be replaced by standalone alternatives. However, this might not be that important given the ability to develop modern data-driven web applications with just a few dozen lines of code. Opa is supplied free of charge and on this moment is available for 64-bit Linux and Mac OS X platforms, while other ports are still under development.


The studied programming language # 6: Fantom

Want to create Java or .Net applications? If you write on Fantom, you can make a choice and then even change platforms. This is because Fantom was built for cross-platform mobility from the very beginning. The Fantom project consists not only of a compiler that can output bytecode for either the JVM or .Net CLI, but also a set of APIs that decouple Java and .Net APIs and create an additional layer of portability.

It is planned to further increase the mobility of the Fantom. A compiler from Fantom to JavaScript is already available, and the following targets may include the LLVM, Parrot VM, and Objective-C compiler project for iOS.

Fantom is distributed free of charge under the Academic Free License 3.0 and is available for Windows and Unix-like platforms (including Mac OS X).


Studied programming language # 7: Zimbu

Due to its mixed nature, Zimbu's syntax is unique and specific, but at the same time it has a lot of features. It uses expressions and operators similar to those used in C, but with their own keywords, data types, and block structures. It supports memory management, threads and pipelines.

The only issue is portability. Although Zimbu is a compiled language, its compiler produces ANSI C code, and binaries can only be created on platforms with a built-in C compiler.

Unfortunately, the Zimbu project is still under development. The compiler and some sample programs can be built on your own, but not all valid Zimbu code will compile and run as expected. Not all of the declared functions have been developed yet, and some of the ones already presented do not work correctly. The language specification is also likely to change over time, adding keywords, types and syntax as needed. Consequently, the documentation is also incomplete. However, if you want to give it a try, the prerequisite utilities are already available under the Apache license.


The studied programming language # 8: X10

Parallel data processing was once a specialized niche of software development, but with the proliferation of multi-core processors and distributed computing, parallelism has gained popularity. Unfortunately, current programming languages ​​are not keeping up with this trend. That's why IBM Research is creating X10, a language designed specifically for modern parallel architectures that aims to "tenfold" developer productivity.

Parallelism in X10 is possible thanks to the PGAS programming model (shared global address space model). Code and data are allocated in blocks and distributed in different "spaces", thereby facilitating the scaling of a program from a single-threaded prototype (one space) to a multi-threaded one running on one or more multi-core processors (multiple spaces) in a high-performance cluster.

X10 code is most similar to Java. Essentially, the X10 runtime is available both as embedded executables and class files for the JVM. The X10 compiler can output either C ++ or Java source code. There are plans to develop forward compatibility with Java in the future.

In the meantime, the language is developing, although it is already quite developed. The compiler and runtime are available for a variety of platforms, including Linux, Mac OS X, and Windows. Additional utilities are an Eclipse-based interactive development environment (IDE) and a debugger, which are licensed under the Eclipse Public License.


The studied programming language # 9: haXe

Many languages ​​can be used to write portable code. C compilers are available for almost all CPU architectures, and Java bytecode will run wherever the JVM is. But haXe (pronounced "hex") is more than just portable. It is a multi-platform language that can be used in a variety of operating environments ranging from built-in

In a dynamically changing world, when only yesterday respected professions are turning into nothing, many people are looking for something to do in life so that it is both interesting and relevant to the present time, and at the same time profitable. Very often, such searches lead to programming: good programmers, even in the CIS, earn thousands of dollars, have a lot of free time, the ability to work remotely and have a chance for career growth.

In addition to these advantages, programming is also different in that to master it, you do not need to spend years of time wiping your pants at universities. Self-education decides everything here, the Internet has everything necessary materials for successful self-study of any programming language: lessons in text form, video tutorials, instructions, advice from experienced professionals and other educational materials. In this way, you can easily master modern programming technologies and find a truly decent job.

But before you get down to business, you need to answer yourself one important question: which modern programming languages ​​will be relevant in 2017, which of them should you spend your time and effort on? A lot depends on the correct answer here - the complexity and speed of the learning process, the minimum threshold for entering real activity, further career prospects.

Promising areas of programming and languages ​​for 2017

To decide on a specific programming language to study (one or more), you first need to answer the question: in what area of ​​programming would a person like to work. The most popular and rapidly developing areas are now:

Web programming technologies. Website development, online services and banking, online stores, landing pages for businesses and the like - all of this is part of web programming. More and more people on the planet are becoming Internet users, it is becoming faster and cheaper, even people of mature and old age are becoming active Internet users. In 2017, this trend is only intensifying and the ceiling of its development is not yet visible. Therefore, it is very beneficial to learn programming languages ​​related to the Internet. The list of the most popular of them will be presented below;

Programming for gadgets: smartphones, tablets, smart watches, virtual reality glasses and more. It is also a very interesting and rapidly developing field of activity. Billions of people around the world use gadgets, read news on them, watch videos, listen to music and do a lot of other things. All of these electronics functions are possible thanks to well-written software. It often costs much more than the physical device itself. Programming in this area is now very profitable. It is worth noting that programming languages ​​are most often used here. high level.

Which language to choose

It is impossible to say which language is the most modern. Many of them are used very widely and actively. But when it comes to promising programming languages, the best are the following:

  • Java. The most versatile and popular programming language with which you can develop both applications for computers and gadgets, especially for Android OS. It has an understandable syntax, learns quite easily and quickly, the first Java programs can be written several weeks after the start of training. The main characteristic that makes it very promising is its use for programming for Android, which is now developing very rapidly;
  • C #. Great option for a person who wants to devote his activities to writing programs for computer systems. It is the CI Sharp language (C #) that is the basis on which most programs for various platforms and services from Microsoft are written. It can be used to develop web applications using .NET and Azure, as well as programs directly for Windows, various business applications and many other things. It's a bit of a sweat to understand C #, but it will pay off in the long run;
  • PHP. If your task is to write high-quality scripts and interactive templates for Internet resources or be an administrator of a server, which is now a very profitable occupation, then PHP will be the best way to realize such a desire. Modern languages programming just can't do without this representative. He learns quite so quickly and easily - if you study PHP thoroughly and regularly, then in 2-3 years you can apply for a very good position and a corresponding salary.

Of course, this is far from a complete characteristic of languages ​​and their classification, but even such a small list is quite enough to choose a good and promising field of activity for yourself.

A complete review of modern programming languages ​​might take too long, but this is not so necessary, since it is worth remembering the main thing - a person who is fluent in any language will certainly be able to find his place in the field of programming. And knowledge of one of these languages ​​will certainly be enough to make good money and solve interesting problems.

Almost 60 years have passed since the first high-level programming language Fortran appeared in 1957, and it is not surprising that programming has leaped forward over such a long time. New technologies have appeared, new concepts and programming paradigms, and, of course, new languages. As a rule, the creation of a programming language is due to the demand of the time: new tasks often require new tools to solve them, which will do the job better than their predecessors. In this regard, several new languages ​​appear every year, which absorb all the best that has been accumulated over decades of practical programming and at the same time bring something new. Some of the most interesting languages programming that have appeared quite recently, but have already established themselves as powerful and modern tools for the developer and will be considered in this article.

Swift

Free language general purpose created by by Apple for development for iOS and OS X. The language is compatible with Objective-C, which makes it possible to use both languages ​​in one program. Development of the language began in 2010 under the leadership of Chris Lattner, Apple's head of development. Swift has borrowed ideas from many already existing languages very different directions: from C ++ to Haskell. The official introduction of the language took place in June 2014, along with a 500-page manual on how to use it. You can work on Swift in the Xcode 6 for iOS programming environment. Language version 3.0 adds support for Linux.
The language has taken a lot from Objective-C; at the same time, it is positioned as safer and faster. According to the developers, Swift code runs 1.5 times faster than similar Objective-C code.

Hack

A language developed by Facebook; similar in appearance to PHP. The program code on Hack is executed on a special virtual machine that also supports PHP. The language is open source - Hack is open to anyone who wants to participate in its improvement. Although the language is based on the well-known PHP, the developers managed to create a completely new and highly reliable tool for fast creation websites and other applications. The result impressed Facebook so much that all of the company's projects were transferred to Hack - a fact that speaks for itself.

Julia

A new language for mathematical calculations. The syntax of the language was influenced by Matlab and other mathematical languages, but there are also significant differences. The language itself is written in C and C ++; the language program code is executed on the LLVM virtual machine, for which Julia is equipped with a JIT compiler. Thanks to compilation, a high speed of application work was achieved, comparable to programs written in C ++.
The language supports distributed computing, function overloading, and code parallelization. The main task of Julia: work with a large volume of calculations while maintaining high performance. For these purposes, support for cloud computing has also been added to the language. Besides purely mathematical problems with the help of Julia, it is also possible to create general-purpose programs.

Dart

A language created by Google as a replacement for JavaScript. Due to some "fundamental flaws" in JavaScript that cannot be fixed, it was decided to create a new language for web programming. At the same time, the language had to be created as similar as possible to the existing ones, in order to simplify the transition and teach newcomers. Currently, Dart programs are executed in two ways: through virtual machine Dart VM and by translation to JavaScript. In the future, Dart is slated to replace JavaScript as the universal language for web programming.

Type Script

Another language that positions itself as a replacement for JavaScript. The famous Anders Hejlsberg, the author of Delphi, C # and Turbo Pascal, became the developer of the new language. Type Script is open tongue backward compatible with Java Script. The compiler converts the Type Script code to JavaScript, which is then executed by the browser. Unlike JS, the new language supports all the possibilities of object-oriented programming, as well as the connection of modules. Type Script and JavaScript compatibility allows existing JavaScript code to be used in new Type Script projects, including popular JS libraries. There is support for the generic programming paradigm.

  • Translation

If we divide programming languages ​​by popularity, then they are divided into three echelons. The first echelon includes mainstream languages ​​such as Java, JavaScript, Python, Ruby, PHP, C #, C ++, and Objective-C. While some of the leading languages ​​may be waning, you are better off knowing one or more of them if you want to be able to find work easily.


Second-tier languages ​​are trying to break into the mainstream, but have not yet achieved it. They have proven their worth by building strong communities, but they are still not used by most conservative IT companies. Scala, Go, Swift, Clojure and Haskell are languages ​​that I would classify as the second echelon. Some companies use these languages ​​to individual services but widespread use is rare (with the exception of Swift, which is beginning to overtake Objective-C as the primary language for iOS). Go and Swift have a good chance of transitioning from tier 2 to tier 1 within the next two to three years.


Most languages ​​in the first echelon are firmly rooted in their positions. Therefore, the loss of a language from a leading position takes a significant amount of time, and it is very difficult for a language of the second echelon to break into the first.


The promising languages ​​from this article belong to the third echelon, and they are just starting their way up. Some languages ​​have been in the third echelon for many years without gaining popularity, while others burst onto the scene in just a couple of years. Like, for example, the languages ​​that will be discussed in the article.

Promising languages: why these five?

The five programming languages ​​that will be discussed are very new (it is possible that you will hear about some for the first time), and they clearly have excellent chances to break into the second echelon in the next 2-3 years. Maybe someday one of these languages ​​will be able to squeeze out the languages ​​of the first echelon.


That's why these five languages ​​were chosen for this list:


Elm is gaining popularity in the JavaScript community, primarily among those who prefer functional programming, which is on the rise. Like TypeScript or Dart, Elm is transpiled to JavaScript.


Rust is a systems programming language aimed primarily at niches that use C and C ++. Therefore, it is surprising to see that the popularity of this language is growing faster among web developers. This fact becomes more meaningful when you find out that the language was created in Mozilla, which wanted to give a better option to web developers who are forced to write low-level code, and at the same time is more performant than PHP, Ruby, Python or JavaScript. Rust was also voted best in the "Favorite Technology" category in a 2016 StackOverflow developer survey (meaning that most users would like to continue using the language).


Kotlin has been around for about five years, but it was only this year that it reached production-ready version 1.0. Despite the fact that it has not yet achieved the popularity of Scala, Groovy or Clojure - the three most popular and mature (apart from Java) languages ​​for the JVM - it stands out from many other JVM languages ​​and seems ready to take its place among the leaders of this group. ... The language originated in JetBrains (creator of the popular IntelliJ IDEA IDE). So it is designed with a focus on developer productivity.


Crystal is another language that hopes to bring C-level program performance to the high-level world of web developers. Crystal targets the Ruby community because its syntax is similar, and sometimes identical, to Ruby. The already large number of Ruby startups continue to grow, and Crystal can play a key role in helping to take the performance of these applications to the next level.


Elixir also took inspiration from the Ruby ecosystem, but instead of trying to bring C-like benefits, it focuses on building highly available, responsive systems, i.e. what Rails has a problem with according to critics. Elixir achieves these benefits with the Erlang VM, which has a solid reputation built on 25 years of success in the telecommunications industry. Phoenix (a web framework for Elixir), along with a large and flourishing ecosystem, gives this language an added appeal.


Now watch how four of these five languages ​​climb the popularity ladder (based on StackOverflow and GitHub data):




Each of these languages ​​boasts a passionate community and their own weekly newsletter. If you are thinking of learning a young language with exciting opportunities for the future, read short presentations for each of these five languages, written by seasoned enthusiasts and leaders of their respective ecosystems.

Elm

Elm is a usability-oriented functional programming language that compiles to high-performance JavaScript code. You can use it, including in conjunction with JavaScript, to create user interfaces in the Internet. The main advantages of Elm over JavaScript are reliability, ease of maintenance, and focus on programming fun. More specific:

  • No runtime exceptions: Elm code has a reputation never throwing exceptions at runtime... Not at all that "undefined is not a function."
  • Legendary kind compiler: Elm compiler often praise for the most helpful bug reports among the competition. "If it compiles, it usually just works" is a common belief, even after a major refactoring. This makes large Elm projects much easier to maintain than commensurate JS projects.
  • Semantic versioning: elm-package enforces semantic versions automatically. If the author of a package tries to make API-breaking changes without raising the major version number, elm-package will detect this and refuse to publish. new version package. No other well-known package manager enforces semantic versioning so reliably.
  • Fast and functional: Elm is a pure functional language that ensures there are no mutations or side effects. This not only provides excellent scalability to Elm code, but also helps it render the application UI faster than React, Angular, or Ember.
  • Powerful tools: elm-format formats the source code according to the community standard. No more controversy over coding conventions. Just press the “Save” button in your editor and your code looks beautiful. elm-test comes with "batteries" to support both unit and random testing. elm-css allows you to write Elm code that compiles to a css file, so you can split your code between your application and your stylesheets to ensure that your constants never get out of sync.

Elm code can also interact with JavaScript. That is, you can inject it in small doses into your JS code, and you can still use the huge JS ecosystem without reinventing the wheel.

Kotlin

Kotlin is a statically typed language that targets JVM and JavaScript. Kotlin was born out of the need for JetBrains, which was looking for a new language to develop their toolbox (which was mostly written in Java). Something that would allow them to use their existing codebase and at the same time solve some of the problems that Java has caused. And it is precisely the solutions to these common flaws that occur when writing software defined most of the characteristics of Kotlin.

  • Conciseness: reduce the amount of boilerplate code required to express certain constructs.
  • Versatility: create a language that is suitable for any type of industrial application, be it the web, mobile development, desktop or server applications.
  • Security: let the language handle some of the common errors related to issues like null reference exceptions by itself.
  • Interaction: Allow the language to interact with existing Java codebases, libraries, and frameworks so that you can gradually implement and leverage the results of your investment.
  • Instruments: JetBrains makes tools and makes them out of the belief that many routine tasks can be automated and lead to more efficient and productive development. Thus, the language should easily allow for the use of auxiliary tools.

Kotlin was and always will be pragmatic - looking for common problems that we often encounter when writing code and trying to help solve them. It runs like a red thread through various language features such as:

  • Null-safe by default: Kotlin types are non-nullable by default, which avoids annoying null reference / pointer exceptions.
  • First Class Delegation: the ability to delegate the functionality of a class member to an external function, making it easier to reuse and improve composition.
  • Agreement: a set of conventions that allow you to write expressive code, paving the way for a strongly typed DSL that improves readability and makes refactoring easier.
    html (head (title (+ "XML encoding with Kotlin")) body (p (+ "This is some HTML")))

Kotlin 1.0 was released in February 2016 after over five years of development and extensive testing in real projects. There are currently over ten JetBrains products using Kotlin. It is also used by companies such as Amex, NBC Digital, Expedia and Gradle.


To receive additional information visit kotlinlang.org


This section was written

1. When choosing a programming language for a project, the choice arises between two sides - to choose an old proven tool or a new, beautiful, functional, but little tested, and therefore unreliable language. What is the smartest thing to do in this situation? What are the risks of each solution, and how to deal with them?

Igor Zilberg, SmartHead
Tools should be selected according to the adequacy of the task and the presence of an experienced team familiar with the selected tools. Risks when working with new tools are minimized by research, the creation of a proof of concept, and the involvement of experienced consultants. New technologies must be constantly studied, but applied only if they are better suited to a specific task.

Alexander Makarchuk, qb
For business, the concept of "beautiful language" does not exist. You can bet on a new untested language only if it is guaranteed to give the project some special USP that customers can feel, and most importantly, they want to pay for it. If this condition is met, then you can choose a new language, but you will have to take on all the risks associated with it.

Grigory Nikonov, Actis Wunderman
Of course, it depends on the project and the maturity of the language itself. If the project allows, or the use of the language is a prerequisite, and the necessary subject libraries are available, then it is quite possible to allow the experiment. The risks are obvious: "pitfalls" that can be stumbled upon halfway through. Minimizing these risks is also obvious: if possible, conduct research before starting a project and make sure that, at a minimum, there is active support for the language in the forums or from the manufacturer.

, ADV
In this matter, it all depends on the timing and budgets of the project. If both are very limited, then any research is not justified and can bring big problems, up to the complete failure of the project.

Alexey Fedorov, "Classmates"
The answer depends a lot on what the planned duration of the project is. If this is a small custom-made project that needs to be done quickly, hand over and forget about it - then you can choose whatever you want. If this is a large project for years, then it is better to choose proven technologies for which you can hire the number of specialists you need. In order to estimate how many specialists in a particular technology there are in your region, it is enough to use any reasonable service, for example, LinkedIn or HeadHunter. And then you need to look at non-functional requirements: load, security, fault tolerance, etc.

2. What are the essential factors to ensure that the language can and should be used in production?

Igor Zilberg, SmartHead
Nobody and nothing gives guarantees in this world. We rely on our experience and common best practice.

Alexander Makarchuk, qb
There are three main features that indicate that it is profitable and safe to use a particular language. Firstly, the presence of a "living" community in this language, secondly, the presence of successful cases, and thirdly, the support of the language by large vendors.

Grigory Nikonov, Actis Wunderman
The presence of "mature" subject libraries and frameworks, an active Internet community offering advice in solving problems, the absence of negative reviews about the stability and performance of the final application.

Alexey Persianov, Mikhail Parfenyuk, ADV
The factors are the community of the given language, the number of implemented projects, the number of developers, etc. A production release in a new and raw language hides big support issues.

Alexey Fedorov, "Classmates"
A formal guarantee can only be backed up by a contract. If there is a serious vendor (for example, Oracle, SAP, IBM) who guarantees, for example, that his technology will be supported for the next 10 years, and a corresponding Support Contract has been signed with this vendor, then, in principle, you can consider this some kind of guarantee ... The problem is that this is usually very expensive, and the quality of support from large vendors is usually disgusting.

Therefore, a different practice has been adopted in the world in recent years - open source. If you have an open source tool (language, framework, database, or whatever) with an open source source code, then this gives you some guarantee that if a bug is suddenly found in this tool, then in extreme cases you can fix this bug with your own hands. It is this property of opensource solutions that I consider to be key for today's business.

3. How to act if a developer or even several developers suggest changing the programming language, but the situation shows that their passion is not supported by adequate business requirements for technology?

Igor Zilberg, SmartHead
The developers have no business requirements. Business presents them. However, business depends on the quality of the code that developers write. Therefore, if developers want to use a technology that is clearly not suitable for solving a business problem, then they must either convince the developers or change it. An adequate and experienced developer is able to understand the business requirements and apply the most appropriate solution to them. We didn't have such problems. In our practice, the opposite happens more often: the customer, instead of formulating business requirements, influences the choice of technology (often to the detriment of the implementation of his own requirements).

Alexander Makarchuk, qb
If the transition to a new language is not supported by tangible arguments and does not promise serious advantages for the project, then it is not needed. But the developers, of course, need to explain this so that the team does not get the impression that they are not listening to them.

Grigory Nikonov, Actis Wunderman
Adhere to a conservative policy and not change the language without good reason. There will always be another project on which to try out a new language.

Alexey Persianov, Mikhail Parfenyuk, ADV
You can meet developers halfway only in the case of an internal project, or if it is written to train the team. In this case, the risks of failure are small, and in case of failure, useful experience is brought forward for the future. Otherwise, the business will not appreciate the perfectionism of the developers.

Alexey Fedorov, "Classmates"
First, one should ask what is the basis for the idea of ​​changing the language. What will it give? What are the pros and what are the cons? What is the cost of such a transition and what is the time frame? What are the risks?

If the answers you receive suit you from a business point of view, go ahead. If you are not satisfied, you need to try to convey to the developers the reasons why you refuse them.

4. When is the cost of switching from one language to another worth it?

Igor Zilberg, SmartHead
It is impossible to estimate the costs of a platform change and the related benefits outside the context of the project. Such a decision can only be made on the basis of a deliberate approach within the framework of a specific project, and not on the basis of any “universal” opinions or rules.

Alexander Makarchuk, qb
When this will entail tangible profits, both direct and indirect, due to the appearance of a new USP in the project, which will make the product more competitive.

Grigory Nikonov, Actis Wunderman
In the case when the use of a new language makes it possible to significantly optimize the entire life chain of the subject area: from design, development and testing of an application to implementation and subsequent updates and improvements due to the properties of the language and the ecosystem around it.

Alexey Persianov, Mikhail Parfenyuk, ADV
When language support is discontinued, and at the same time, the number of specialists on the market tends to zero. Or if you completely lose an old team without the ability to retain technology. When the profit from the language will be more than the cost of switching it.

Alexey Fedorov, "Classmates"
When you and your colleagues have clear answers to the above questions.

5. Do you think there is an established division in the use of languages ​​for specific tasks? If so, how exactly do you see it? Could a language emerge or does it already exist that will change the situation and take over the majority of developers?

Igor Zilberg, SmartHead
Of course, there are some typical uses for different platforms (not languages). For example Java and .NET for relatively large business applications or services. Node.js for multithreading and messaging. All cannot be enumerated. However, these boundaries are very, very blurred and also depend on the region. In the USA, for example, there is a slightly different experience of use, "fashion" and typical applications of platforms than ours.

Alexander Makarchuk, qb
On the one hand, there is a well-established division of languages ​​by application, but on the other hand, regional and cost factors are quite important: the cost of entering the technology, support, etc. As far as the emergence of new languages ​​is concerned, the following thing should be noted here. Over the past few years, the level of communication has grown significantly, and the programming languages ​​are essentially the same. Perhaps it is the further revolution in communications that will entail entirely new development technologies.

Grigory Nikonov, Actis Wunderman
In principle, there is such a division: C and C ++ are traditionally used for low-level development, Java and C # are considered general-purpose languages ​​suitable for a wide range of tasks from business logic to mobile applications... Python, Ruby, and PHP are focused mainly on web development, JavaScript on browser applications. I do not think that drastic changes in this area are possible, although the fashion for languages ​​and frameworks sometimes changes - now, for example, the Go language is beginning to gain popularity.

Alexey Persianov, Mikhail Parfenyuk, ADV
Yes. Some things are better implemented in different languages due to the speed of work and ease of use, for example, in php projects due to the "slowness" of the language, you can implement a chat in Node or an aggregator in Java - the result will be better.

Every year, each new language receives the laurels of the "best" and attracts developers, but so far, probably, the positions of proven languages ​​are unshakable. In the future, everything can be.

Alexey Fedorov, "Classmates"
Most of the modern programming languages ​​we know are multifunctional, that is, they can make very different decisions.

As for a new language, yes, such a language may appear, but due to the rather strong inertia of the industry, I do not think that in the next 5 years someone will push Java and C / C ++ off the pedestal. If I choose some kind of "horse", then I would put on JavaScript. Today we are seeing tremendous growth in the industry in everything related to JavaScript. Frameworks are born like mushrooms after rain. The Internet hype around this technology is huge. Let's see where this all leads.

6. Should a programmer be DevOps (have the skills of a programmer and system administrator)? What to do with the fact that most programmers refuse to develop competencies and be responsible in this area?

Alexey Persianov, Mikhail Parfenyuk, ADV
To set up the environment, they usually use the services of a system administrator. But, probably, it makes sense that the person who writes the code should be able to set up the site for the optimal execution of the given code. This will save time and costs.

7. Should you use microservices in your projects?

Alexey Persianov, Mikhail Parfenyuk, ADV
There is no definite answer, but our answer is yes. Of course, they can add a lot of problems, but they will also help to solve many. For example, thanks to microservices, different parts of the application can be written in different programming languages, it is possible to scale the loaded parts of the application, etc.

8. Does a developer need to be able to work with a wide range of modern web technologies and languages?

Alexey Persianov, Mikhail Parfenyuk, ADV
In recent years, the front-end has made a huge leap, while the development in server-side languages ​​is not so noticeable. A developer, of course, must know the basics of related areas, but it is impossible to be a guru in server-side languages ​​and in client-side languages, everyone must do their own thing and be a real professional in it.