What language is currently being programmed in? Five promising programming languages ​​with a bright future

Antipyretics for children are prescribed by a pediatrician. But there are emergency situations for fever when the child needs to be given medicine immediately. Then the parents take responsibility and use antipyretic drugs. What is allowed to give to infants? How can you bring down the temperature in older children? What medicines are the safest?

  • Translation

If we divide programming languages ​​by popularity, then they are divided into three echelons. The first tier includes mainstream languages ​​such as Java, JavaScript, Python, Ruby, PHP, C#, C++, and Objective-C. Although some of the leading languages ​​may be fading away, you'd better know one or more of them if you want to be able to easily find a job.


Second-tier languages ​​are trying to break into the mainstream, but have not yet achieved this. They have proven their worth by creating strong communities, but they are still not used by most conservative IT companies. Scala, Go, Swift, Clojure and Haskell are the languages ​​that I would classify as second tier. Some companies use these languages ​​for individual services, but widespread adoption is rare (with the exception of Swift, which is starting to overtake Objective-C as the main language for iOS). Go and Swift have a good chance of moving from the second tier to the first 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 second-tier language to break into the first.


The promising languages ​​in this article belong to the third tier, and they are just starting their way up. Some languages ​​stay in the third tier 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 tier in the next 2-3 years. Maybe someday one of these languages ​​will be able to press 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 primarily intended for 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 makes more sense when you find out that the language was created by Mozilla, who wanted to give a better option to web developers who are forced to write low-level code, and at the same time be more performant than PHP, Ruby, Python or JavaScript. Rust was also voted the best 'most loved technology' in the 2016 StackOverflow developer survey (meaning that most users would like to continue using the language).


Kotlin has been around for about five years, but just this year it reached production-ready version 1.0. Although it has not yet reached the popularity of Scala, Groovy or Clojure - the three most popular and mature (not counting Java) languages ​​under 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's 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 is aimed at the Ruby community because its syntax is similar, and sometimes identical, to Ruby. The already large number of Ruby startups continues 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 accessible, responsive systems, i.e. what critics say Rails has trouble with. Elixir achieves these benefits with Erlang VM, which has a solid reputation built on 25 years of success in the telecommunications industry. Phoenix (the web framework for Elixir), along with a large and thriving ecosystem, gives this language an added appeal.


Now take a look at how four of these five languages ​​are climbing the popularity ladder (based on StackOverflow and GitHub data):




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

Elm

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

  • No runtime exceptions: Elm code has a reputation never throwing exceptions at runtime. Not at all like "undefined is not a function."
  • The legendary gracious compiler: Elm compiler often praise for the most helpful bug reports among competitors. "If it compiles, it usually just works" is a common belief, even after major refactoring. This makes large Elm projects much easier to maintain than comparable JS projects.
  • Semantic versioning: elm-package enforces semantic versions automatically. If the package author 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 known package manager enforces semantic versioning so reliably.
  • Fast and functional: Elm is a pure functional language that guarantees no mutations or side effects. Not only does this provide great scalability for Elm code, but it also helps it render application UI faster than React, Angular or Ember .
  • Powerful tools: elm-format formats the source code according to the community standard. No more arguing over coding conventions. Just hit the "Save" button in your editor and your code becomes beautiful. elm-test comes with batteries to support both unit testing and random testing. elm-css allows you to write Elm code that compiles to a css file, so you can share code between your application and style sheets 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 and not reinvent the wheel.

Kotlin

Kotlin is a statically typed language that focuses on the JVM and JavaScript. Kotlin was born from the need of JetBrains, which was looking for a new language to develop its toolkit (which was mostly written in Java). Something that would allow them to use the existing codebase and at the same time solve some of the problems that Java had. And it is the solutions to these common pitfalls encountered when writing software that have defined much 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 web, mobile development, desktop or server applications.
  • Safety: let the language handle some of the common pitfalls related to issues like null reference exceptions.
  • Interaction: allow the language to interoperate with existing Java codebases, libraries, and frameworks, allowing for incremental adoption and benefit from investments already made.
  • Tools: JetBrains makes tools and makes them based on the belief that many routine tasks can be automated and lead to more efficient and productive development. Thus, the language should easily allow the use of auxiliary tools.

Kotlin has been, and always will be, focused on pragmatism - looking for common problems that we often encounter when writing code and trying to help solve them. This 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, which facilitates reuse and improves composition.
  • Agreements: a set of conventions that allow you to write expressive code, paving the way for a strongly typed DSL that improves readability and simplifies refactoring.
    html ( head ( title (+"XML encoding with Kotlin") ) body ( p ( + "This is some HTML" ) ) )

Kotlin 1.0 was released in February 2016 after more than 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.


For more information visit kotlinlang.org


This section was written

1. When choosing a programming language for a project, the choice is 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 decision, and how to deal with them?

Igor Zilberg, SmartHead
It is necessary to choose tools 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 proof of concept, and the involvement of experienced consultants. New technologies should be constantly explored, but applied only if they are better suited to a particular task.

Alexander Makarchuk, qb
For business, the concept of a “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, want to pay for it. If this condition is met, then you can choose a new language, but you will have to accept 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 necessary condition, and the necessary subject libraries are available, then it is quite possible to allow the experiment. The risks are obvious: "pitfalls" that you can stumble upon halfway through. Minimizing these risks is also obvious: if possible, conduct research before the start of the 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, everything depends on the timing and budget 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 how long the project will take. If this is a small custom project that needs to be done quickly, handed over and forgotten about, then you can choose whatever you want. If this is a big 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 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 that guarantee 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 signs that indicate that using a particular language is profitable and safe. Firstly, the presence of a "live" 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 online community offering advice on solving problems, the absence of negative feedback on the stability and performance of the final application.

Alexey Persianov, Mikhail Parfenyuk, ADV
Factors are the community of a given language, the number of implemented projects, the number of developers, and so on. The release to production of a product in a new and raw language hides big problems with support.

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

Therefore, in the world last years adopted another practice - open source. If you have an open source tool (language, framework, database, or whatever) with open 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 resources. hands. It is this property of open source solutions that I consider the key to today's business.

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

Igor Zilberg, SmartHead
Developers do not impose business requirements. Businesses provide them. However, business depends on the quality of the code developers write. Therefore, if developers want to use a technology that is clearly not suitable for solving a business problem, then the developers must either be convinced or changed. Adequate and experienced developer is able to understand 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 implementing their 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, of course, this needs to be explained to the developers so that the team does not get the impression that they are not listening to it.

Grigory Nikonov, Actis Wunderman
Stick to a conservative policy and don't change the language without a good reason. There will always be another project to try out a new language.

Alexey Persianov, Mikhail Parfenyuk, ADV
You can meet the 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 passed on to the future. Otherwise, the business will not appreciate the perfectionism of developers.

Alexey Fedorov, "Classmates"
First, one should ask what is the rationale 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 not possible to estimate the costs of switching platforms and the associated benefits outside the context of the project. Such a decision can only be made on the basis of a conscious approach within a particular project, and not on the basis of any "universal" opinions or rules.

Alexander Makarchuk, qb
When this will entail tangible profit, both direct and indirect due to the emergence 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 allows you to significantly optimize the entire life chain of the subject area: from designing, developing and testing 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 in the market tends to zero. Or if you completely lose the old team without the ability to save technology. When the profit from the language will be greater than the cost of its transition.

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

5. Do you think that there is a well-established separation of the use of languages ​​for certain tasks? If yes, how exactly do you see it? Can a language appear or already exist that will change the situation and pull over most of the developers?

Igor Zilberg, SmartHead
Of course, there are some typical applications for different platforms (not languages). For example, Java and .NET for relatively large business applications or services. Node.js for multithreading and messaging. Do not list everything. However, these boundaries are very, very blurred and also depend on the region. In the USA, for example, a slightly different experience of use, "fashion" and typical areas of application 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 price factors are quite important: the cost of entering the technology, support, etc. With regard to the emergence of new languages, here it is necessary to notice such a thing. Over the past few years, the level of communication has grown significantly, and programming languages, in fact, are still the same. Perhaps it is the further revolution in the field of communications that will entail completely 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 aimed mainly at web development, JavaScript - at browser applications. I don't think that drastic changes are possible in this area, although the fashion for languages ​​and frameworks sometimes changes - now, for example, the Go language is starting 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, the positions of proven languages ​​are probably unshakable. Everything is possible in the future.

Alexey Fedorov, "Classmates"
Most of the modern programming languages ​​known to us 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 you choose some kind of “horse”, then I would bet on JavaScript. Today we see a huge growth in the industry in everything related to JavaScript. Frameworks are born like mushrooms after rain. The hype on the internet around this technology is huge. Let's see where it all leads.

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

Alexey Persianov, Mikhail Parfenyuk, ADV
To configure 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 this code. This will save time and costs.

7. Should you use microservices in your projects?

Alexey Persianov, Mikhail Parfenyuk, ADV
There is no definitive answer, but our answer is yes. Of course, they can add a lot of problems, but they will also help 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. Should a developer 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 breakthrough, while the development in server-side languages ​​is not so noticeable. The developer, of course, must know the basics of related areas, but it is impossible to be a guru in server languages ​​and client languages, everyone must do their own thing and be a real professional in it.

Title of the report

Modern programming languages ​​and their use

Project author

Project structure

● Programming language classification scheme

● Classification of programming languages

● Overview of programming languages

● Useful resources

Programming language classification scheme

Classification of programming languages

procedural programming- is a reflection of the von Neumann architecture of the computer. A program written in a procedural language is a sequence of commands that define an algorithm for solving a problem. The basic idea of ​​procedural programming is the use of memory to store data. The main command is assignment, with the help of which the computer's memory is determined and changed. The program converts the contents of the memory, changing it from the initial state to the resulting one.

There are such languages ​​of procedural programming:

 The Fortran language was created in the early 50s of the 20th century for programming scientific and technical problems;

 Cobol - created in the late 60s of the 20th century to solve the problems of processing large amounts of data stored on various data carriers;

 Algol (1960) is a multi-purpose advanced programming language. It introduced for the first time the concepts of "program block structure" and "dynamic memory allocation";

 In the mid-60s of the 20th century, a specialized programming language for beginners was created - BASIC. It is characterized by ease of development and the availability of universal tools for solving scientific, technical and economic problems, as well as tasks, for example, gaming.

All of the languages ​​listed above were focused on different classes of problems, but they were, to one degree or another, tied to a specific computer architecture.

 In 1963-1966, the multi-purpose universal language PL-1 was created. This language is well suited for the study and planning of computational processes, modeling, solving logical problems, and developing software systems.

 Pascal language (PASCAL) (1968-1971) is the most popular procedural programming language for PC, which is still successfully used. The Pascal language is based on the approach from the general task to the specific (simpler and smaller in volume). The main principles that Pascal possesses include: a) Structural programming, which is based on the use of subroutines and independent data structures; b) Top-down programming, when the task is divided into simple, independently solved tasks. Then the solution of the original problem is built completely from top to bottom.

 Procedural programming languages ​​include the ADA language (1979). The language is named after the first programmer, Ada Lovelace, Byron's daughter. It is distinguished by modularity of designs.

 The C language (early 70s) also belongs to procedural programming languages. Its original version was planned as a language for implementation operating system Unix instead of assembly language. One of the features of the C language is that the differences between expressions and statements are smoothed out, which brings it closer to functional programming languages. In addition, the C language does not have the concept of a procedure, and the use of subprograms is based on the concept of a function, which can combine the capabilities of a procedure. On the one hand, according to the set of control structures and data structures, it can be classified as a high-level language, and on the other hand, it has a set of tools for direct access to the functional units of a computer, which means that it can be used as an operational language.

Object Oriented Programming (OOP) is a programming method in which the main elements of programs are objects. In programming languages, the concept of an object is implemented as a set of properties (data structures specific to a given object), methods for processing them (subroutines for changing their properties) and events to which a given object can respond and which, as a rule, lead to a change in the properties of the object. The combination of data and their processing procedures in one object is called encapsulation and is one of the most important principles of OOP.

Another fundamental concept is the class. A class is a template from which a particular program object can be created, it describes the properties and methods that determine the behavior of objects of this class. Each specific object that has the structure of this class is called an instance of the class.

The next most important principles of OOP are inheritance and polymorphism. Inheritance provides for the creation of new classes based on existing ones and allows the descendant class to have (inherit) all the properties of the parent class.

Polymorphism means that born objects have information about which methods they should use depending on where they are in the chain.

Another important principle of OOP is modularity - objects contain a complete definition of their characteristics, no definitions of methods and properties should be located outside it, this makes it possible to freely copy and implement one object into others.

The most modern programming languages ​​are C++ and Java. Since the mid-1990s, many object-oriented languages ​​have been implemented as visual design systems, in which the interface part of a software product is created interactively, with little or no writing of program statements. Object-oriented visual design systems include Visual Basic, Delphi, C++ Builder, Visual C++. VBA (Visual Basic for Application) language is the language of Microsoft Office applications (Excel, Word, Power Point, etc.). VBA follows the basic syntax of the language and the rules of programming languages ​​Basic - dialects, allows you to create macros to automate the execution of certain operations and GUI user, integration between different software products.

Declarative programming languages

These include functional and logical programming languages. Functional programming is a way of writing programs in which the only action is to call a function. Functional programming does not use memory as a place to store data, and therefore does not use intermediate variables, assignment statements, and loops. The key concept in functional languages ​​is the expression. A program written in a functional language is a sequence of descriptions of functions and expressions. The expression is calculated by reducing the complex to the simple. All expressions are written as lists. Lisp (LISP, LIST Processing) was created in 1959 as the first language. This language allows you to process large amounts of textual information. Logic programming is programming in terms of logic. In 1973, the artificial intelligence language Prolog (PROLOG) (Programming in Logic) was created. A Prolog program is built from a sequence of facts and rules, then a statement is formulated that Prolog tries to prove with the help of the rules. The language itself looks for a solution using the search and matching methods that are embedded in it. Logic programs are not distinguished by high speed, since the process of their execution is reduced to the construction of direct and reverse chains of reasoning using various search methods.

Overview of programming languages

assembler

Computer programming languages ​​are divided into 2 main groups:

1) low-level languages;

2) high-level languages.

Assembly languages ​​are low-level languages. They got their name from the name of the Assembler system program, which converts source programs written in such languages ​​directly into machine instruction codes. The parts here are statements, and the result of the assembly is a sequence of machine instructions. The assembly language combines the advantages of a machine instruction language and some features of high-level languages. The assembler provides the possibility of using symbolic names in the source program and saves the programmer from the tedious work (inevitable when programming in machine language) in allocating computer memory for instructions, variables and constants.

The assembler allows the same flexibility and full use of the technical capabilities of the computer, as well as the language of machine instructions. The assembler source translator is simpler than the compiler required for a high-level programming language. It is possible to write a program in Assembly Language that is as efficient in terms of size and execution time as a program in machine language. This advantage is absent in high-level languages. This language is often used for programming real-time systems, technological processes and equipment, ensuring the operation of information and measurement systems. Such systems usually have high demands on the amount of machine memory occupied. Often the assembly language is supplemented by means of forming macros, each of which is equivalent to a whole group of machine instructions. Such a language is called a macro assembler language. The use of poppy "building" blocks and brings the assembly language closer to a high-level language. Assembler is a machine-dependent language, i.e. it reflects the architecture features of a particular type of computer

Pascal

The Pascal programming language was developed by Nicholas Wirth, a professor at the Department of Computer Science at the Swiss Federal Institute of Technology, in 1968 as an alternative to existing and increasingly complex programming languages ​​such as PL/1, Algol, Fortran. The intensive development of Pascal led to the appearance already in 1973 of its standard in the form of a revised message, and the number of translators from this language in 1979 exceeded 80. In the early 80s, Pascal further strengthened its position with the advent of MS-Pascal and Turbo translators -Pascal for PC. Since that time, Pascal has become one of the most important and widely used programming languages. It is essential that the language has long gone beyond the scope of academic and narrowly professional interest and is used in most universities in highly developed countries not only as a working tool for the user. The most important feature of Pascal is the embodied idea of ​​structured programming. Another essential feature is the concept of data structure as one of the fundamental concepts.

The main reasons for the popularity of Pascal are as follows:

The simplicity of the language allows you to quickly master it and create algorithmically complex programs.

Developed means of representing data structures provide the convenience of working with both numerical and symbolic and bit information

The presence of special methods for creating compilers from Pascal simplified their development and contributed to the wide spread of the language

The optimizing properties of compilers from Pascal allow you to create efficient programs. This was one of the reasons why Pascal was used as a systems programming language.

The Pascal language implements the ideas of structured programming, which makes the program visual and provides good opportunities for development and debugging.

Bell Labs employee Denis Ritchie created the C language in 1972 while working with Ken Thompson as a tool for implementing the Unix operating system, but the popularity of this language quickly outgrew the boundaries of a specific operating system and specific system programming tasks. Currently, any tool and operating system cannot be considered complete if it does not include a C compiler. Ritchie did not just invent C out of his head - the B language developed by Thompson served as a prototype. The C programming language was developed as a tool for practical programmers. In accordance with this, the main goal of its author was to create a convenient and useful language in all respects.

C is a system programmer's tool and allows you to get deeply into the most subtle mechanisms of information processing on a computer. Although the language requires a high degree of discipline from the programmer, it is not strict in formal pretensions and allows for concise formulations.

C is a modern language. It includes those control structures that are recommended by the theory and practice of programming. Its structure encourages the programmer to use top-down design, structured programming, and step-by-step module development in their work.

C is a powerful and flexible language. Most of the Unix operating system, compilers and interpreters for Fortran, Pascal, Lisp, and BASIC are written with it.

C is a convenient language. It is structured enough to support a good programming style without being bound by hard limits. In a sense, the C language is the most versatile, because in addition to a set of tools inherent in modern high-level programming languages ​​(structurality, modularity, certain data types), it includes tools for programming almost at the assembler level. A large set of operators and facilities require the programmer to be careful, accurate and have a good knowledge of the language with all its advantages and disadvantages.

The C++ language appeared in the early 80s. Created by Bjarne Stroustrup with the original goal of saving himself and his friends from programming in assembly, C, or various other high-level languages.

According to the author of the language, the difference between the ideology of C and C++ is approximately as follows: a C program reflects the “way of thinking” of the processor, while C++ reflects the programmer's way of thinking. Responding to the requirements of modern programming, C++ focuses on the development of new data types that most fully correspond to the concepts of the chosen field of knowledge and the tasks of the application. Class is a key concept in C++. The class description contains a description of the data required to represent objects of this type and a set of operations for working with similar objects.

Unlike traditional C and Pascal structures, class members are not only data, but also functions. Member functions of a class have privileged access to data within objects of that class and provide an interface between those objects and the rest of the program. In further work, it is absolutely not necessary to remember the internal structure of the class and the mechanism of the built-in functions. In this sense, the classroom is like an electrical device - few people know about its device, but everyone knows how to use it.

The C++ language is a tool for object programming, the latest technique for designing and implementing programs, which in the current decade is likely to replace traditional procedural programming. The main goal of the creator of the language, Dr. Bjorn Stroustrap, was to equip the C ++ language with constructs that make it possible to increase the productivity of programmers and facilitate the process of mastering large software products.

Abstraction, implementation, inheritance, and polymorphism are essential properties that C++ has, making it not only universal like C, but also an object language. Fortran Fortran is a widely used language, especially among users who do numerical modeling. This is due to several reasons:

The existence of huge funds of applied Fortran programs accumulated over the years, as well as the presence of a huge number of programmers who effectively use this language;

The presence of effective Fortran translators on all types of computers, and the versions for various machines are quite standardized and transferring programs from machine to machine usually does not pose great difficulties;

The original focus of Fortran on physical, mathematical and technical applications; in particular, this manifested itself in the fact that for a long time it remained the only language with a built-in complex type of variables and a large set of built-in functions for working with such variables.

Over the past period, a new programming methodology and philosophy has been formed. Since the beginning of the 70s, Fortran has been subjected to well-deserved criticism. In 1977, a new language standard, Fortran-77, was adopted. It took a lot of time to create a new standard, but now we can already consider that its development has been completed and the new Fortran-90 standard has begun to enter the practice of Fortran users. Only on machines like the IBM PC, there are several translators such as Watfor, Lap-Fortran, etc. But the most widespread on machines of this type are various versions of the Fortran-77 translator. Released in 1990, the MS-Fortran 5.0 translator is almost completely compliant with the Fortran-90 standard. Most major scientific and technical applications are written in Fortran because of its portability and stability, and also because of the built-in mathematical and trigonometric functions. An additional, integral part of any Fortran application program is an extended graphic library that allows you to use various graphic data and images.

The language was created mainly in 1975 - 1980 as a result of a grandiose project undertaken by the US Department of Defense to develop a single programming language for the so-called embedded systems (i.e. real-time control systems for automated complexes). First of all, they had in mind the onboard control systems for military facilities (ships, aircraft, tanks, missiles, shells, etc.). Therefore, the decisions taken by the authors of Ada should not be considered universal. They need to be perceived in the context of the characteristics of the chosen subject area. The language of Ada arose as a result of an international competition for language projects held in 1978-1979. Participants had to meet rather tough, detailed requirements developed under the auspices of the US Department of Defense. Interestingly, all the languages ​​that reached the last rounds of this competition were based on Pascal. In this regard, Ada can be tentatively characterized as a Pascal developed with the above five basic requirements in mind. At the same time, the authors went mainly along the path of expanding Pascal with new elements. The result is a much more complex language.

cobol

Cobol is a relatively old language, developed primarily for economic research. The language allows you to work effectively with a large amount of data, it is full of various search, sorting and distribution capabilities. About Cobol programs based on widespread use of English language, they are said to be understandable even to those who do not speak Cobol, since the texts in this programming language do not need any special comments. Such programs are called self-documenting. Other advantages of Cobol are usually attributed to its structuredness. Quite powerful compilers from this language are developed for personal computers. Some of them are so effective that a program debugged on a personal computer can be easily transferred to mainframe computers.

Listing the cons, one cannot help but recall that only the simplest algebraic calculations can be programmed on Cobol. For engineering calculations, this language is not suitable. Another reason that to some extent hinders the development of the language is the presence in the United States of a specially created industry committee that develops standards that are monitored by a government commission. As is always the case in such cases, software development firms are in no hurry to fit their workpieces to the rigid requirements of the commission, there is no version competition, and in the end loses the spread of the language

PL/1 was developed in 1964-1965 by IBM. PL/1 is one of the universal languages, that is, it allows solving problems from different areas: numerical calculations, text processing, economic problems, etc. In terms of its capabilities, it overlaps such languages ​​as Fortran, Algol-60 (created for numerical calculations), Kobol (for economic problems), although for a number of reasons PL/1 could not displace these languages.

PL/1 contains all the basic constructions characteristic of the so-called high-level languages, as well as a number of specific tools that are convenient for practical programming. The language resembles a constructor with a large number of details - the user only needs to master those parts of the language that are practically necessary for him. Its statements are quite capacious, which often makes it possible to write a program more compactly than in other languages. A programmer who knows PL/1 can easily master any other language of the same or similar class.

At the same time, PL/1 also has a number of shortcomings that make it difficult to learn and use the language. The main ones are as follows. Firstly, there are many means that duplicate each other; Secondly, the programs are not completely machine-independent.

Modula

It can be considered that the history of the Modula language begins in 1980, when Niklaus Wirth, one of the prominent information theorists, known to most computer scientists mainly as the creator of the Pascal language, published a description of a new programming language, which he called Modula. Unlike Pascal, which was intended as a language for teaching programming, Modula from the very beginning was a language for professional systems programmers, continuing the best traditions of its predecessor and enriching them with new ideas that meet such requirements for programming languages ​​as structure, modularity and the ability to to expansion. Like many other programming languages, Modula has undergone an evolution, during which its original name was changed to Modula-2. Simultaneously with the development of the Modula language, new compilers were created for it, however, none of them could compete with the best implementations of the Pascal and C languages, for example, those developed by Borland. In this transitional period for the Modula language, the implementations made by Logitech were considered the best, which, according to their characteristics, lost to Turbo Pascal and Turbo C. Only in 1988, after the Top Speed ​​system appeared on the American market, Modula-2 took its rightful place among the procedural languages ​​intended for system programming. Several factors contributed to the growing popularity of the Top Speed ​​system: a convenient and, in addition, easily changeable operating environment, a fast compiler and a selective linker. But the most significant thing turned out to be that the created programs were distinguished by high speed and did not take up much memory space.

BASIC

BASIC (Basic - Beginner's All-Purpose Symbolic Instruction Code - “universal symbolic instruction code for beginners”). A direct descendant of Fortran and still the most popular programming language for personal computers. BASIC appeared in 1963 (it would be difficult to name the author, but the main merit in its appearance undoubtedly belongs to the Americans John Kemeny and Thomas Kurtz). Like any advantage, BASIC's simplicity came at the expense of structuring, especially in early versions; in addition, BASIC did not allow recursion - an interesting trick that allows you to write effective and at the same time short programs.

Powerful BASIC compilers have been developed that provide not only a rich vocabulary and high performance, but also the possibility of structured programming. According to some programmers, the most interesting versions are GWBASIC, Turbo-Basic and Quick Basic.

At one time, the appearance of Quick Basic marked the birth of the second generation of BASIC programming systems. It provided the possibility of modular and procedural programming, creating libraries, compiling ready-made programs, etc., which brought it to the level of such classical programming languages ​​as C, Pascal, Fortran, etc. Moreover, due to the lack of an official BASIC language standard, in the form of Quick Basic has become the de facto standard. The undisputed leaders among the various versions of BASIC were Quick Basic 4.5 and PDS 7.1 from Microsoft, which appeared in the late 80s.

Lisp

The Lisp language was proposed by J. McCarthy in 1960 and is focused on developing programs for solving non-numerical problems. The English name of this language - LISP is an abbreviation of the expression LISt Processing (list processing) and well emphasizes the main area of ​​\u200b\u200bits application. The concept of “list” turned out to be very capacious. In the form of lists, it is convenient to represent algebraic expressions, graphs, elements of finite groups, sets, inference rules, and many other complex objects. Lists are the most flexible form of information representation in computer memory. No wonder, then, that a handy language specifically designed for handling lists quickly caught on.

After the advent of Lisp, various authors proposed a number of other algorithmic languages ​​focused on solving problems in the field of artificial intelligence, among which Planner, Snobol, Refal, Prolog can be noted. However, this did not prevent Lisp from remaining the most popular language for solving such problems. Over the course of almost forty years of its existence, a number of dialects of this language have appeared: Common LISP, Mac LISP, Inter LISP, Standard LISP, etc. The differences between them are not fundamental and mainly come down to a slightly different set of built-in functions and some difference in the form of notation programs. Therefore, a programmer who has learned to work on one of them can easily master any other. The great advantage of Lisp is its functional orientation, i.e. programming is carried out using functions. Moreover, a function is understood as a rule that matches the elements of a certain class with the corresponding elements of another class. The matching process itself has no effect on the operation of the program, only its result is important - the value of the function. This makes it relatively easy to write and debug large software systems. Clarity of programs, a clear delineation of their functions, the absence of tricky side effects during their execution are mandatory requirements for programming such logically complex tasks as artificial intelligence tasks. The discipline in programming becomes especially important when not one person but a whole group of programmers is working on the program.

The Lisp programming language is designed primarily for processing symbolic information. Therefore, it is natural that in the world of Lisp, numbers play far from the main role. The main data types in Lisp are called "atom" and "dot pair".

Prologue

A logic programming language is designed to represent and use knowledge about a certain subject area. Programs in this language consist of a certain set of relations, and its execution is reduced to the derivation of a new relation based on the given ones. Prolog implements a declarative approach, in which it suffices to describe the problem with the help of rules and statements about given objects. If this description is accurate enough, then the computer can independently find the required solution.

Object PAL

Object PAL is a powerful programming language. Object PAL is an object-oriented, event-driven, visual programming language. At the initial level of Object PAL functionality, you can perform data operations, create special menus, and manage the data entry session. Events in Object PAL generate commands that mimic the effect of using Paradox interactively. It is possible to automate frequently performed tasks, as well as perform actions on tables, forms and reports that were not available during interactive work. Also, Object PAL provides all the features of a full-featured programming language in the Windows environment. You can use Object PAL to create complete systems that implement a custom menu system, help system, and all sorts of data validation. In Object PAL, you can store your work in a dynamic link library that can be accessed by multiple forms. In addition, it is possible to establish links with other dynamic libraries containing programs written in languages ​​such as C, C++ or Pascal.

Object PAL can be used as a tool for creating standalone programs. You can write a complete Windows application and run it under Paradox.

Object PAL supports dynamic data exchange as both a client and a server. In addition, Object PAL supports the compound document engine as a client. In addition to the above, it is possible to include multimedia tools in your application by providing the running application with sound and animation effects.

Borland's implementation of the dBase language is a happy hybrid of object orientation and traditional programming. It allowed systems to be created using object design and the use of conventional record processing techniques. The great achievement of the Borland company was that it very successfully combined object and procedural programming techniques. The first version for Windows gave the user the most powerful object tool on the database software market. It allows you to create new classes of objects that have the properties of inheritance, encapsulation, and polymorphism. It also allows these objects to be programmed using traditional dBase commands, ideal for managing simple tabular databases. All this gives an undeniable advantage - to carry out the transition to object programming techniques without much difficulty, the transition is as complicated, for example, as in Paradox DBMS.

The Java language originated as part of a project to create advanced software for various household appliances. The implementation of the project was started in the C++ language, but soon a number of problems arose, the best way to deal with which was to change the tool itself - the programming language. It became obvious that a platform-independent programming language was needed that would allow creating programs that would not have to be compiled separately for each architecture and could be used on different processors under different operating systems. The Java language was required to create interactive products for the Internet. In fact, most of the architectural decisions made in the creation of Java were driven by the desire to provide a syntax similar to C and C++. Java uses nearly identical conventions for declaring variables, passing parameters, passing operators, and controlling the flow of code. Java adds all the good features of C++.

Three Key Elements Coming Together in Java Language Technology

Java makes its applets available for general use - small, robust, dynamic, platform-independent active network applications that are embedded in Web pages. Java applets can be customized and distributed to consumers as easily as any HTML document.

Java unleashes the power of object-oriented application development by combining a simple and familiar syntax with a robust and easy-to-use development environment. This allows a wide range of programmers to quickly create new programs and new applets.

Java provides the programmer with a rich set of object classes to clearly abstract many of the system functions used in windowing, networking, and I/O. The key feature of these classes is that they provide platform-independent abstractions for a wide variety of system interfaces.

Programming languages ​​for computer networks

Programming languages ​​for computer networks are interpreted. Interpreters for them are distributed free of charge, and the programs themselves are in source code. Such languages ​​are called script languages.

Perl is an interpreted language created by programmer Larry Wall for processing large texts and files and stands for Practical Extraction and Report Language (language for practical data extraction and reporting). With Perl, for example, you can create a script that opens one or more files, processes the information, and writes the results.

Perl is a language adapted for processing arbitrary text files, extracting the necessary information from them, and issuing messages. Perl is also handy for writing various system programs. This language is easy to use, efficient, but it's hard to say that it's elegant and compact. The syntax of Perl expressions is close to that of C. Recursion can be of arbitrary depth. Although Perl is capable of scanning text files, it can handle binary data as well. Perl allows you to use regular expressions, create objects, insert pieces of Perl code into a C or C++ program, and also allows you to access databases, including Oracle.

With the invention of the World Wide Web, Perl proved to be a great way to communicate with web servers through the Common Gateway Interface (CGI) - a common communication interface. Perl commands can easily get data from an HTML form or other source and perform some action on it.

Language PHP(1995-1997) has access to the database and is used by the creators of dynamic sites around the world.

Language tcl/tk(late 80s) consists of powerful commands designed to work with abstract untyped objects and allows you to create programs with a graphical interface.

Language VRML(1994) was created to organize virtual three-dimensional interfaces on the Internet.

Language XML. Since 1996, work has been underway to create a universal document structure language. It can become a replacement for the HTML language.

Conclusion

Useful Resources

Isili's review

Where is the report?

Reviewed by Ranifka

Re: Where is the report?
Everything will be :D

Feedback from Shamagulova Elite

Reviewed by Alexander Mishin

Excellent report. Learned a lot about programming languages.

Feedback from Alexander Morozov

Of course, I would like to see a report or at least a presentation in some form.

In a dynamically changing world, when only yesterday respected professions turn 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 opportunity to work remotely and have chances for career growth.

In addition to these advantages, programming is also different in that to master it, you don’t need to spend years of time wiping your pants at universities. Here everything is decided by self-education, the Internet has all the necessary materials for successful self-study in any programming language: text-based lessons, video lessons, 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 one important question for yourself: what modern programming languages ​​will be relevant in 2017, which of them to 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, and 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 yourself 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. Creation of websites, online services and banking, online stores, landing pages for business and the like - all 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 advanced age are becoming active users of the network. 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. A list of the most popular of them will be presented below;

Programming for gadgets: smartphones, tablets, smart watches, virtual reality glasses and more. This is also a very interesting and rapidly developing field of activity. Billions of people around the world use gadgets, read news, watch videos, listen to music and do a lot of other things on them. All these electronics features are possible thanks to a 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 high-level programming languages ​​are most often used here.

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 if we are talking about promising programming languages, then the following can be called the best:

  • Java. The most versatile and popular programming language with which you can develop both applications for computers and gadgets, especially for Android control OS. It has a clear syntax, learns quite easily and quickly, the first programs in Java can be written already a few weeks after the start of training. The main characteristic that makes it very promising is the use for Android programming, which is now developing very rapidly;
  • C#. A great option for a person who wants to dedicate their activities to writing programs for computer systems. It is the C Sharp language (C#) that is the basis on which most programs are written for various platforms and services from Microsoft. With it, you can develop web applications using .NET and Azure, as well as programs directly for Windows, various business applications, and many other things. It takes a bit of work to get your head around C#, but it pays off in the end;
  • PHP. If your task is to write high-quality scripts and interactive templates for Internet resources or to be the administrator of a server, which is now a very profitable occupation, then PHP will the best way realize such aspiration. Modern programming languages ​​simply cannot do without this representative. He learns quite so quickly and easily - if you study PHP carefully and regularly, then after 2-3 years you can apply for a very good position and an appropriate salary.

Of course, this is far from a complete description 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 ​​could take too much time, but this is not so necessary, since it is worth remembering the main thing - a person who is fluent in at least some language will definitely 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 appearance of the first high-level programming language Fortran in 1957, and it is not surprising that programming has stepped far ahead in such a long time. There are new technologies, new programming concepts and paradigms, and, of course, new languages. As a rule, the creation of a programming language is driven by the demands of the times: new tasks often require new tools to solve them, which will do a better job than their predecessors. In this regard, several new languages ​​​​appear every year, which incorporate 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 programming languages ​​that have appeared quite recently, but have already proven themselves as powerful and modern tools for the developer, will be discussed in this article.

Swift

A general-purpose free language created by Apple for iOS and OS X development. 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 borrowed ideas from many existing languages ​​in various directions: from C ++ to Haskell. The official introduction of the language took place in June 2014, along with a 500-page manual for its use. You can work on Swift in the Xcode 6 programming environment for iOS. Language version 3.0 adds support for Linux.
The language took a lot from Objective-C; at the same time, it is positioned as safer and faster. According to the assurances of the developers, the code in Swift works 1.5 times faster than similar code in Objective-C.

Hack

Language developed by  ; looks like PHP. Hack code is executed on a special virtual machine that also supports PHP. The language is open - Hack source codes are open to anyone who wants to take part in its improvement. Although the language is based on the well-known PHP, the developers have managed to create a completely new and highly reliable tool for quickly creating websites and other applications. The result impressed   so much that all the company's projects were transferred to Hack - a fact that speaks for itself.

Julia

New language for mathematical calculations. The syntax of the language has been influenced by Matlab and other mathematical languages, but there are also significant differences. The language itself is written in C and C++; The program code of the language 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 parallelism. The main task of Julia: work with a large amount of calculations while maintaining high performance. For these purposes, cloud computing support has also been added to the language. In addition to purely mathematical problems, using 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" of the JavaScript language that cannot be corrected, 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 existing ones, in order to simplify the transition and learning for beginners. Currently, Dart programs are executed in two ways: through virtual machine Dart VM and by translating to JavaScript. In the future, Dart is planned to replace JavaScript as the universal language for web programming.

Type Script

Another language positioning itself as a replacement for JavaScript. The developer of the new language was the famous Anders Hejlsberg, the author of Delphi, C# and Turbo Pascal. Type Script is an open language that is backwards 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 features of object-oriented programming, as well as connecting 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.



Support the project - share the link, thanks!
Read also
cockfight game rules cockfight game rules Mod for minecraft 1.7 10 watch recipes.  Recipes for crafting items in Minecraft.  Weapons in Minecraft Mod for minecraft 1.7 10 watch recipes. Recipes for crafting items in Minecraft. Weapons in Minecraft Shilling and sterling - the origin of words Shilling and sterling - the origin of words