Demand for programming languages. Modern programming languages ​​and their use

💖 Do you like it? Share the link with your friends

One of the most used systems for assessing the popularity of a programming language is TIOBE, the essence of which is to count the number of web pages that contain the name of a particular language.

However, this does not always indicate how many people are actually in this moment want to use or are using a programming language, so the GitHub team approached this issue from a different angle.

Their system called PYPL (Popularity of Programming Languages) is based on the number search queries Tutorials: The more people search for tutorials on a particular programming language, the higher it ranks in PYPL.

10. Swift

The language hasn't been around for long, but Apple wants it to become a key language around the world and across all platforms, including web and Android, within the next 20 years.

9. R

R was created in 1993 and today is used by large companies for machine learning and big data analysis.

8. Objective-C

Even though Swift was originally released to replace Objective-C, it is still a popular and cutting-edge language for iOS development. But that will probably change soon.

7. C++

The most popular products written in C++ are Windows and Google Chrome.

6.C

Dad can in C. This is probably why this language is used everywhere, and code in it can be run on literally any computing platform.

5. JavaScript

It is this language that is usually ranked first in various rankings. However, according to GitHub, it is not the most popular. JavaScript is mainly used to develop web applications, but there are really no limitations to it.

4. C#

C# developed by Microsoft and is used mainly in related systems, e.g. Windows Phone. The Bing search engine is also written in C#.

3.PHP

This language is the most popular choice for backend development. Sites such as Facebook, VKontakte, Yahoo are written on it.

2.Python

Python was created in 1989 and since then it seems to have become increasingly popular.

In a dynamically changing world, when just 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 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. Self-education is everything here; the Internet has all the necessary materials for successful self-learning of any programming language: lessons in text form, video lessons, instructions, advice from experienced specialists 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: which modern programming languages ​​will be relevant in 2017, and which one 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 work, 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 the question: in what area of ​​programming would a person like to work. The most popular and rapidly developing areas now are:

Web programming technologies. Website development, online services and banking, online stores, landing pages for businesses 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 mature and old people are becoming active users of the Internet. In 2017, this trend is only intensifying and the ceiling for its development is not yet visible. Therefore, it is very beneficial to learn Internet-related programming languages. A list of the most popular of them will be presented below;

Programming for gadgets: smartphones, tablets, smart watches, glasses virtual reality And so on. This is also a very interesting and rapidly developing area 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 these electronic functions are possible thanks to well-written software. It often costs much more than the physical device. 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 languages programming, then the best can be called the following:

  • Java. The most universal and popular programming language with which you can develop both applications for computers and gadgets, especially those running Android OS. It has a clear syntax, learns quite easily and quickly, the first programs in Java can be written a few 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#. An excellent option for a person who wants to devote his activity to writing programs for computer systems. It is the SI Sharp language (C#) that is the basis on which most programs for various platforms and services from Microsoft are written. With its help, you can develop web applications using .NET and Azure, as well as programs directly for Windows OS, various business applications and many other things. Getting to grips with C# takes a little work, but it will pay off in the end;
  • PHP. If your task is to write high-quality scripts and interactive templates for Internet resources or to be an administrator of any server, which is now a very profitable occupation, then PHP will be the best way realize such aspirations. Modern languages programming simply cannot do without this representative. He learns quite 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 full characteristics 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 any 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 earn good money and solve interesting problems.

1. When choosing a programming language for a project, the choice is between two sides - 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
It is necessary to select tools according to their adequacy to the task and the presence of an experienced team familiar with the selected tools. Risks when working with new tools are minimized by research, creating a proof of concept, and engaging experienced consultants. New technologies should be constantly studied, but only used if they are better suited to solve a specific problem.

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 kind of special USP that customers will be able to feel, and most importantly, will want to pay for it. If this condition is met, then choose new language it is possible, but at the same time 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 you can stumble upon halfway. Minimizing these risks is also obvious: if possible, conduct research before starting 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 severely limited, then any research is not justified and can bring big problems, up to and including complete failure of the project.

Alexey Fedorov, "Classmates"
The answer depends greatly on how long the project is planned to last. If this is a small custom project that needs to be done quickly, delivered and forgotten about, then you can choose whatever you want. If this is a large project that will take 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 significant factors guarantee that the language can and should be used in production?

Igor Zilberg,SmartHead
No one and nothing gives guarantees in this world. We rely on our experience and common best practices.

Alexander Makarchuk, qb
There are three main signs that indicate that using a particular language is profitable and safe. Firstly, the presence of a “living” community for this language, secondly, the presence of successful cases, and thirdly, 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 reviews about the stability and performance of the final application.

Alexey Persianov, Mikhail Parfenyuk,ADV
Factors are the community of a given language, the number completed projects, number of developers, etc. Releasing a product for production in a new and crude 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), which guarantees, for example, that its technology will be supported for the next 10 years, and the corresponding 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 recent years, another practice has been adopted in the world - 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 discovered in this tool, then, as a last resort, you can fix this bug with your own hands. It is this property of opensource solutions that I consider key for today’s business.

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

Igor Zilberg,SmartHead
Developers do not have business requirements. They are presented by business. However, business depends on the quality of the code that developers write. Therefore, if developers want to use 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 business requirements and apply the most appropriate solution to them. We didn't have such problems. In our practice, the opposite often happens: 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 benefits to 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 being listened to.

Grigory Nikonov Actis Wunderman
Adhere to conservative policies and do not change 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 only meet the developers halfway 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 learned for the future. Otherwise, business will not appreciate the perfectionism of developers.

Alexey Fedorov, "Classmates"
First, you should ask what is the rationale behind 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 satisfy 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 are refusing 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 changing the platform and the associated benefits outside the context of the project. Such a decision can only be made on the basis of an informed approach within the framework of a specific project, and not on the basis of any “universal” opinions or rules.

Alexander Makarchuk, qb
When this entails tangible profits, both direct and indirect due to the emergence of a new USP for 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 design, development and testing of the 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 stopped, and at the same time the number of specialists on the market tends to zero. Or if you completely lose the old team without the ability to retain technology. When the profit from a language is 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 division of the use of languages ​​for certain tasks? If so, how exactly do you see it? Could a language appear or already exist that will change the situation and attract the majority of developers?

Igor Zilberg,SmartHead
Of course, there are some typical applications different platforms(not languages). For example, Java and .NET for relatively large business applications or services. Node.js for multi-threaded processing and messaging. It’s impossible to list everything. However, these boundaries are very, very blurry and also depend on the region. In the USA, for example, the experience of use, “fashion” and typical areas of application of platforms are slightly different than ours.

Alexander Makarchuk, qb
On the one hand, there is an 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. As for the emergence of new languages, here one thing needs to be noted. Over the past few years, the level of communication has increased significantly, but the programming languages ​​are essentially 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: the languages ​​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 dramatic 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 speed 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 wins over developers, but for now, probably, the positions of proven languages ​​are unshakable. Anything can happen in the future.

Alexey Fedorov, "Classmates"
Most of the modern programming languages ​​known to us are multifunctional, that is, very different solutions can be made in them.

As for a new language - yes, such a language may appear, but due to the rather strong inertia of the industry, I don’t think that in the next 5 years anyone will dislodge Java and C/C++ from their pedestal. If I were to choose a “horse”, I would bet on JavaScript. Today we see a huge growth in everything JavaScript related in the industry. Frameworks are born like mushrooms after rain. The hype on the Internet around this technology is enormous. Let's see where this all leads.

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

Alexey Persianov, Mikhail Parfenyuk,ADV
To set up the environment, they usually use the services of a system administrator. But it probably makes sense that the person who writes the code should be able to set up the platform for 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 clear 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 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 frontend 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 and client-side languages; everyone must mind their own business and be a true professional in it.

  • Translation

If we divide programming languages ​​by popularity, they are divided into three echelons. The first tier includes mainstream languages ​​such as Java, JavaScript, Python, Ruby, PHP, C#, C++ and Objective-C. While some of the top languages ​​may be fading, 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 it. 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 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 primary language for iOS). Go and Swift have a good chance of moving from the second to the first tier over the next two to three years.


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


The promising languages ​​from this article belong to the third echelon, and they are just beginning their way to the top. 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 an excellent chance of breaking into the second echelon in the next 2-3 years. Maybe someday one of these languages ​​will be able to supplant the languages ​​of the first echelon.


Here'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 transpiles to JavaScript.


Rust is a systems programming language aimed primarily at niches where C and C++ are used. 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 realize that the language was created by Mozilla, which wanted to provide a better option for web developers who are forced to write low-level code that is more performant than PHP, Ruby, Python or JavaScript. Rust was also voted the top "most loved technology" in StackOverflow's 2016 developer survey (meaning the majority of users would like to continue using the language).


Kotlin has been around for about five years, but only this year it reached production-ready version 1.0. Although it has not yet reached the popularity of Scala, Groovy or Clojure - three of the most popular and mature (not counting Java) JVM languages ​​- it stands out from the crowd of other JVM languages ​​and seems poised to take its place among the leaders of this group . The language originated from 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-end world of web developers. Crystal is aimed at the Ruby community because... its syntax is similar, and sometimes identical, to Ruby. With the already large number of Ruby startups continuing to grow, Crystal can play a key role in helping take the performance of these applications to the next level.


Elixir also takes inspiration from the Ruby ecosystem, but rather than trying to bring C-like benefits, it is focused on building highly available, responsive systems, i.e. something that critics say Rails has problems with. Elixir achieves these benefits using Erlang VM, which has a strong reputation based on 25 years of successful use in the telecommunications industry. Phoenix (the web framework for Elixir), along with a large and thriving ecosystem, gives this language additional appeal.


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




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 brief presentations for each of these five languages, written by experienced enthusiasts and leaders in their respective ecosystems.

Elm

Elm is a functional programming language focused on usability and ease of use that compiles to high-performance JavaScript code. You can use it, including in conjunction with JavaScript, to create user interfaces on the Internet. The main advantages of Elm over JavaScript are its reliability, ease of support, and focus on the fun of 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."
  • Legendarily kind 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 a 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. This not only makes Elm code highly scalable, but also helps it render application UI faster than React, Angular or Ember.
  • Powerful Tools: elm-format formats source according to community standard. There are no more arguments over coding conventions. Just click the “Save” button in your editor and your code becomes 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 share code between your application and stylesheets to ensure your constants never get out of sync.

Elm code can also interact with JavaScript. That is, you can introduce 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 targets the JVM and JavaScript. Kotlin was born out of a need for JetBrains, which was looking for a new language to develop its toolset (which was primarily 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 was causing. And it is precisely the solutions to these common shortcomings encountered 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 web, mobile development, desktop or server applications.
  • Safety: Let the language itself handle some of the common errors associated with issues such as null reference exceptions.
  • Interaction: Allow the language to interoperate with existing Java code bases, libraries and frameworks, allowing for gradual adoption and use of existing investments.
  • 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 and always will be about pragmatism - looking for common problems we often encounter when writing code and trying to help solve them. This runs through various linguistic features, such as:

  • Null-safe by default: Kotlin types are non-nullable by default, which avoids annoying exceptions associated with null references/pointers.
  • 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 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 more than five years of development and extensive testing in real-world projects. Currently, more than ten JetBrains products use Kotlin. It is also used by companies such as Amex, NBC Digital, Expedia and Gradle.


For getting additional information visit kotlinlang.org


This section was written by

Title of the report

Modern programming languages ​​and their use

Author of the project

Project structure

● Programming languages ​​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 von Neumann computer architecture. A program written in a procedural language is a sequence of commands that define an algorithm for solving a problem. The main idea of ​​procedural programming is the use of memory to store data. The main command is assignment, with which the computer's memory is determined and changed. The program converts the contents of memory, changing it from initial state to the result.

There are the following procedural programming languages:

 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 problems of processing large amounts of data stored on various data storage media;

 ALGOL (1960) is a multi-purpose advanced programming language. It introduced for the first time the concepts of “block program 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 learning and the presence of universal tools for solving scientific, technical and economic problems, as well as problems, for example, gaming ones.

All of the languages ​​listed above were focused on different classes of tasks, 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 research 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 PCs, which is still successfully used today. The Pascal language is based on an approach from general problems to specific ones (simpler and smaller in scope). The basic principles that Pascal has include: a) Structured programming, which is based on the use of subroutines and independent data structures; b) Top-down programming, when a problem is divided into simple, independently solved problems. Then the solution to the original problem is built entirely 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 its modular design.

 The SI language (early 70s) also belongs to the 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 SI language is that the differences between expressions and operators are smoothed out, which brings it closer to functional programming languages. In addition, the SI language does not have the concept of a procedure, and the use of subroutines is based on the concept of a function, which can combine the capabilities of a procedure. On the one hand, based on the set of control constructs and data structures, it can be classified as a high-level language, and on the other hand, it has a set of means for directly accessing functional units computer, meaning that it can be used as an operating 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 characteristic of a given object), methods for processing them (subroutines for changing their properties) and events, to which this object can react and which lead, as a rule, to a change in the properties of the object. Combining data and their inherent processing procedures in one object is called encapsulation and is one of the most important principles of OOP.

Another fundamental concept is class. A class is a template on the basis of which a specific software object can be created; it describes the properties and methods that determine the behavior of objects of this class. Each concrete object having the structure of this class is called an instance of the class.

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

Polymorphism means that born objects have information about what 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-90s, many object-oriented languages ​​have been implemented as visual design systems, in which the interface part of a software product is created interactively, with virtually no writing of program statements. To object – oriented systems visual design include Visual Basic, Delphi, C++ Builder, Visual C++. VBA (Visual Basic for Application) language - language Microsoft applications Office (Excel, Word, Power Point and etc). VBA follows the basic syntax of the language and the programming rules of Basic languages ​​- dialects, allows you to create macros to automate the execution of certain operations and GUI user, integration between various 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, or loops. The key concept in functional languages ​​is 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 in the form of lists. The first language was the Lisp language (LISP, LIST Processing) created in 1959. This language allows you to process large amounts of text 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, which Prolog tries to prove using the rules. The language itself searches for a solution using the search and matching methods that are embedded in it. Logic programs are not characterized by high performance, since the process of their execution comes down to constructing forward and backward chains of reasoning using various search methods.

Overview of programming languages

Assembler

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

1) languages low level;

2) high level languages.

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

The assembler also allows flexible and full use of the technical capabilities of the computer, as does the machine command language. The assembler source program translator is simpler than the translator required for a high-level programming language. In assembler, you can write a program that is as efficient in size and execution time as a program in machine instruction 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 measuring systems. Such systems usually have high requirements for the amount of computer memory they occupy. Often, Assembly language is supplemented with tools for generating macro instructions, each of which is equivalent to a whole group of machine instructions. This language is called macroassembly language. The use of poppy "building" blocks brings Assembly language closer to a high-level language. Assembly language is a machine-dependent language, i.e. it reflects the architectural features of a particular type of computer

Pascal

The Pascal programming language was developed by Nicolas 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, and Fortran. The intensive development of Pascal led to the appearance of its standard in the form of a revised message in 1973, 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 the MS-Pascal and Turbo translators -Pascal for PC. Since then, Pascal has become one of the most important and widely used programming languages. It is significant that the language has long gone beyond academic and narrow professional interest and is used in most universities in highly developed countries not only as a user’s working tool. The most important feature of Pascal is the embodiment of the idea of ​​structured programming. Another significant feature is the concept of data structure as one of the fundamental concepts.

The main reasons for Pascal's popularity 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 ensure ease of working with both numeric and symbolic and bit information

The presence of special techniques for creating translators from Pascal simplified their development and contributed to the wide dissemination of the language

The optimizing properties of Pascal translators allow you to create efficient programs. This was one of the reasons for using Pascal as a system 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 scope 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 language compiler. Ritchie did not just invent C out of his head - the prototype was the B language developed by Thompson. The C programming language was designed as a tool for practicing programmers. In accordance with this, the main goal of its author was to create a language that was convenient and useful in all respects.

C is a system programmer's tool and allows you to delve deeply into the most subtle mechanisms of information processing on a computer. Although the language requires great discipline from the programmer, it is not strict in its formal requirements and allows for brief formulations.

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

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

C is a convenient language. It is structured enough to support good style programming and at the same time is not bound by strict restrictions. In a sense, the C language is the most universal, because... In addition to a set of tools inherent in modern high-level programming languages ​​(structure, modularity, certain data types), it includes tools for programming almost at the assembler level. A large set of operators and tools 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 freeing 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 the following: a C program reflects the “way of thinking” of the processor, and C++ reflects the way of thinking of the programmer. Meeting the requirements modern programming,C++ places an emphasis on developing new data types that best match 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, the members of a class 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 these objects and the rest of the program. During further work, it is not at all necessary to remember the internal structure of the class and the mechanism of operation of the built-in functions. In this sense, a class is like an electrical device - few people know about its structure, but everyone knows how to use it.

The C++ language is a tool object programming, a new technique for program design and implementation that is likely to replace traditional procedural programming in the current decade. The main goal of the language's creator, Dr. Björn Stroustrup, was to equip the C++ language with constructs that would increase the productivity of programmers and facilitate the process of mastering large software products.

Abstraction, implementation, inheritance and polymorphism are the necessary properties of the C++ language, due to which it is not only universal, like the C language, 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 Fortran application 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 different machines are quite standardized and transferring programs from machine to machine is usually not very difficult;

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

Over the past period, a new methodology and philosophy of programming has been formed. Since the early 1970s, Fortran has come under 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 consider that its development is 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, for example, Watfor, Lap-Fortran, etc. But the most widely used on machines of this type are various versions of the Fortran-77 translator. Released in 1990, the MS-Fortran 5.0 translator almost completely complies with the Fortran-90 standard. Most major scientific and engineering applications are written in Fortran because it is portable and robust, and because it has built-in mathematical and trigonometric functions. An additional, integral part of any Fortran application program is an extended graphics 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 with the goal of developing a unified programming language for so-called embedded systems (i.e. control systems for automated complexes operating in real time). This meant, first of all, on-board control systems for military objects (ships, planes, tanks, missiles, shells, etc.). Therefore, the decisions made 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 of language projects held in 1978-1979. Participants had to meet rather stringent requirements developed in detail under the auspices of the US Department of Defense. Interestingly, all the languages ​​that reached the final rounds of this competition were based on Pascal. In this regard, Ada can be tentatively characterized as Pascal, developed taking into account the five basic requirements listed above. At the same time, the authors mainly followed the path of expanding Pascal with new elements. The result was a significantly more complex language.

COBOL

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

While listing the disadvantages, one cannot help but remember that only simple algebraic calculations can be programmed in Cobol. For engineering calculations this language is no good. Another reason that to some extent holds back the development of the language is the presence in the United States of a specially created industry committee that develops standards, the observance of which is monitored by a government commission. As always happens in such cases, companies involved in software development are in no hurry to adjust their workpieces to the strict requirements of the commission, there is no competition between versions, and in the end the spread of the language loses

PL/1 was developed in 1964-1965 by IBM. PL/1 is one of the universal languages, i.e. it allows you to solve problems from different areas: numerical calculations, word processing, economic problems, etc. In terms of its capabilities, it covers languages ​​such as Fortran, ALGOL-60 (created for numerical calculations), Cobol (for economic problems), although for a number of reasons PL/1 could not supplant these languages.

PL/1 contains all the basic constructs characteristic of so-called high-level languages, as well as a number of specific tools convenient for practical programming. The language resembles a constructor with a large number details - the user only needs to master those parts of the language that are practically necessary for him. Its operators are quite concise, which often allows the program to be written 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 disadvantages that make it difficult to learn and use the language. The main ones are as follows. Firstly, there are many tools that duplicate each other, they are difficult to remember, it is not clear what to use when, in addition, this reduces both the speed of translation and the speed of program execution. Secondly, the programs are not completely machine-independent.

Modula

We can consider that the history of the Modula language begins in 1980, when Niklaus Wirth, one of the outstanding information theorists, known to most specialists in computer technology mainly as the creator of the Pascal language, he published a description of a new programming language he called Modula. Unlike Pascal, which was intended to be a language for teaching programming, Modula was from the very beginning a language for professional system programs ists, continuing the best traditions of its predecessor and enriching them with new ideas that meet such requirements for programming languages ​​as structure, modularity and extensibility. Like many other programming languages, Modula underwent an evolution, during which its original name was remade into the name 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, developed by Borland. During this transitional period for the Modula language, the best implementations were considered to be those made by Logitech, whose characteristics were inferior 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 procedural languages ​​intended for system programming. Several factors contributed to the growing popularity of the Top Speed ​​system: a convenient and, in addition, easily changed operating environment at the request of users, a fast compiler and a selective link editor. But the most significant thing turned out to be that created programs They were very fast 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 credit for its appearance undoubtedly belongs to the Americans John Kemeny and Thomas Kurtz). Like any advantages, the simplicity of BASIC came to fruition, especially in earlier versions difficulties of structuring; In addition, BASIC did not allow recursion - an interesting technique that allows you to write effective and at the same time short programs.

Powerful BASIC compilers have been developed, which provide not only 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 programming systems in the BASIC language. 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, its implementation 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 aimed at developing programs for solving non-numerical problems. The English name of this language, LISP, is an abbreviation for the expression LISt Processing (list processing) and well highlights the main area of ​​​​its application. The concept of “list” turned out to be very capacious. It is convenient to represent algebraic expressions, graphs, elements of finite groups, sets, inference rules, and many other complex objects in the form of lists. Lists are the most flexible form of representing information in computer memory. It is therefore not surprising that a convenient language specifically designed for processing lists has quickly gained popularity.

After the appearance of Lisp, various authors proposed a number of other algorithmic languages ​​focused on solving problems in the field of artificial intelligence, among which are Planner, Snoball, Refal, Prolog. However, this did not prevent Lisp from remaining the most popular language for solving such problems. Over the almost forty-year history 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 notation form 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 elements of a certain class with the corresponding elements of another class. The matching process itself does not have any 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. The clarity of programs, a clear delineation of their functions, and the absence of tricky side effects during their execution are mandatory requirements for programming such logically complex tasks as those of artificial intelligence. Discipline in programming becomes especially important when not just one person, but a whole group of programmers is working on a 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 basic 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 is enough to describe a problem using rules and statements regarding given objects. If this description is sufficiently accurate, 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. On entry level With Object PAL functionality, you can perform data operations, create special menus, and manage the data entry session. Events in Object PAL generate commands that simulate 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. Object PAL also provides all the facilities of a full-featured programming language in Windows environment. You can use Object PAL to create complete systems that implement a special menu system, a help system, and various data checks. In Object PAL, you can save your work in a dynamically linked library, which can be accessed by several forms. In addition, you can 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 a dynamic data exchange mechanism as both a client and a server. In addition, Object PAL supports a mechanism for working with compound documents as a client. In addition to the above, it is possible to include multimedia in your application by providing the running application with sound and animation effects.

Borland's implementation of the dBase language is a successful hybrid of object orientation and traditional programming methods. It allowed the creation of systems 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-based 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 you to program these objects 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, a transition so difficult, for example, as in the Paradox DBMS.

The Java language originated as part of a project to create advanced software for various household appliances. The project was started in C++, but a number of problems soon arose, the best way to combat which was to change the tool itself - the programming language. It became obvious that a platform-independent programming language was needed, allowing one to create 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 almost identical conventions for declaring variables, passing parameters, passing operators, and for controlling the flow of code execution. Java adds all the good features of C++.

Three key elements come together to form Java language technology

Java provides widespread use of its applets - small, reliable, dynamic, platform-independent active network applications 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 simple, familiar syntax with a robust, 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 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 range 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. 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 useful for writing various system programs. This language is easy to use, efficient, but it is difficult to say that it is elegant and compact. The syntax of Perl expressions is close to the syntax of C. Recursion can be of arbitrary depth. Although Perl is designed to scan text files, it can also process binary data. 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 an excellent tool for interacting with web servers through the Common Gateway Interface (CGI). Perl commands can easily take data from an HTML form or other source and do something with it.

Language PHP(1995-1997) has database access tools and is used by 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 going on to create a universal document structure language. Can become a replacement for HTML.

Conclusion

Useful resources

Review by Aizili

Where is the report?

Review Ranifka

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

Review by Shamagulova Elite

Review by Mishina Alexandra

Excellent report. Learned a lot of new things about programming languages.

Review by Alexandra Morozova

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



tell friends