The most powerful programming language. Modern programming languages ​​and their use

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

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, virtual reality glasses, etc. 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.

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.

JavaScript is good for adding basic interactivity to web pages, but when your web applications have thousands of lines of code, the language's weaknesses become noticeable. That's why Google created Dart, a language that the company believes will become the new "native" language for web programming.

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

Dart isn't widely used today. It's designed to run on either the client or server (a la Node.js), but the only way to run the client version of Dart code is to cross-compile it into JavaScript. However, even after this it will not run in all browsers. But since Dart is released under a free BSD-type license, any seller who agrees to Google's terms is free to use the language in their products. All Google has left to do is convince the entire industry.


Programming Language Explored #2: Ceylon

Gavin King denies that Ceylon, the language he develops at Red Hat, is expected to be a "Java killer." King is well known as the creator of the Hibernate object-relational mapping framework for Java. He likes Java, but thinks it still has a lot to improve.

Among the things King doesn't like about Java are the language's verbose syntax, lack of first-class and higher-order functions, and insufficient support for metaprogramming. He's particularly frustrated by the lack of declarative syntax for defining structured data, which King says "equates Java to XML." Ceylon aims to solve all these problems.

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

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


Programming Language Explored #3: Go

F# code is somewhat similar to OCaml code, but has its own interesting syntax. For example, to facilitate scientific calculations, numeric data types in F# can be units of measurement. F# also includes constructs to facilitate asynchronous I/O, CPU parallelization, and GPU output.

After a long period of gestation at Microsoft Research, F# now ships with Visual Studio 2010. Even better, but not typical for a corporation, Microsoft has created an F# compiler and root library available under the Apache open license. You can get started with it for free and even use it on Mac systems and Linux (using Mono runtime).


Programming Language Explored #5: Opa

Web programming is a very complex matter. Even the simplest web applications consist of endless strings written in multiple languages: HTML and JavaScript for the client, Java or PHP for the server, SQL for the database, etc.

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

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

Naturally, with this kind of integrated system, something magical must happen in the end. The Opa runtime integrates its own web server and database management system, which cannot be replaced by stand-alone alternatives. Be that as it may, this may not be such a big deal given the ability to develop modern data-driven web applications with just a few dozen lines of code. Opa is free and is currently available for 64-bit Linux and Mac OS X platforms, with other ports being developed.


Programming Language Explored #6: Fantom

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

There are plans to further increase Fantom's mobility. A compiler from Fantom to JavaScript is already available, and next targets could include an LLVM, Parrot VM, and Objective-C compiler project for iOS.

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


Programming Language Explored #7: Zimbu

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

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

Unfortunately, the Zimbu project is under development. The compiler and a few example programs can be created yourself, but not all actual Zimbu code will compile and run properly. Not all declared functions have yet been developed, and some of those already presented do not work correctly. The language specification may also change over time, adding keywords, types, and syntax as needed. Consequently, the documentation is also still incomplete. However, if you want to give it a try, preliminary utilities are already available under the Apache license.


Researched programming language #8: X10

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

Concurrency in X10 is possible thanks to the PGAS (Partitioned Global Address Space) programming model. Code and data are allocated into blocks and distributed across different "spaces", thereby making it easier to scale a program from a single-threaded prototype (one space) to a multi-threaded one running on one or more multi-core processor(multiple spaces) in a high performance cluster.

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

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


Researched programming language #9: haXe

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

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 basis Pascal language An approach is taken from the general problem 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 complete use technical capabilities computer, as well as 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 of modern programming, C++ places an emphasis on the development of new data types that best suit the concepts of the chosen field of knowledge and application tasks. 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, the companies involved in the development software, 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 computer scientists mainly as the creator of the Pascal language, published a description of a new programming language he called Modula. Unlike Pascal, which was intended to be 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 the requirements for programming languages ​​such as structure, modularity and ability to expansion. 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. Undisputed leaders among different versions BASIC was 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.

  • 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 JetBrains was looking for new language to develop their 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 was causing. And it is the solutions to these common problems encountered when writing software that determine 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



tell friends